¨ó¤O¦¡³]p¨t²Î¡A´N¬O¾ã¦Xª¾ÃÑ®w¡]¸gÅç©Êª¾ÃÑ¡^¤Î¼Æ¾Ç¹Bºâ¡]µ{§Ç©Êµ{¦¡¡^ªº¸ÑÃD¤èªk¡C¦b¥»³¹±N¸Ôz¨ó¤O¦¡³]p¨t²Î¬[ºcªº»Ý¨D¡A¥]¬A¤F¼Æ¾Ç¹Bºâ»P¸gÅ窾ÃѪº¤ÀÂ÷¡B³z©úªºª¾ÃѪí¥Üªk¡B¤@Pªº¹B§@¤è¦¡¡B¥¶¶ªº¸ê®Æ¬y¦V»P¾÷·|¦¡ªº±À²z¹Lµ{¡C¥»¬ã¨s¬O¥H¶ÂªO¬[ºc§@¬°¨t²Îªº¾ã¦X¤u¨ã¡A¦Ó¶ÂªOªº°ò¥»¬[ºc«h¥Ñ±À²z¾÷¨î¡B¶ÂªO»Pª¾ÃÑ®w©Ò²Õ¦¨ªº¡A¨ä¨t²Î¬O¥Hª«¥ó¾É¦Vªº§Î¦¡¨Óªí¥Ü¡A¥»³¹¥ç»¡©ú¤F¶ÂªO¬[ºcªº±±¨îª«¥ó¡B¸ÑÃDª«¥ó¡B¦æ¬°ª«¥ó»P¥~³¡µ{¦¡ª«¥óªºª¾ÃÑ»P¨Ï¥Î¤è¦¡¡A¨Ã¦b³Ì«áÁ|¥X¤À§O¬°¥HFORTRAN»PC»yªk©Ò¼g¦¨ªº¨âÓµ{¦¡¹ê¨Ò»¡©ú¥~³¡µ{¦¡ªº¹B§@¬yµ{¡C
¤@Ө嫬ªºµ²ºc³]p¨t²Î¤º§t¨â¤jÃþªºª¾ÃÑ¡G¹Bºâ©Êª¾ÃÑ»P¸gÅç©Êª¾ÃÑ¡C¹Bºâ©Êª¾ÃѬO¦³Ãö¼ÆÈpºâ¤ÀªR¤Î¦³¤¸¯Àªk¡F³o¬Oµ²ºc¤uµ{ªº¤@¯ë©Ê±M·~ª¾ÃÑ¡A³q±`¤SºÙ¬°²`¼hª¾ÃÑ¡]deep knowledge¡^¡C¥t¤@¤è±¡A¸gÅç©Êª¾ÃѬO«ü¯S®í°ÝÃD»â°ì¤º¥H¸gÅ笰¥DÅ骺ªí¼hª¾ÃÑ¡]surface knowledge¡^¡C¦Ó¨ó¤O¦¡³]p¼Ò¦¡«K¬On§Q¥Î¦¹¨âºØ¤£¦Pªºª¾ÃÑ¡CµM¦Ó¡A¦]¬°ª¾ÃѤÀÃþ¤Î¨t²ÎºûÅ@ªºì¦]¡A¦bµ{¦¡¤¤§¹¥þ«O«ù¨âªÌ¬[ºcªº¤ÀÂ÷¬O«Ü«nªº¡F¦Ó¬ã¨sªº¥Øªº¤£¥u¬O¥H±M®a¨t²ÎÁp¦X¼ÆºØ¯S§Oªº¤ÀªRµ{¦¡¡A¦Ó¬Oµo®i¤@Ó¯à°÷¾ã¦Xª¾ÃÑ®w¨t²Î¤Îµ{§Ç©Êµ{¦¡ªº¤@¯ë©Ê³]p¼Ò¦¡¡C©Ò¥H¡A²M·¡ªº¤ÀÂ÷¼Æ¾Ç¹Bºâ»P¸gÅç©Êª¾ÃѬO«Ø¿v¤@Ó¤@¯ë©Êµ²ºc³]p¤Î¤ÀªR¨ó¤O¦¡¨t²Îªººn¦Ò¶q¡C
¡@¡@¡@¬°¤F¹ê²{¼u©Ê¤Æ¤Î³z©ú¤Æªºª¾ÃѪí¥Ü¡A¦bµ²ºc³]p¤¤¨Ï¥Îªº¤£¦P§Î¦¡ª¾ÃÑ¡AÀ³¸Ó¯à°÷¸g¥Ñ¤ÀªR¡B²Õ´ªºµ{§Ç¥H©ú½Tªºª¾ÃѪí¥Üªk§Î¦¨Ó§O³æ¤¸¡C¦ý¬O²Õ¦¨¹Bºâµ{¦¡ªº·§©À¤Î¥¦Ì©¼¦¹¤§¶¡ªº¬Û¤¬Ãö«Y¬O¤°»ò©O¡HÁÙ¦³¥¦Ì¦p¦ó»P²Å¸¹±À²zªº¸gÅ窾ÃѲզX¦b¤@°_¡H¦b¦³Ãöª¾ÃѪí¥Üªº¤åÄm¤¤¡A¹ï¦¹Ãþ°ÝÃD¤w¦³©Ò´yz¡CÁ`¦Ó¨¥¤§¡A©ú½Tªº«Å§i©Êª¾ÃѪí¥Ü¬O¸Ñ¨M³o¨Ç°ÝÃDªºÃöÁä¡A¦Ó¥B¸Ô²Óªºªí¥Ü¤è¦¡¬O¥»½×¤åªº«n¬ã¨s¤º®e¡C
¡@³]pªº¹Lµ{¥Ñ¦UºØ¤£¦P§Î¦¡ªº³]p°Ê§@²Õ¦X¦Ó¦¨(¨£1.2¸`)¡F¥¦À³¯à¾A·í¦a¨Ï¥Î¥ô¦ó¸Ó¥Îªºª¾ÃÑ¡A¦ý¬O¡A¦UÓ³]p°Ê§@¦b¹B§@¤Îªí¥Ü¤WÀ³¸Ó¬O¤@Pªº¡C¦b¨t²Îªº±±¨îªí¼h¤W¥H¤@³eªº¤è¦¡³B²z¸gÅç©Ê»P¼Æ¾Ç¹Bºâ°Ê§@¡A¨Ã«O«ù±±¨î»P»â°ìª¾ÃѪº¿W¥ß¬O«D±`«nªº¡C
¦]¬°¤£¦Pªº³]p°Ê§@¤]³\¨Ï¥Î¤£¦Pªº³nÅéÀô¹Ò¡A¨Ò¦p³]p©Ð«Î«Ø¿vªºETABS¤Î³]p¹w¤O¾ô¼ÙªºSTDSµ¥°Ó¥Î³nÅé¡C¦b¤@¯ëªº³]p·í¤¤¡A¸ê®ÆÀ³¸Ó¬O«Ü¥¶¶¦a¦b¾ãÓ¨t²Î·í¤¤¬y³q¡C¨C¤@Ó³]p°Ê§@³£»Ýn±q¨t²Îªº¸ê®Æ¬[ºc¤¤¨ú±o¸ê°T¡A¦P®É¥»¨ªº³]pµ²ªG¥ç»ÝÀx¦s©ó¤@¯S©wªº¸ê®Æ§Î¦¡¤¤¡A¥H«K¨ä¥L³]p°Ê§@¤]¯à°÷¨Ï¥Î¡C¦]¦¹¡A¤@¯ë©Ê¸ê®Æ¬[ºcªº©w¸q»P²Õ´¬O¦³¨ä¥²nªº¡F¦Ó¥B«Ø¥ß¸ê®Æ¦b¤£¦PÀô¹Ò¤§¤Uªº¿é¥X»P¿é¤JºÞ¹D¤]¬O¥²»Ýªº¡C
¦b¹Ï1-1¤¤¡A¾ãÓ³]p¬yµ{¤¤ªº¨C¤@Ó¨BÆJ©Ò§Î¦¨ªº³]pªÅ¶¡¡A³q±`¤j¨ì¤£¾A©y§@·j´M¦¡ªº¸ÑÃD¡C¦]¦¹¡A¡u³]p¤À¸Ñ¡v¬O±`¥Îªº¤@ºØÁY´î³]pªÅ¶¡ªº¤èªk¡A¤]´N¬O¥i¥H§âì¨Óªº°ÝÃD¦P®É¥H¤@²Õ¸û¤pªº°ÝÃD¨Ó¨ú¥N¡C§Q¥Î¦¹³]p¤À¸Ñªº¹Lµ{¡A¦b¨ó¤O¦¡³]p¨t²Î¤¤¡A³]p¥i¥H³Q¤À¦¨¦n´XÓ¦¸¯Åªº°Æ¤u§@¡A¦Ó¥B±q¨Æ¦U§O¤u§@ªºª¾ÃѳQ³æ¿W¦s©ó¨t²Î·í¤¤¡C¦¹¨t²Î«K§Q¥Î³o¼Ëªº¤è¦¡µo®i¨C¤@ӰƤu§@ªº³]p¸Ñµª¡CµM¦Ó¡AÓ§O°Æ¤u§@ªº½ÆÂøµ{«×¤Î©¼¦¹¤§¶¡ªº¬Û¤¬¼vÅT¡A¤´µM¨Ï±o³]p¦¨¬°¤@Ó¤ÏÂЪº¹Lµ{¡C¥H¦¹¹Lµ{²£¥Íªº³]p¥²¶·n²Å¦X³W½dªº¨î¡A¦p¦³¤£¯àº¡¨¬¨î±ø¥óªºª¬ªp¡A«h¬ÛÃöªº³]p¥²¶·×§ï¡C³o¼Ëªº¹Lµ{¥i¯àn«ÂЦn´X¦¸¡A¤@ª½¨ì¥X²{¤F¥i¥H±µ¨üªº³]p¬°¤î¡C ¸gÅç©Ê©Î¼ÆÈ¹Bºâ©Êªº³]p¤è¦¡¾A¥Î©ó¤£¦PÃþ§Oªº³]p¡C¦b¨CÓÃþ§O¤º¡A³]p¤S¯à¶i¤@¨B¦a¤À¸Ñ¦¨°Æ¤u§@¡A¨CӰƤu§@¥i¾A¦X¨Ï¥Î¤£¦Pªº³]p¤èªk¡C¨ó¤O¦¡³]p¨t²ÎÀ³¸Ó¯à°÷¦b³oÓ¶¥¼h¨Ï¥Î¤WÅÜ´«¤£¦Pªº³]p¤è¦¡¡C¦b²z·Q¤W¡A¨CӰƤu§@n¯à°÷¹F¨ì¬J¥i¨Ï¥Î¸gÅç©Êªk«h¤S¥i¨Ï¥Î¼Æ¾Çµ{§Ç¹Bºâ¡C¥B¨t²În¦³¼u©Ê¡A®Ú¾Ú¥Ø«eªº³]pª¬ªp¤Î©Ò¦³ªº³Ì¨Îª¾ÃѬ°¨CÓ³]p°Æ¤u§@¡A¾÷°Ê¦a¬D¿ï¥X¤@ӳ̾A¦Xªº³]p°Ê§@¡C
¦b¶ÂªO¦¡¬[ºc¤U¡A¸Ñ¨M¤@Óµ²ºc³]p°ÝÃD©Ò»Ýªºª¾ÃѳQ¤À¸Ñ¡B²Õ´¦¨Ó§Oªº³æ¤¸¡A³o¨Çª¾Ãѳ椸ºÙ¤§¬°ª¾ÃÑ·½¡C¬ÛÃö¤§ª¾ÃÑ·½¤S¥i²Õ¦¨ª¾ÃѼҲաA¥Nªí¦PÃþªº»â°ìª¾ÃѩάۦP¥Ø¼Ðªº¸ÑÃD§Þ¥©¡C¾ãÓ±M®a¨t²Î§Y¥Ñ¼ÆÓª¾ÃѼҲեH¤À¨Éª¾ÃÑ®wªº¤è¦¡©Òºc¦¨¡C¬°¤F¥h·j´M°ÝÃDªº¸Ñµª¡A¨C¤@Óª¾ÃÑ·½³£¥u¯à×§ï§ó¥¿¤@ÓÁ`Å骺¸ê®Æµ²ºc¡]¤]´N¬O¶ÂªO¨t²Î¤¤¤§¶ÂªO¡^¡A¦P®É¥H³Ì¨Î¤§¦æ¬°¨Ó¦^À³¶ÂªO¤Wªºp¹º¡C ¨ó¤O¦¡¬[ºc¨t²Î¦³¨âÓ¥Dnªºª¾ÃѼҲաG¸gÅç±Òµo¦¡»P¼Æ¾Ç¹Bºâ¦¡(¨£¹Ï3-1©Ò¥Ü)¡C¸gÅç±Òµo¼Ò¦¡ªºª¾ÃѪí¥Ü¤è±¬O¦³Ãö°ÝÃD»â°ì¤Î°ÝÃD¸Ñ¨M¶¥¬q¡C¦Ó¼Æ¾Ç¹Bºâ¼Ò¦¡¬O¨Ï¥Îµ{§Ç©Êµ{¦¡ªº³]ppºâ¡B¤ÀªR¡B°õ¦æ¡B²Õ´µ¥µ¥¡C ¥»¬ã¨sªºµ²ºc¤ÀªR¬O¥HFORTRAN¤ÎC»y¨¥ªºµ{§Ç©Êµ{¦¡§@¨ÒÃD´ú¸Õ¡C¦Ó¸gÅ窾Ãѵ{¦¡½s¼g³¡¤À¬O¥H¤ý¤Hªª³Õ¤h©Òµo®iªº¾ã¦X«¬¶ÂªO¦¡±M®a¨t²Î¬°ÂÅ¥»[21¡A22]¡Aª¾ÃÑ»yªk¤¶±¥HKEE»PCommon Lisp²Å¸¹»y¨¥¤u¨ã©Ò½s¼g§¹¦¨¡C
¡@¡@¡@¡@¥»¸`¥H¤ñ³ëªº¤è¦¡¨Ó»¡©ú¶ÂªO¦¡¨t²Î¸ÑÃD¦æ¬°¤§¯S©Ê¡C¾ãӶªO¨t²Î¬[ºc»P¥»¬ã¨s¦³Ãö³¡¤À¨£¹Ï3-2©Ò¥Ü¡C¥H¤U´N¹ï©ó¶ÂªO¨t²Î§@¸Ô²Óªº¤¶²Ð¡C ¶ÂªO¨t²Îªº¬[ºc¤U¡A¸Ñ¨M¹B§@¼Ò¦¡¥i¥Î¤U±³oÓ²³æªº¤ñ³ë¨Ó¥[¥H»¡©ú¡C»P«Ø¿v¤@¶¡©Ð«Î¤@¼Ë¡A¾ãÓ¨t²Î¥i·í¦¨¬O¤@өЫΫسy¤p²Õ¡A·ín«Ø³y®É©Ó¥]°Ó«K©Û¶°¤ì¤u¡B¤ôªd¦K¡B¤ôºÞ¤u¤H¡B¹q®ð¤u¤Hµ¥¦UºØ¤u¤H¦b¤@°_¡C¥¦ªº²Õ¦¨¦³¤U¦C´XºØ[23]¡G 1. ª¾ÃÑ·½¡G´N¹³¤@¸s¦³±M·~»â°ìª¾ÃѪº¤H¤~¡A¦p¤ì¤u¡B¤ôªd¦K¡B¤ôºÞ¤u¤H¤Î¹q®ð¤u¤Hµ¥¡C¥LÌ©¼¦¹¨Ã¤£¤F¸Ñ¹ï¤èªº§Þ³N¤Îª¾ÃÑ¡A¦ý³£¬On¹F¨ì¦P¤@ӥتº¡A´N¬O§â©Ð¤l§¹¤u¡C 2. ±±¨î¾¹¡G´N¹³¬OÓ©Ó¥]°Ó¡A¥L¥²¶·n§i¶D¤ôºÞ¤u¤Hn¦b¹q®ð¤u¤H°t½u¤§«e´Nn§¹¦¨¦w¸ËºÞ¤lªº¤u§@¡C 3. ¶ÂªO¡G¥Ñ«Ø¿v©Ð«ÎªºÂŹϡB¸Ô²Ó¬I¤u¬yµ{¤Î¤u¦a©Ò²Õ¦¨¡A©Ò¦³ªº°ÝÃD¤Î¸Ñ¨Mªºµª®×³£¼g¦b¬I¤u¬yµ{p¹º¤W¡C¤@Ó¸ÑÃDµo®i¡]«Ø«Î¡^¡A¦³¥i¯àn§ó§ï¤u¦a¤Wªº¬I¤u¬yµ{p¹º¡CÁ|Ó¨Ò¤l¡A¤ôºÞ¤u¤H¥i¯àµo²{¤»¦Tªº¤ôºÞ©ñ¤£¶iÂŹϩҳ]pªº¤T¦T¤Õ¤º¡A³o®ÉÔ¤ôºÞ¤u¤H«K¥i¥H¨Ì¾Ú¥L̪ºª¾Ãѧiª¾«Ø¿v®v×§ïÂŹϡC
·í¤ôªd¦K§¹¦¨©Ð¤lªº°ò¦¡B¤ì¤u§¹¦¨©Ð«Îªº¬[ºc¡A³£¬O§¹¦¨¤u§@ªº¤@Óª¬ºA¡C¨ä¥Lªº±M®a¡]¤ôºÞ¤u¤H¡B¹q®ð®v³Å¡^nÀH®Éª`·N¤u¦a¤W¡]¶ÂªO¡^ªºª¬ºA¡A·í½ü¨ì¸Ó¥L̤u§@ªº®ÉÔ¡A´N¨Ì±¡ªp¼W¥[¤ôºÞ©Î°t½uªº¤u§@¡C¨Ò¦p¤ôºÞ¤u¤H¡A¥L̨S¦³¿ìªkª½±µ»P¤ôªd¦K¡B¤ì¤u©Î¹q®ð¤u¤H¥æ½Í¡]¦]¬°©¼¦¹ªº±M·~§Þ³N¤£¦P¡^¡F¥LÌ¥²»ÝÀH®Éª`·N¶ÂªO¡]À˵ø¤u¦a¤Wªºª¬ªp¡A¨Ã¨Ì¬I¤u¬yµ{p¹ºªº¨BÆJ¬I¤u¡^µM«á¸Ñ¨M¥L̪º°ÝÃD¡A§¹¦¨©Ð¤l¸ÌÄÝ©ó¥L̪º³¡¥÷¡]¦w¸Ë¤ôºÞ¡^¡C·í¥L̪º¤u§@µ²§ô«á¡A¨º»ò¤ôºÞ¤u¤H«K§¹¤u¦ÓÂ÷¶}¤F¡C ¤]´N¬O»¡¨CÓ¤u¤H¤â¤¤¥i¯à¦³¤@өΤ@Ó¥H¤Wªº«Ø³y¥i¯à¡A¦ý¦b¾ãӫسy¹ÎÅ餤¨S¦³¥ô¦ó¤@Ó¤u¤H¥i³æ¿W§¹¦¨¾ãÓ¤uµ{¡A¤£¹L¨CÓ¤u¤H³£¦³«Ø¿v¾ãөЫάY³¡¥÷ªº¯à¤O¡A¦¹¥~¨CÓ¤u¤H³£«Ü²M·¡¦Û¤v¥i¥H°µ¤°»ò¤u§@¡A·í¥»¨¥i¸Ñ¨Mªº¤u§@¥X²{®É«K·|°µ¨Æ«e·Ç³Æ¡A§¹¦¨«Ý©Rªº¤u§@¡C ¦b¦P¤@®É¶¡¤¤¡A¥i¯à¦³¦n´XÓ¤u¤H¦P®Éµo²{¨Ãªí¥Ü¦Û¤v¥i¸Ñ¨M¥Ø«eªº¤u§@¡A¦¹®É©Ó¥]°Ó´N¨Ì¾ÚÂŹϤWªº«Ø³y¨BÆJ¤Î¤u¦a¤Wªºª¬ªp¡A¬D¿ï¥X¤@Ó¾A¦X¥Ø«e¤u§@ªº¤u¤H¡]°²¦p¦¹¤u¤H¦³¶W¹L¤@Ó¥H¤Wªº«Ø³y¥i¯àªº¸Ü¡A¥u¦³¤@ӫسy°Ê§@±N¤¤¿ï¡A¨Ò¦pªoº£¯»¨ê¤u¤H¥i¯à¦³¯»¨ê¼ÓªO»PÀð¾À¨âºØ°Ê§@¡^¡A¦Ó³Q¬D¤¤ªº¤u¤H«K¦bÂŹϡ]¶ÂªO¡^¤W´yz¥L©Ò¯à¸Ñ¨Mªº°ÝÃD¡A¨Ã¥B°õ¦æ¥Lªº¤u§@¡C©Ó¥]°Ó¨Ì¾Ú¥Ø«eªº«Ø³y±¡ªp¡A¾÷°Ê¦a±q¤£¦Pªº¤u¤H¤¤¿ï¾Ü¤@Ó¤u¤H¨Ó§¹¦¨¤@³¡¥÷ªº¤u§@¡C¦b¾ãӫسy¹Lµ{¤¤ªº¨CÓ¨BÆJ¡A¥ô¦ó¤@Ó¤u¤H¬Ò¦³¥i¯à³Q¬D¿ï¥X¨Ó¡C©Ò¥H¡A¾ãӫسy©Ð«Î¤p²Õªí²{¥X¦@¦P¦X§@»P¾÷·|¦¡ªº¤u§@·®æ¡C ¡C
±À²z¾÷¨î¥]¬A¤F±Æµ{¾¹¡]scheduler¡^»PºÊ±±¾¹¡]monitor¡^¡C©Ð«Î«Ø³y¤p²Õ¤¤ªº©Ó¥]°Ó´N¬O±Æµ{¾¹¡F¦Ó«Ø¿v®v´N¬O¶ÂªOªººÊ±±¾¹¡C©Ð«Î«Ø³y¤p²Õ¤¤¨C¤@Ó¤u¤H³QºÙ¬°ª¾ÃÑ·½¡]knowledge source¡^¡A²ºÙ¬°KS¡F¦Ó«Ø³y°Ê§@«h³QºÙ¬°ª¾ÃÑ·½±Ò¥Î°O¿ý¡]knowledge source activation record¡AKSAR¡^¡C¨CÓª¾ÃÑ·½¦b¶ÂªO¨t²Î¤¤³£ªí²{¤@ºØ¸Ñ¨M°ÝÃDªºª¾ÃÑ¡A¨CÓª¾ÃÑ·½¡]¤u¤H¡^ª¾¹D¦Û¤v¦b¤°»ò®ÉÔ¥i¤u§@¡A¦P®É·í¥¦³Q°õ¦æ®É¤]ª¾¹D¦Û¤vÀ³¸Ó±Ä¨ú¤°»ò¼Ëªº¤u§@¡C¦]¦¹¡A·í¦³¦h©ó¤@ºØªº«Ø³y±¡ªp¥X²{®É¡Aª¾ÃÑ·½´N¥i²£¥Í¦hÓKSAR¡A¨CÓKSAR¥Nªí¦P¤@ª¾ÃѨӷ½¤U¡A®Ú¾Ú¯S®í¶ÂªOª¬ªp©Ò²£¥Íªº¤£¦P³]p¿ï¾Ü¡C «Ø«Î¤¤ªº©Ó¥]°Ó¬O¨t²Î¤¤ªº±Æµ{¾¹¡A¥¦ÁaÆ[¾ãӫسy¤uµ{¡A¦b¨C¤@ӫسy¤u§@¤¤¡A¥Ñ©Ò¦³¥i¦æªº¤è®×¤¤¿ï¾Ü¤@Óª¾ÃÑ·½¬¡°Ê°O¿ý¨Ó§¹¦¨³o¶¥¬qªº¤u§@¡A¦Ó±Æµ{¾¹©Ò°µªº¨M©w¬O°ò©ó³Q±Ä¥ÎªºKSAR¬O§_»P²{¶¥¬qªº¤u§@µ¦²¤¬Û²Å¦X¡C¦b³oÓ¨t²Î¤¤¡A¨S¦³¹w¥ý³]©w°õ¦æªº¶¶§Ç¡C¤u§@µ¦²¤¬O¥Hpµe¡]plan¡G¦p§¹¦¨©Ð«Î«Ø³]¡^©M¥Ø¼Ð¡]goal¡G¦p§¹¦¨¦w¸m¤ôºÞ¡B¸Ë°t¹q½u¡B¤ôªd°ò¦¡B¯»¨êÀð¾Àµ¥µ¥¡^¨Óªí¥Ü¡A¤@ӥؼХNªí¤F¨t²Îµû¦ôKSARªº¤@ӫسy¦Ò¶q¡A¦Ó¤@Ópµe«h¬O¥Ñ¤@³s¦êªí¥Ü¤u§@µ¦²¤ªº«Ø³y¥Ø¼Ð©Òºc¦¨¡Apµe¤¤ªº¨C¤@ӥؼг£¥Nªí¤F¤@Ó¤u§@¥Øªº¡C¶ÂªO¤W¥i¦P®É¦s¦b¼ÆÓpµe¡A¥Nªí¤£¦P¦Ò¶q¤Uªº¤u§@¤è°w¡C¤@Ó¾ãÅ骺µû»ù¶·¥Ñ¨ä¹ï¶ÂªO¤W©Ò¦³pµeªººî¦Xµû¤À¨Ó¨M©w¡AKSARªºµû¤À¬O¥H¤@ӼƦr¨Óªí¥Ü¡A¨ä½d³ò¦b¹s¨ì¤@¦Ê¤§¶¡¡]¹s¥Nªí¤F¤£¾A¦X¦Ó¤@¦Ê¥Nªí§¹¥þ¦X¾A¡^¡C¦b¨C¤@Ó¸ÑÃD´`Àô¤¤¡A±Æµ{¾¹¿ï¾Üµû¤À³Ì°ªªº¨Ó°õ¦æ¡]¨Ï¥ÎªÌ¤]¥i¥H±À½¨t²Îªº«ØÄ³¡A¿ï¾Ü¤£¦PªºKSAR¡^¡C«Ø¿v®v§Y¬O¨t²Î¤¤ªº±À²zºÊ±±¾¹¡A¥¦¤£Â_ª`·N¶ÂªO¤Wpµe©M¥Ø¼Ðªºª¬ªp¡A¨ÃºûÅ@¤v§¹¦¨³]p¨Æ¹êªº¤@P©Ê¡C
¶ÂªO¬O¤@Ó¶°¤¤ªº¸ê®Æµ²ºc¡A¥¦t³dÀx¦s¦b³]p¹Lµ{¤¤©Ò²£¥Íªº¸ê°T¡A¬O¶ÂªO¨t²Î¤¤¦U³æ¤¸¶¡¸ê®Æ¥æ¬yªº´C¤¶¡C©Ò¦³ªº³]p¸ê°T³£¬O¥H¶ÂªO¨t²Î¤¤ªºª«¥ó¨ÓÀx¦s¡CÁ|¨Ò¨Ó»¡¡A©Ð«ÎÂŹϡB¼Ó¶¡p¹º¹Ï¡BºÞ½u°t¸m¹Ï¡B¤u§}p¹º¹Ïµ¥µ¥¡A³£¬O¥Nªí©Ð«Î«Ø³yªº·§©À¡C¦Ó¶ÂªO¨t²Î¤¤ªº¶ÂªOµ²ºc¥i¤À¦¨±±¨î¶ÂªO¡]control blackboard¡^»P³]p¸ê°T¶ÂªO¡]design information blackboard¡^¨âºØ¶ÂªO¡A¨£¹Ï3-2©Ò¥Ü¡C ¡± ±±¨î¶ÂªO¡G¶°¦Xpµe¡B¥H¤Î¥Ø¼Ð³o¨âºØÃþ«¬ªº±±¨îª«¥ó¡]control object¡^©Ò²Õ¦¨¡C¶ÂªO¤Wªº±±¨îª«¥ó¥Nªí¤F¨t²Îªº¸ÑÃDµ¦²¤»P³]p¦Ò¶q¡C ¡± ³]p¸ê°T¶ÂªO¡G¥]§t¤F¥Ñ¦UÓ³]pª¾ÃÑ·½¦b³]p¹Lµ{¤¤©Ò²£¥Íªº¸ÑÃDª«¥ó¡]solution object¡^¡B¦æ¬°ª«¥ó¡]action object¡^¤Î¥~³¡µ{¦¡ª«¥ó¡]foreign program object¡^µ¥¡C
ª¾ÃÑ®w¥i¤À¬°¨âÃþªºª¾ÃѼҲաF¤@Ãþ¬°¸gÅ窾ÃÑ¡A¥]¬A¡G³]p²£¥Í¾¹¡]design generator¡^¡B¨îÀËÂо¹¡]constraint checker¡^¡B¦^·¹µo°_¾¹¡]backtracking provoker¡^¡B»P«³]p×¥¿¾¹¡]redesign adviser¡^¡F¥t¤@Ãþ¬°¼ÆÈ¹Bºâµ{¦¡¤¶±¡]¥~³¡µ{¦¡ª«¥ó¡^¡A¥]¬A¡G¥~³¡µ{¦¡°õ¦æ¾¹¡]foreign program executor¡^¡B¿é¤JÀɫغc¾¹¡]input file constructor¡^¡B¿é¥XÀÉ¸ê®ÆÅª¨ú¾¹¡]output file reader¡^¡C¼ÆÈ¹Bºâµ{¦¡¤¶±ªºª¾ÃÑ®w¸Ôz¦b¤UÓ³¹¸`¡F¥H¤U¬°¸gÅ窾ÃѤ豪ºª¾ÃÑ®w°Q½×¡C 1. ³]p²£¥Í¾¹¡G ³]p²£¥Í¾¹ªº¥\¯à¡]function¡^¦b©ó§Q¥Î³]pª¾ÃѨӲ£¥Í³]pÈ¡C¦b¦¹¼Ò²Õªºª¾ÃÑ·½¦³¯à¤O¨Ó¹ï¬Û¦Pªº³]pÅܼƨϥΤ£¦Pªº»â°ìª¾ÃÑ¡]¥]¬A³]p¤ÀªR¡B³]ppºâ¡B³]pªº¸gÅç©Êªk«h¡Kµ¥¡^¡A¨Ó²£¥Í¤£¦Pªº³]pÈ¡C 2. ¨îÀˮ־¹¡G ¨îÀˮ־¹ª¾ÃѼҲլO¥Î¨Ó½T»{¨î±ø¥óªºª¬ºA¡C·íµo²{¨î±ø¥óµLªkº¡¨¬®É¡A¨t²Î«K·|¦b¶ÂªO¤Wµo¥X"ºû×¥¼º¡¨¬¨î±ø¥ó"¡]fix constraint violation¡^ªº¥Ø¼Ð¡A¥Î¨Ó´£¿ô¶ÂªO¨t²Î¥h°µ³]p×¥¿¡C 3. ¦^·¹°_µo¾¹¡G ¦^·¹°_µo¾¹³oÓª¾ÃѼҲզb³]p¥¢±Ñ«á¡A¶}©l¦A³]pµ{§Ç¡C¥¦±±¨î¤F¶ÂªO¨t²Î¦^·¹ªº¶¥¼h¡C¬Y¨Ç¥Ø«e¦s¦b¶ÂªO¤Wªº³]pÈ´N·|³Q¨ú®ø¡A·í¶ÂªO¤¤¦³¥¼º¡¨¬¡]unsatisfied¡^ªº¨î±ø¥ó¥X²{®É¡A¦¹ª¾ÃÑ·½«K·|³Q»¤µo¡C ·í¦¹ª¾ÃÑ·½³Q»¤µo«á¡A¨t²Î«K·|¨Ì´`¥¼º¡¨¬ªº¨î±ø¥ó¡A§ô¨î¦¨©Ò¦³¥i¯à¼vÅT¦¹¨î±ø¥óªº¨CÓ³]pÈ¡C¦p¦¹¡A¨Ï¥ÎªÌ¦b«·s³]p®É¡A«K¥i¿ï¾Ü¯S©w³]pª«¥ó¤¤¯S©wªºÈ¡A¥H¥Î¨Ó±±¨î¦^·¹ªº¶¥¼h¡C·í¦¹¦^·¹°_µo¾¹³Q°õ¦æ®É·|¯B²{¤@Óªí®æ¡AÅý¨Ï¥ÎªÌ¦bªí®æ¤¤¿ï¾Ü¤@Ó»P¥Ø«e¥¼º¡¨¬¨î¦³Ãöªºªº³]pÈ¡C¦p¦¹¤@¨Ó¡AKEE¤¤ªººû¥¿¨t²Î«K·|¦]³oÓ³]pȬO¥¼³]p§¹¥þªº¡]¦¹®É³]pȤw³Q²¾¨«¤§¬G¡^¦Ó¦^·¹«·s³]p¦¹³]pÈ¡A¥Hºû«ù³]p¬Û¤¬Ãö«Yªº¥¿½T©Ê¡C¦¹®É¶ÂªO¨t²Î¤¤ªººû¥¿¨t²Î¡]truth maintenance system¡A²ºÙTMS¡^´N·|«·s³]©w¶ÂªOªºª¬ªp¡A¦Ó¥B©Ò¦³ªºª¾ÃÑ·½³£·|®Ú¾Ú·sªº¶ÂªOª¬ªp¦A¤@¦¸Ävª§¥H¸Ñ¨M°ÝÃD¡C 4. «³]p×¥¿¾¹¡G «³]p×¥¿¾¹³oÓª¾ÃѼҲժº¥\¯à¡A¥Dn¬O¥Î¦b«·s³]p®É¡A«ØÄ³·sªº³]pÈ¡A¥¦¦³§O©ó¦^·¹°_µo¾¹¡A«eªÌ¬O¥Î¨Ó«ØÄ³¤°»ò³]pÈ»Ýn×§ï¡A«áªÌ«h¬O«ØÄ³¦p¦ó×§ï³]pÈ¡C«³]p×¥¿¾¹¬O¦b¦^·¹°_µo¾¹±N³]pȱq¸Ñµª¶ÂªO¤¤²¾¨«®É¤~³Q»¤µo¡A¨Ã°µ¥X¤@¨Ç×¥¿³]pªº°Ê§@¡C ¦b¥t¤@¤è±¡A¥~³¡µ{¦¡¤¶±ªºª¾ÃѼҦ¡¬O°õ¦æ¨Ã¦s¨ú¥~³¡µ{§Ç©Êµ{¦¡ªº¸ê®Æ¤ÎÂà´«³]p¡]©Î¤ÀªR¡^ªºµ²ªG¨ì¥Ø«eªº³]p¤u§@¡C¨ä¶ÂªOªºª¾ÃÑ®w¥Ñ¥~³¡µ{¦¡°õ¦æ¾¹¡]foreign program executor¡^¡B¿é¤JÀɫغc¾¹¡]input file constructor¡^¡B¿é¥XÀÉ¸ê®ÆÅª¨ú¾¹¡]output file reader¡^¤TºØ²Õ¦¨¼ÆÈ¹Bºâµ{¦¡¤¶±¡C¦p¹Ï3-3©Ò¥Ü
1. ¿é¤JÀɫغc¾¹¡]input.file.constructor¡^¡G
¿é¤JÀɫغc¾¹¥Dn¥Î¦b¬°¥~³¡µ{¦¡ªº¿é¤JÀɧ@·Ç³Æ¡C¦b¶ÂªO¤Wªº³]pµ²ªG»P¦bª¾ÃÑ®w¸Ì±ªº¨Æ¹ê³£¦³¥i¯àn¥]§t¦b³oÓ¸ê®ÆÀɤº¡C¿é¤JÀɫغc¾¹®Ú¾Ú¥~³¡µ{¦¡ªº»Ýn¡A¨ú±o¶ÂªO¤W¤§³]pÈ¡A¥Hµ{¦¡n¨Dªº®æ¦¡«Ø¥ß¸ê®Æ¿é¤JÀɮסC¥Ø«e¤@¯ëªºµ{§Ç©Êµ{¦¡³£¦³¨ä¤@©wªº¿é¤JÀɮ榡¡A¦Ó¿é¤JÀɫغc¾¹«K¬O¥ÑÀx¦s¦b¥~³¡µ{¦¡ª«¥ó¤¤ªº¸ê°T¡A¨Ì¤@¯ë¤Æªº§Î¦¡¨Ó«Øºc¿é¤JÀÉ¡C2. ¥~³¡µ{¦¡°õ¦æ¾¹¡]foreign.program.executor¡^¡G
¦³¤F¥~³¡µ{¦¡ªº¿é¤JÀɤ§«á¡A¨äKS«K¯à¦b¶ÂªO¤W¥X²{¡]ªí¥Ü¨ä¥i¤u§@¡^¡A¥~³¡µ{¦¡°õ¦æ¾¹´N®Ú¾Ú¦bª¾ÃÑ®w¤¤Àx¦sªº¥~³¡µ{¦¡ª«¥ó¦Ó¥h°õ¦æ¥~³¡µ{¦¡¡C¦Ó°õ¦æªºµ²ªG«K¦s©ñ¦b¦U§Oªº¿é¥XÀÉ·í¤¤¡C¦p¹Ï3-3©Ò¥Üªºexecute.one.program¹ê¨Ò«K¥i¥H°õ¦æ¥i¤u§@ªº¥~³¡µ{¦¡¡C3. ¿é¥XÀÉ¸ê®ÆÅª¨ú¾¹¡]output.file.reader¡^¡G
¡@¡@¬°¤F»P¨ä¥Lª¾ÃѼҲզ@¦P¤À¨É°õ¦æ¥~³¡µ{¦¡«á©Ò±oªºµ²ªG¡A´N»Ýn§â¸ê®Æ©ñ¦b¶ÂªO¤W¡A¥Bn¹ïÀ³¨ì³]pª«¥óªºÄÝ©Ê·í¤¤¡C¿é¥XÀÉ¸ê®ÆÅª¨ú¾¹±q°õ¦æ¥~³¡µ{¦¡©Ò²£¥Íªº¸ê®ÆÀɤ¤¨ú¥X¦³¥Îªº¸ê°T¡A¨ÃÅܧó³]p¶ÂªO¤W¤§³]pÈ¡C¦p¹Ï3-3©Ò¥Üªºread.output.file.data¹ê¨Ò«K¬OŪ¨ú¥~³¡µ{¦¡©Òpºâ¥X¨ÓªºÈ¡C¨ó¤O¦¡³]p¨t²Î¬O¥Hª«¥ó¾É¦V¡]©Î®Ø¬[¦¡¡^ªº¤èªk¶i¦æ¡C¤£¦P»â°ìªºª¾Ãѫإߦb¤£¦Pªºª¾ÃÑ®w¤¤¡A¨Ã¥B¨ä¯S©Ê¥i¥H¦b©¼¦¹¤§¶¡¦@¥Î¡C¨Ò¦p¤@¯ë¬Ò¥i¨Ï¥Î¨ìªº¸ê®Æ«Ø¥ß¦b¡uddis-concept¡vª¾ÃÑ®w¤¤¡A¨ä¥Lªºª¾ÃÑ®w¬Ò¥iÄ~©Ó¨ä¯S©Ê¡F¦Ó¦³ÃöÄaÁu¾ôª¾ÃѪº³¡¥÷«h©ñ¦b¡uc-bridge¡vª¾ÃÑ®w¤¤¡C¸ê®ÆÃþ§Oªº§Î¦¡»P¹ê¨ÒªºÄ~©Ó¬O¨Ì¾Ú¦s©ñ¦b¤£¦P¶¥¼hªºª¾ÃÑ®w¤¤¥Hª«¥ó¾É¦V¨ú±o¡C¦¹ªí¥Üªk·|§â¨ã¦³¬Û¦P¯S©Êªºª«¥óÂk¦¨¤@Ãþ§O¡A©¼¦¹¶¡ÂÇ¥ÑÄ~©Óªº¯S©Ê¦Ó¾Ö¦³¦@¦Pªº¸ê®Æµ²ºc»P¤èªk¡A³Ì«á´N¬O¥Ñ³o¨ÇÃþ§O²Õ¦¨¾ãÓ¨t²Î¡A±N±M®aª¾Ãѧ¹¾ã¦aªí¹F¥X¨Ó¡C ¦b¨t²Î¤¤´X¥G©Ò¦³ªºª¾Ãѳ£¦s©ñ¦b³Ì§C¶¥¼hªºª«¥ó¸Ì¡]¨Ò¦pª«½èª«¥ó¡B³]p°Ê§@¡Bp¹º¡B¥Ø¼Ð¡B¨î¤Î¥~³¡µ{¦¡ª«¥óµ¥¡^¡C¹Ï3-4»¡©ú¤F¨ó¤O¦¡³]p°Ê§@ª«¥ó¥]§t¤F¦U§O°ò¥»ªºª¾ÃÑ¡A¨C¤@Óª«¥óªº§Î¦¡¹ï©ó³]pª«¥óªºÃþ§O©Îª¾ÃÑ¡A©w¸q¯S§OªºÈ¤Îµ{§Ç¡C©Ò¥Hª¾ÃÑ®w¬O¥Ñ¨Æ¥ý©w¸qªºª«¥ó§Î¦¡¡]¦p³]pª«¥ó¡BÅܼơB¨î¡B¤èªk¡Bp¹º¡B¸gÅç¤Î¼ÆÈ¹Bºâµ{¦¡¡^©Ò²Õ¦¨ªº¡C ¦b¥»½×¤å¡Aª¾ÃÑ®w³]p¨t²Îªº¼ÆºØ¤u§@´£¨Ñª¾ÃѪí¥Üªº°ò¥»¤è®×¡C¨t²Î¤¤¡A¦³¤@Ó©ú½Tªºªí¥Üªk¬J¥]§t¤F¸gÅç»P¼ÆÈ¹Bºâª¾ÃÑ¡A¦¹¸`¸Ô²Ó¦a´yz¤F¦³Ãö¼ÆÈ¹Bºâµ{¦¡¦b¦X§@³]pªº¸ê°T¡C ¨ä¤¤¡Aª¾ÃѪºªí¥Ü¤èªk¥]§t¤F¦³±±¨îª«¥ó¡B¸ÑÃDª«¥ó¡B¦æ¬°ª«¥ó»P¥~³¡µ{¦¡ª«¥ó¡A¦p¹Ï3-2©Ò¥Ü¡A¥H¤U«K¸Ô²Ó¦a¤¶²Ð¦Uª«¥óªº©Ê½è¡C
¡@¡@¶ÂªO¤¤ªº±±¨îª«¥ó¬O¥Î¨Ó©w¸q¶ÂªO¨t²Î¤¤±±¨î¸ÑÃDµ¦²¤»P¤èªkªºª¾ÃÑ¡C·í¬Y¤@Ó±±¨îª«¥ó³Q±±¨î¶ÂªO©Ò±Ä¥Î®É¡A¶ÂªO¨t²Î´N¥Î¥]§t¦b¦¹±±¨îª«¥óªº¸ê°T¨Ó¹ïKSAR¶i¦æµû¦ô»P±Æ§Ç¡C¥¦§â¯S§O»â°ìªºª¾ÃÑ·½¤À§O¥X¨Ó¡A¥Ñ¶ÂªOªºª¾ÃÑ®w¥H¾÷·|¦¡ªº¤è¦¡ªí²{¥X¸ÑÃDªºª¬ªp¡C¥Ñ«Ø¿v©Ð«Îªº¨Ò¤l¬°¡G©Ó¥]°Ón¥Ñ©Ò»Ýªºª¬ºA¿ï¾Ü¤@Ó¤u§@¡A´N¹³¦b¦P¤@өж¡¤º¤£¯à¦P®É¸Ë°t¹q½u¡A¦w¸m¤ôºÞ»P¾Q³]¥Û»IªO¡C±±¨îªº¤H´Nn§i¶D¤ôºÞ¤u¤Hn¦b°t¹q½u¤§«e§¹¦¨¡C¦Ó¦¹ª«¥ó´N¬O¥Hp¹º¤Î¥Ø¼Ð¨Ó±±¨î¶ÂªO¸ÑÃD§Î¦¡¡F¥H¤U¬O´N¥Ø¼Ð»Ppµe¨âºØ±±¨îª«¥ó§@²z¡G 1. ¥Ø¼Ð¡]Goals¡^¡G ¬O¥Î¨Óµû¦ôKSARÀu¥ý¦¸§Çªº³Ì°ò¥»ª«¥ó¡C¥¦¥i¥H¬O¤@Ópµe¤¤ªº¤@³¡¤À©Î¬O¤@Ó¿W¥ßªº¥Ø¼Ð¡F¦p§¹¦¨¦w¸m¤ôºÞ¡B¸Ë°t¹q½u¡B¤ôªd°ò¦¡B¯»¨êÀð¾Àµ¥µ¥¡A¨C¤@Ó³£¬O¤@ӥؼСC 2. p¹º¡]plans¡^¡G ¥Nªí¶ÂªO¨t²Îªº¸ÑÃDµ¦²¤¡Cpµe¤¤¸Ô²Ó³¯z¦³þ¨Ç»Ýn§¹¦¨ªº¥Ø¼Ð¡A³oÓ³]ppµe¤¤¨CӥؼЪº³]pȬүມ¨¬©Ò¦³ªº¨î±ø¥ó¡A¦¹p¹º«K§¹¦¨¡A¨Ãµ²§ô¤u§@¡C¨Ò¦pªoº£¯»¨êªºp¹º´N¥]§t¤F¯»¨êÀð¾À¡B¼ÓªO¤Î«Î³»µ¥¥Ø¼Ð¡C
¡@¡@¡@¸ÑÃDª«¥ó¬O¥Î¨Ó´x±±¦b³]p¹Lµ{¤¤©Ò²£¥Íªº³]p¸ê®Æ¡A¥¦Ì¥]§t¤F¥H¤U´XºØÃþ«¬¡G 1. ¹ê»Úª«¥ó¡]physical object¡^¡G ¥Î¨Óªí¥Ü¹ê»Ú³]p°ÝÃD¤¤ªºª«¥ó¡A¦bª¾ÃÑ®w¤¤³]pª«¥ó¡]design object¡^³oÓÃþ§O¡]class¡^ªº¹ê¨Ò¡]instance¡^¡A«Kªí¥Ü¨t²Î©Ò»Ý³]pªº¹ê»Úª«¥ó¡C 2. Åܼƪ«¥ó¡]variable object¡^¡G ¥Î¨Ó¥Nªí³]p¹Lµ{¤¤¤@¨Ç³]ppºâ©ÎÀËòò¨î±ø¥ó©Ò»ÝªºÅܼơC°£¤F¦b³]pª«¥ó»Pª¾ÃѤW¨Ï¥Î¤@¯ëªºª«¥ó¾É¦V¼Ò¦¡¥~¡A¶ÂªO¨t²Î§ó¨Ï¥Î¤Fª«¥ó¾É¦V³]p³W½d¼Ò¦¡[24]¡C©Ò¦³ªºÅÞ¿è±Ôz»PÅܼƦb³]p¼Ð·Ç¤U³£³Qªí¥Ü¦¨ª«¥ó¡]object¡^¡A¦Ó³o¨Çª«¥óºÙ¬°¸ê®Æ¶µ¡]data item¡^¡C¨C¤@Ó¤º§tªº¸ê®Æ¶µ³£¦³¦Û¤vªºÈ¡B¸ê®Æ«¬¦¡¡B¥H¤Î¥Î¨Ó¨M©w¥»¨Èªº¤èªk¡]method¡^¡C 3. ¨îª«¥ó¡]constraint object¡^¡G ¥]¬A¤F±j«×¨î±ø¥ó¡]strength constraint¡^¡A´X¦ó¨î±ø¥ó¡]geometric constraint¡^»P¨Ï¥ÎªÌ¦Û¿ï¨î±ø¥ó¡]user specified constraint¡^¡A¦¹¤TªÌ¥Nªí¤£¦PÃþ§Oªº³]pn¨D¡C±j«×¨î±ø¥ó¥Nªí¤Fµ²ºc³]p¤¤¡A³]p±j«×¤è±ªº¨î±ø¥ó¡F´X¦ó¨î±ø¥ó«h¥Nªí¤F³]p®É¡A´X¦ó§Îª¬¤è±ªº¨î±ø¥ó¡F¦Ó¨Ï¥ÎªÌ¦Û¿ï¨î±ø¥ó¬°¨Ï¥ÎªÌªþ¥[ªº¨î±ø¥ó¡C
¦b¶ÂªO¨t²Î¤¤¡A³]pª¾ÃѬO¥Hª¾ÃÑ·½ª«¥óÀx¦s©óª¾ÃÑ®w¤¤¡C¦Ó¹ê»Ú¦b³]p¸ê®Æ¶ÂªO¤¤©Ò°õ¦æªºª«¥ó¡A«h¬O¬°¨º¨Ç³Q»¤µoªºª¾ÃÑ·½©Ò²£¥Íªºª¾ÃÑ·½±Ò¥Î°O¿ý¡A¦p¹Ï3-2©Ò¥Ü¡C¥H¤U¬°ª¾ÃÑ·½¡]KS¡^»Pª¾ÃÑ·½±Ò¥Î°O¿ý¡]KSAR¡^¤§Â²z¡C 1. ª¾ÃÑ·½¡]KS¡^¡G ¦b¨CÓª¾ÃÑ·½¤¤³£¸Ôz¤F³]p¦æ°Êªº¨Ï¥Î®É¾÷¡B¥¦ªºI´ºÅܼƦp¦ó½T»{¡B»P¥¦À³±Ä¨ú¤°»ò¦æ°Ê¡L¡Lµ¥¸ê®Æ¡C¨C¤@Óª¾ÃÑ·½¦b¶ÂªO¨t²Î¤¤³£µø¬°¨ã¦³¬Û¦P¾÷·|ªºÄvª§ªÌ¡A¦b¨C¤@¦¸ªº³]p¶g´Á¤¤¡A³o´XÃþªºª¾ÃÑ·½³£·|©¼¦¹Ävª§¡A¦Ó¦P¤@Ãþ§O¤¤ªºª¾ÃÑ·½¤]·|µø¥»¨¬O§_¯à¸Ñ¨M¥Ø«e¶ÂªO¤W©Ò§i¥Üªº°ÝÃD¨Ó©¼¦¹Ävª§¡A³o¤]´N¬O¶ÂªO¦¡¨t²Î¾÷·|¦¡±À²zªº¥Ñ¨Ó¡C´N¹³«Ø³y©Ð¤l¥Ø«e»ÝnÄé»s°ò¦¡A¦¹®É´NÀ³¸Ó¥Ñ¤ôªd¤u¤H¥X¨Ó«Ø³y¡F¦ý¥L¥u¬O¥¼«Ø³y§@·Ç³Æ¦Ó¤w¡A¨Ã¥¼¯u¥¿«Ø³y¡C©Ò¥Hª¾ÃÑ·½¨Ã¤£¬O¸Ñ¨M°ÝÃDªº°Ê§@¡A¦Ó¬O¯à°÷¸Ñ¨M°ÝÃDªºª¬ºA¡C 2. ª¾ÃÑ·½±Ò¥Î°O¿ý¡]KSAR¡^¡G KSAR¬O¥Ñ³Q»¤µoªºª¾ÃÑ·½©Ò²£¥Íªº¡CKSAR¤~¬O¯u¥¿§ïÅܶªO°ÝÃDª¬ºAªº¦æ¬°ª«¥ó¡C¶ÂªO¨t²Î¤¹³\¤@Ó³Q»¤µoªºª¾ÃÑ·½¥i¥H¨Ì¥»¨I´ºÅܼƪº²Õ¼Æ¨Ó²£¥Í¬Û¦P²Õ¼ÆªºKSAR¡A³o¼Ë²¤Æ¤Fª¾ÃÑ·½ªº±Ôz¦¡¨Ã¥i¦b¦P¤@Óª¾ÃÑ·½¤¤´yz³\¦h¤£¦Pªº³]p¿ï¾Ü¡CKSAR¬O¥Ñ»¤µoªºª¾ÃÑ·½»P½T»{«áªºI´ºÅܼƲզX¦Ó¦¨ªº¡C¥Ñ¬Û¦Pª¾ÃÑ·½©Ò²£¥Íªº¼ÆÓKSAR¥i¥H¦]ÅܼƽT»{ªº¤£¦P¦Ó¦³¤£¦Pªº¦WºÙ¡CKSARªºÄݩʤj³¡¥÷³£¥Ñ¨ä¨Ó·½ª¾ÃÑ·½¤¤Ä~©Ó¦Ó¨Ó¡C
¥~³¡µ{¦¡ª«¥ó¬O¥Î¨Ó´x±±°õ¦æ¥~³¡µ{¦¡©Ò»Ýnªº¸ê®Æ¡A¥]¬A´ú¸Õ©Ò»Ýªº¿é¤JÀÉ¸ê®Æ¬O§_¦s¦b¡AµM«á°õ¦æ¡A²£¥Í¿é¥XÀÉ«á¦A±N©Ò»Ýªº¸Ñµª¨ú¦^¡C»P¼ÆÈ¹Bºâµ{¦¡¦³Ãöªºª¾ÃѦs¦b©óª¾ÃÑ®wªº¥~³¡µ{¦¡ª«¥ó¤¤¡C¨t²Î¤¤¹w¥ý©w¸qªºª«¥ó»P¥¦Ìªº¶¥¼hÃö«Y¦p¹Ï3-5©Ò¥Ü¡C¦b¦X§@³]p¨t²Î¤¤¡A¹ê¨Ò¥Ñ¶¥¼hª¾ÃѾ𪺥½ºÝ²£¥Í¡A¥¦Ì¬O¼ÆÈ¹Bºâ¬ÛÃö¸ê°Tªí¥Üªº°ò¦¡C©³¤U´N¬O³o¨Çª«¥óÃþ§Oªº¸Ô²Ó´yz¡G ¡± ¥~³¡µ{¦¡ª«¥ó¡]foreign.program.object¡^¡G¬O³Ì¤W¼hªº®ÚÃþ§O¡C¨ä¦³¤@ÓÄÝ©Êpath·|³Q¤U¼hªº¤lÃþ§O¨Ï¥Î¡A¥H¦r¦êÀx¦sÀɮשε{¦¡ªº¸ô®|¡C¤]¦³¤èªk¡]method¡^¥i³Q¤lÃþ§Oªºª«¥ó©Ò¨Ï¥Î¡C¦b³oÓª«¥ó¤¤¤]³]©w¤F¤@Ó¥i¥H§PÂ_path©Òµ¹ªºÀɮצbUNIXÀô¹Ò¤¤¬O§_¦s¦bªº¤èªk¡A´N¬Oprobe-file¡C ¡± Àɮס]file¡^¡G¬O¨t²Î¤¤Àx¦sÀɮ׿é¤J/¿é¥X¬ÛÃöª¾ÃѤ§«Ê¸Ë©Êª«¥óªº¤W³¡Ãþ§O¡Cpositions¬O©Ò¦³Àɮת«¥ó¥Î¨ÓÀx¦sÀɮפ¤»Ýn³B²z¸ê®Æ©Ò¦b¦æ»P¦C¦ì¸mªºÄݩʡC¦b³oÓª«¥ó¤¤¤]³]©w¤F¤@Ó«þ¨©Àɮתº¤èªk¡A´£¨Ñ©Ò¦³ÀÉ®×¹ê¨Òª«¥ó¨Ï¥Î¡A´N¬Ocopy-file¡C ¡± ¿é¤JÀÉ¡]input.file¡^¡G¬Ofileªº¤@Ó¤lÃþ§O¡Cinput.fileªº¤@Ó¹ê¨Ò¥Nªí¤@Ó¹ïÀ³ªº¥~³¡µ{¦¡ªº¿é¤J¸ê®ÆÀɮסA¦Ó¥B¨ä¥]§t¤F¦p¦ó²Õ¦¨¦¹Àɮתº¬ÛÃö¸ê°T¡Cinput.file¦³ÓÄݩʥs°µvalues-required¡A¥¦Àx¦sªº¬O¤@¹ï¹ïªºª«¥óÄݩʦê¦C¡C¦ê¦C¤¤¨C¤@Óª«¥óÄÝ©Êȳ£±N¸g¥Ñ¹Bºâµ{¦¡¤¶±ª¾ÃѼҲդ¤ªº¡u¿é¤JÀɫغc¾¹¡v¼g¤JÀɮ׸̱¡C¦ÓÀɮפºÄÝ©ÊȪº¦ì¸m¬O¨Ìpositions³oÓÄ~©ÓªºÄݩʥH¦¨¹ï¤§¦æ»P¦C¦ì¸mªº¦ê¦C¨Óªí¥Ü¡C¦Ópositions¤Îvalues-required³o¨âÓ¦ê¦Cªºªø«×n¬Û¦P¡A¦]¬°¥L̪º¤¸¯À¬O¤@¹ï¤@ªºÃö«Y¡]values-requiredªºÈn¦s¤Jpositions©Ò«üªº³oÓ¦ì¸m¡^¡C ¡± ¿é¥XÀÉ¡]output.file¡^¡G¬Ofileªº¤@Ó¤lÃþ§O¡Coutput.fileªº¤@Ó¹ê¨Ò¥Nªí¤@Ó¥~³¡µ{¦¡°õ¦æ«áªº¿é¥XÀɮסA¥B¨ä¥]§t¤F¦p¦ó±q¦¹Àɮרú±o¬ÛÃö¸ê°Tªºª¾ÃÑ¡Coutput.file¦³Ó±qfileÄ~©ÓªºÄݩʥs°µpositions¡A¦b³oÄݩʤºÀx¦s¤F¤@¹ï¹ï¦æ»P¦C®y¼Ðªº¦ê¦C¡C¨C¤@¹ï¦æ»P¦C¦ì¸m³£¥Nªí¤F¹Bºâµ{¦¡¤¶±ª¾ÃѼҲդ¤ªº¡u¿é¥XÀÉ¸ê®ÆÅª¨ú¾¹¡v¡A©Ò»ÝŪ¨úªº³]pȦbÀɮפ¤ªº¦æ»P¦C®y¼Ð¦ì¸m¡C«ü©w¨ú¦^ªºÈ¦s©ñ©óoutput.fileªºvalue-designationsÄݩʤ¤¥H¤@¹ï¹ïªºª«¥óÄݩʦê¦C¨Óªí¥Ü¡C¤]´N¬O³]pÈ¥ÑÀɮפ¤¨ú¦^¡A¦s¦b¶ÂªO¤W¤§³]pª«¥óªºÄݩʤº¡F»Pinput.file¬Û¦ü¡Apositions¤Îvalues-designations³o¨âÓ¦ê¦Cªºªø«×n¬Û¦P¡A¦]¬°¥L̪º¤¸¯À¬O¤@¹ï¤@ªºÃö«Y¡]value-designationsªºÈn±qpositions©Ò«üªº³oÓ¦ì¸m¨ú±o¡^¡C ¡± °Ñ¼Æ¡]parameter¡^¡G¬O¤@Óª«¥óÃþ§O¡AÀx¦sn°õ¦æ¥~³¡µ{¦¡©Ò»Ýnªº°Ñ¼Æ¸ê®Æ¡Cparameter¦³ÓÄݩʥs°µvalue-form¡A´yz¤F©Ò»Ý°Ñ¼Æªº¨Ó·½¡Cvalue-form¥i¥H¬°¨t²Î¤¤¥ô¦ó¸ê®Æ¶µ¡]data item¡^©Ò©w¸qªºª«¥ó¡A¥i¥H¬O¤@ÓÀɮת«¥ó¡B¤@Ó¨ç¼Æ¹Bºâ¦¡©Î¬O¤@Ó¯S©wªºÈ¡]¨Ò¦p¤@Ó©ú½Tªº¼ÆÈ¡A¤å¦r¦r¦êµ¥µ¥¡^¡C·í»Ýn°Ñ¼ÆªºÈ®É¡A¹w¥ý©w¸qªº¤èªk«K·|µû¦ôvalue-form¥H±o¨ì¦¹È¡C¦b³oÓª«¥ó¤¤¤]³]©w¤F¤@Ó´ú¸Õvalue-form¤º©Ò¶ñªº°Ñ¼Æ¬O§_¦s¦bªº¤èªk¡A´£¨Ñµ¹©Ò¦³¹ê¨Òª«¥ó¨Ï¥Î¡A´N¬Ovalue?¡C ¡± µ{¦¡¡]program¡^¡G¬O©Ò¦³¥~³¡µ{¦¡ª«¥óªºì«¬¡C·í¥»¨¤lÃþ§Oªº¹ê¨Ò¦bª¾ÃÑ®w¤¤³Qªí¥Ü¥X¨Ó®É¡A¨ó¤O¦¡¨t²Î«K»{¬°¥¦Ì¬O¯à°÷¥H¼ÆÈ¹Bºâµ{¦¡¤¶±¨Ó°µ¹Bºâªº³]pµ{¦¡¡Cpath³oÓÄ~©ÓÄݩʫü¥X¥~³¡µ{¦¡Àɮתº¸ô®|¦WºÙ¡Cprogramªºinput-filesÄÝ©ÊÀx¦s¤@Ó¡]©Î¦hÓ¡^input.fileªºª«¥ó¡A¥i¥HÁpµ²¨ìµ{¦¡ªº¿é¤JÀÉ¸ê®Æ«ü©wªº¸ô®|¡C¦P²z¡A¼g¦boutput-filesÄݩʪºoutput.fileª«¥ó¦WºÙ¬O¥Î¨Ó«ü©wµ{¦¡°õ¦æ«á¿é¥XÀɪº¸ô®|¦WºÙ»P¦p¦ó³B²zµ{¦¡¿é¥XȪº¬ÛÃö¸ê°T¡Cknown-design-values¤Îunknown-design-values³o¨âÓÄݩʬO«Å§i¤°»òÈÀ³¸Ó¦b¶ÂªO¤W¡A¦Ó¥B¤°»òȦb°õ¦æµ{¦¡¤§«e¤£À³¦b¶ÂªO¤W¡C³o¨âÓÄݩʪºÈ¬O¥H¤@¹ï¹ïª«¥óÄݩʩҧΦ¨ªº¦ê¦C²Õ¦¨¡C³q±`¡Aknown-design-valuesªºÈ¬O·Ç³Æ¿é¤JÀɩһݪº³]pÈ¡A¦Óunknown-design-valuesªºÈ¬O¥~³¡µ{¦¡©Ò¯àpºâªº³]pÈ¡C¥~³¡µ{¦¡°õ¦æ¾¹ª¾ÃѼҲմN¬O¨Ï¥Î³o¨âÓÄÝ©ÊÈ¥h²Õ¦¨³]p°Ê§@ªº¥ý¨M±ø¥ó¡C ¡± ½s͵{¦¡¡]compiled.program¡^¡G¬Oprogramªº¤@Ó¤lÃþ§O¡C¥¦±qprogramÄ~©Ó©Ò¦³ªºÄݩʻP¤èªk¡C¥»ª«¥ó¦³¤@ªþÄݤ§¤èªk¡]method¡^¹ê»Ú¦bUNIXÀô¹Ò¤U°e¥X°õ¦æ¥~³¡µ{¦¡ªº«ü¥O´£¨Ñµ¹©Ò¦³µ{¦¡¹ê¨Òª«¥ó¨Ï¥Î¡A´N¬Oexecute-program¡C ¡± ì©lµ{¦¡¡]source.program¡^¡G¬Oprogramªº¤@Ó¤lÃþ§O¡C¥¦»P¨ä¥LÃþ§Oµ{¦¡ªº°Ï¤À¦b©ó¥»¨¦³³B²zµ{¦¡½sĶªº¸ê°T»P¤èªk¡C ¡± µL°Ñ¼Æªºµ{¦¡¡]program.without.parameter¡^¡G¬Oprogramªº¤@Ó¤lÃþ§O¡C¥¦¥Nªí¤@Ó¤£»Ýµ¹¤©¥ô¦ó°Ñ¼Æ¦Ó¯à°÷°õ¦æªº¥~³¡µ{¦¡¡Aª`·N¡A¥»¨t²Î¤ä´©¦h«Ä~©Ó¡A¤@Óµ{¦¡ª«¥óªº¹ê¨Ò³q±`ÄÝ©ó¨âÓµ{¦¡ªºÃþ§O¡]¨Ò¦p¤@Óµ{¦¡¥i¦P®ÉÄÝ©ócompiled.program»Pprogram.without.parameter¨âÓÃþ§O¡^¡C ¡± °Ñ¼Æ©Êµ{¦¡¡]program.with.parameter¡^¡G¬Oprogramªº¤@Ó¤lÃþ§O¡C¥¦¥Nªí¤@Ó¥~³¡µ{¦¡»Ýn¦b«ü¥O«áª½±µ±µ¦³°Ñ¼Æ¤~¯à°õ¦æ¡C¥»ª«¥ó¦³¤@ÓargumentsªºÄݩʡA¥Hparameterª«¥ó§Î¦¡Àx¦s¥~³¡µ{¦¡ªº°Ñ¼Æ¡C¥¦¦³¤@Ó¤èªk¡]method¡^¯à¹ïarguments¤¤ªº¨C¤@Óparameterª«¥ó¶Ç°e°T®§¥H¨M©w©Ò¦³ªº°Ñ¼Æ¬O§_¦s¦b¤Î¯à§_pºâ¨äÈ¡C
§Q¥Î¥Ø«e¦b±±¨î¶ÂªO¤Wªºpµe»P¥Ø¼Ðª«¥ó¤¤ªº±±¨îª¾ÃѨӵû¦ôKSAR¡A±±¨îª¾ÃѦs©ó¥Ø¼Ð¤¤ªºµû¦ô¨ç¼Æ¡]FUNCTION¡^¡C©Ò¥H¨CÓ¦b°õ¦æÄ³µ{¤WªºKSAR³£·|¨Ì²{¶¥¬q¥Ø¼Ð¤¤µû¦ô¨ç¼Æ³oÓÄÝ©ÊÈ¡AÓ§Oµû¦ô¨ä¬Û¹ïµû¤À¡Cµû¤À¤½¦¡¦p¤U¡G ²Ä¤³¹¹Ï5-4¤¤¡ARUN.SECTION.TYPE.C.PROGRAMªºµû¤À¬°36.24¡A¨äpºâ¹Lµ{¦p¤U¡G ¥Ø«e±±¨î¶ÂªO¤Wªº±Ò¥Î¥Ø¼Ð¡]active goal¡^¦³¤U¦C¤Ó¡G ¡]1¡^ CANTILEVER.BRIDGE.DESIGN.PLAN¡]Åv«weight¡×5¡^ªº³]p¥Ø¼ÐCANTILEVER.BRIDGE.DESIGN¡]Åv«¡×5¡^¡C ¡]2¡^ CANTILEVER.BRIDGE.DESIGN.SUBPLAN.1¡]Åv«¡×5¡^ªº³]p¥Ø¼ÐDESIGN.SEGMENTS¡]Åv«¡×5¡^¡C ¡]3¡^ FOREIGN.PROGRAM.PLAN¡]Åv«¡×10¡^ªº³]p¥Ø¼ÐCALCULATE.SEGMENT.SECTION¡]Åv«¡×10¡^¡C ¡]4¡^ ¨t²Î¤º«Ø¥Ø¼ÐFAVOR.CONTROL.ACTIONS¡]Åv«¡×8¡^ ¨Cӥؼйïrun.section.type.c.programÓ§Oªºµû¤À¬°¡G ¡]1¡^ CANTILEVER.BRIDGE.DESIGNªºµû¤À¬°45¡C ¡]2¡^ DESIGN.SEGMENTSªºµû¤À¬°45¡C ¡]3¡^ CALCULATE.SEGMENT.SECTIONªºµû¤À¬°45¡C ¬G¨t²Î¹ïrun.section.type.c.programªºÁ`µû¤À¬°¡G
¡@3.5.1¡@¥~³¡µ{¦¡¤¶±ªºªí¥Ü
¨t²Î¤¤°õ¦æ³]p°Ê§@ªºª¾ÃѦs©ñ¦bª¾ÃÑ®w¸Ìªºª¾ÃÑ·½ª«¥ó·í¤¤¡C¦b³]p¸ê°T¶ÂªO¤Wªº³]p°Ê§@ª«¥ó¬O±Ò°Êª¾ÃÑ·½¦Ó²£¥ÍªºKSAR¡]ª¾ÃÑ·½±Òµo°O¿ý¡^¡C ¦b¥~³¡µ{¦¡¤¶±ª¾ÃѼҲդºªº³]p°Ê§@³£¬O¼Ð·Çªº¦æ¬°ª«¥ó¡C¨C¤@Óª«¥ó³£¥]§t¤F¦³Ãö¥»¨³]p¦æ¬°ªº¸ê°T¡A¨Ò¦p¡G³]p®É¾÷¡BÅܼƧô¨î¡B³]p¶i¦æ¥H¤Î³]p«n©Êµ¥¡CIJµo¤Î°õ¦æ¼ÆÈ¹Bºâµ{¦¡ªº¸ê°T¥i¥H¦b¥H«Å§i©Ê¤è¦¡Àx¦s©óª¾ÃÑ®w¤¤ªº¥~³¡µ{¦¡ª«¥ó¤º§ä¨ì¡C¥~³¡µ{¦¡¤¶±¥]§t¤F¯à°÷¨Ì³o¨Ç¥~³¡µ{¦¡ª«¥ó¦Ó½Õ¾ã¨ä³]p¦æ¬°ªº¤@¯ë©Êª¾ÃÑ·½¡C
¡@3.5.2¡@¥~³¡µ{¦¡¹B§@ª¾ÃÑ·½Â²¤¶
¡@¡@¨ó¤O¦¡³]p¨t²Î¤¤ªº¨CÓª¾ÃÑ·½¬Ò¥Nªí¤F»P¥~³¡µ{¦¡¥æ¬yªº¯S§Oª¾ÃÑ¡C¦]¦¹¡A¥»¬ã¨s¤§¥~³¡µ{¦¡¤¶±ª¾ÃѼҲդD¬O±N¥~³¡µ{¦¡¬ÛÃöªºª¾ÃÑ¡A§Q¥Î¨t²Îªºª¾ÃѪí¥Üªk¥[¥H¼¶¼g¦¨ª¾ÃÑ·½¡C¥H¤U´N²z¡u¥~³¡µ{¦¡¤¶±¡vforeign.program.interface©Ò¥]§tªº»â°ìª¾ÃÑ·½¡C ¥~³¡µ{¦¡¤¶±¡G ¥]¬A¦³¤TÓ¤lÃþ§O¡]¨£¹Ï3-3¡^¡A¤À§O¬°foreign.program.executor¡Binput.file.constructor¤Îoutput.file.reader¡C¨ä¤¤execute.one.program¬OÄÝ©óforeign.program.executor³oÓÃþ§O¤Uª¾ÃÑ·½¡F¦Óread.output.file.data¬OÄÝ©óoutput.file.reader³oÓÃþ§O¤Uª¾ÃÑ·½¡C¨ä¥Dnªº¥\¯à¤À§O¬°°õ¦æ¡B¿é¤J¤ÎŪ¨ú¥~³¡µ{¦¡¡A¥H¤U´N¦C¨âÓª¾ÃÑ·½ªº¤º®e¨Ó¤¶²Ð¤£¦Pª¾ÃÑ·½ªº¥Îªk¡C (a) execute.one.program¡G¥»ª¾ÃÑ·½¬OÄÝ©óforeign.program.executorªº¹ê¨Ò¡A¥Nªí¤F¬O§_¯à°÷°õ¦æ¥~³¡µ{¦¡¬ÛÃöªº±ø¥ó¤Îª¾ÃÑ¡C 1 »¤µo±ø¥ó¡]trigger¡Oconditions¡^¡G¬O¤@³s¦ê¥ÑLISP»y¨¥½s¼gªº±ø¥ó¦¡¡A¨ä¥\¯à¬O¥Î¨Ó§P§Oª¾ÃÑ·½ªº¾A¥Î©Ê¡C·í»¤µo±ø¥óªºÈ¬°¯u¡]true¡^®É¡A³oÓª¾ÃÑ·½´N·|³Q»¤µo¨Ã¶i¦æ¨Òµýªº°Ê§@¡Aª`·N¦b»¤µo±ø¥ó¤¤¤£±o¨Ï¥ÎI´ºÅܼơC¥»ª¾ÃÑ·½¤¤¡A±Ôz¤F·íprogram¦³¹ê¨Ò¡]instance¡A°õ¦æÀɮס^®É¡A«K¯à»¤µoexecute.one.program³oÓª¾ÃÑ·½¡C 2 I´ºÅܼơ]context¡Ovariable¡^¡G¥Î¨Ó±qª¾ÃÑ·½²£¥ÍKSARªº³æ¤@ÅܼƩΦh²ÕªºÅܼƹï¡C³o¨ÇÅܼƦbª¾·½»¤µo«á«K³Q«ü©w¦¨¯S©wªºÈ¡A¦b¥»¨ª¾ÃÑ·½¤¤ªºKSAR³£³Q´À´«¦¨¦¹I´ºÅܼơC³o¨ÇÅܼƳq±`³Q©w¸q¦¨ªþ¦³"$"²Å¸¹ªº¦WºÙ¡C¦b¨CÓª¾ÃÑ·½¤¤°£¤F»¤µo±ø¥ó¥H¥~ªºÄݩʳ£¥i¥H¨Ï¥ÎI´ºÅܼơC¦p¥»ª¾ÃÑ·½¤¤ªº±Ôz¬°¡G"¦bprogramÃþ§O¤¤ªº¹ê¨Ò¡]instance¡A°õ¦æÀɮס^³£³Q«ü©w¬°I´ºÅܼơA¨Ò¦p¥»¨Ò¦³section.type.c.program¡Bconstant.d.seg.property. program¡Blongitudinal.profile.program¡Bsection. type.fortran.program¡Bsegment.number.length. program¤Îvariable.d.seg.property.programµ¥¡]¸Ô¨£¹Ï3-6©Ò¥Ü¡^¡C 3 ¦WºÙ²£¥Í¾¹¡]name¡Ogenerator¡^¡G¥Î¨ÓÂàĶ¥Ñª¾ÃÑ·½©Ò²£¥ÍªºKSARªº¦WºÙ¡C·íª¾ÃÑ·½¥i²£¥Í¶W¹L¤@Ó¥H¤WªºKSAR®É¡A¦¹ÄݩʴNÅܱo¬Û·í«n¡C¦]¬°¨t²Î¦b¦WºÙ²£¥Í¾¹¨S¦³È®É·|¥Hª¾ÃÑ·½ªº¦WºÙ¨Ó¥N´À¡A¦Ó¦h²Õ¬Û¦P¦WºÙªºKSAR·|¦b¶ÂªO¤¤³y¦¨²V²c¡A¥HP³y¦¨¨t²Î¿ù»~¡C¨Ò¦p¥»ª¾ÃÑ·½ªº¦WºÙ²£¥Í¾¹¬°¡]run $program¡^¡A·íI´ºÅܼƳQ«ü©w¬°section.type.c.program«á¡A³oÓKSARªº¦WºÙ´N·|Åܦ¨¬°¡Grun.section.type.c.program¡C 4 ¥ý¨M±ø¥ó¡]precondition¡^¡G·íKSAR¥Ñª¾ÃÑ·½²£¥Í«á¡Aª¾ÃÑ·½¤¤ªº¦¹¶µÄݩʴN·|Åܦ¨³o¨ÇKSARªº¥ý¨M±ø¥ó¡A§Y½T»{¥ý¨M±ø¥ó³Qº¡¨¬ªºKSAR¤~¦³³Q°õ¦æªº¥i¯à¡C¦p¥»ª¾ÃÑ·½¤¤¡A·í¨CÓ¥~³¡°õ¦æª«¥óªºcan-be-executed-pÄݩʦ^À³true®É¡A¥ý¨M±ø¥ó¤~·|º¡¨¬¡A©Ò¥H¥un¬O¨CÓKSARªºcan-be-executed-pÄݩʦ^À³true®É¡AKSAR«K·|¥X²{¦b¶ÂªOªºª¾ÃÑ®w¤W 5 °õ¦æ°Ê§@¡]action¡Ocode¡^¡G¬O¤@ÓLISP»yªkªº±Ôz¡A¥NªíKSAR°õ¦æ¸Ñ¨M¶ÂªO°ÝÃDªº°Ê§@¡A¦¹°Ê§@¬O¦bKSAR³Q½T©w°õ¦æ«á¡A¤~·|µo¥Í§@¥Î¡C¥»ª¾ÃÑ·½¤¤¡A·|·Ç³ÆI´ºÅܼƩҫü©wµ{¦¡ªº¿é¤JÀÉ¡A¨Ã¥B°õ¦æ¨Ì¥»¨¹ê¨Ò¤¤pathÄݩʩҶñ¼gªº¥~³¡µ{¦¡¦WºÙ¡C 6 Àu¥ýÅv¡]priority¡^¡G¥Nªíª¾ÃÑ·½ªºÀu¥ýÅv¤j¤p¡C¦¹ÄݩʪºÈ¥i¬°±`¼Æ©Î¥ÑLISP»y¨¥©Ò¼gªºµ{¦¡¡]ª`·N¡Gµ{¦¡©Ò¶Ç¦^ªºÈ¥²¶·¬O¤@ӼƦr¡^¡CÀu¥ýÅvªº¤j¤p¥Nªí¤Fª¾ÃÑ·½¦b¤£¦Pª¬ªp¤Uªº«n©Ê¡A¦P®É¤]¬O¶ÂªO¨t²Î¥Î¨Óµû¦ôµû¤Àªºn¯À¤§¤@¡CÀu¥ýÅvªºÈ°ì½d³ò¬°±q0¨ì100¡A¼ÆÈ·U°ª¥Nªí«n©Ê·U¤j¡C¥»¨Ò¤¤¡AÀu¥ýÅv¬°±`¼Æ90¡C 7 ª¬ºA¡]status¡^¡G¦¹ÄݩʪºÈ¤£¬O¬°"¥i°Ê§@ªº"¡]operative¡^´N¬O¬°"¤£¥i°Ê§@ªº"¡]inoperative¡^¡C¦pªGª¾ÃÑ·½ªºª¬ºA¬O¤£¥i°Ê§@ªº¡A¨º»ò¦b¸ÑÃD¹Lµ{¤¤¡A¨t²Î«K¤£·|¦Ò¼{¨Ï¥Î¦¹ª¾ÃÑ·½¡C ¥H¤U¤¶²Ðoutput.file.readerªºª¾ÃÑ·½¡Gread.output.file.data¡AµÛ«©ó«nÄݩʻ¤µo±ø¥ó¡B¥ý¨M±ø¥ó¡BI´ºÅܼơB¦WºÙ²£¥Í¾¹»P°õ¦æ°Ê§@¡C (b) read.output.file.data¡G¥»ª¾ÃÑ·½¬OÄÝ©óoutput.file.readerªº¹ê¨Ò¡A¥Nªí¤F·í°õ¦æ¹L¥~³¡µ{¦¡«án¨ú¦^¿é¥XÀÉpºâȪº±ø¥ó¤Îª¾ÃÑ¡C 1 »¤µo±ø¥ó¡]trigger¡Oconditions¡^¡G¥»ª¾ÃÑ·½ªº»¤µo±ø¥ó¬°¡A·íoutput¡Ofile³oÓÃþ§O¤¤¦³¥ô¦ó¤@Ó¹ê¨Ò¡]instance¡A¿é¥XªºÀɮס^¦s¦b®É¡Aread.output.file.dataª¾ÃÑ·½«K³Q»¤µo¡C 2 I´ºÅܼơ]context¡Ovariable¡^¡G³oÓª¾ÃÑ·½ªºI´ºÅܼơ]$property¡^±Ôz¬°¡G"§âoutput.fileª«¥ó¤Uªº¨C¤@Ó¹ê¨Ò¡]instance¡A¿é¥XªºÀɮס^«ü©w¬°I´ºÅܼÆ"¡C 3 ¥ý¨M±ø¥ó¡]precondition¡^¡G¥»ª¾ÃÑ·½¤¤¡A·|´ú¸Õ¨ÌI´ºÅܼÆ$property©Ò«ü©wªºÈ¡]¿é¥XÀÉ¡^¬O§_¤w¦s¦b¡A¦pªG¦¹®É§ä¨ì¦¹¿é¥XÀÉ¡A³oÓKSARªº¥ý¨M±ø¥ó¤~·|º¡¨¬¡A¤]¤~¦³³Q°õ¦æ¤§¥i¯à¡C 4 ¦WºÙ²£¥Í¾¹¡]name¡Ogenerator¡^¡G¶ÂªO¨t²Î®Ú¾ÚI´ºÅܼƤ§¦WºÙ¥H¤Î¦WºÙ²£¥Í¾¹¤¤¤§±Ôz±N²£¥Íread $property dataªº³oÓKSAR¦b¶ÂªOªºª¾ÃÑ®w¤W¡C 5 °õ¦æ°Ê§@¡]action¡Ocode¡^¡G¤@ÓLISP»yªkªº±Ôz¡A¥NªíKSAR°õ¦æ¸Ñ¨M¶ÂªO°ÝÃDªº°Ê§@¡A¦¹°Ê§@¬O¦bKSAR³Q½T©w°õ¦æ«á¡A¤~·|µo¥Í§@¥Î¡C¥»ª¾ÃÑ·½¤¤¡A·|±qI´ºÅܼƩҫü©wªº¿é¥XÀɤ¤¨Ì¥»¨ª¾ÃÑ·½©Ò©w¸qªºput-value-&-values-designations³oÓ¤èªk¨úÈ¡A¨Ã©ñ¤J¯S©wªºÄݩʤº¡C 6 Àu¥ýÅv¡]priority¡^¡G¥Nªíª¾ÃÑ·½ªºÀu¥ýÅv¤j¤p¡C¦¹ÄݩʪºÈ¥i¬°±`¼Æ©Î¥ÑLISP»y¨¥©Ò¼gªºµ{¦¡¡]ª`·N¡Gµ{¦¡©Ò¶Ç¦^ªºÈ¥²¶·¬O¤@ӼƦr¡^¡CÀu¥ýÅvªº¤j¤p¥Nªí¤Fª¾ÃÑ·½¦b¤£¦Pª¬ªp¤Uªº«n©Ê¡A¦P®É¤]¬O¶ÂªO¨t²Î¥Î¨Óµû¦ôµû¤Àªºn¯À¤§¤@¡CÀu¥ýÅvªºÈ°ì½d³ò¬°±q0¨ì100¡A¼ÆÈ·U°ª¥Nªí«n©Ê·U¤j¡C¥»¨Ò¤¤¡AÀu¥ýÅv¬°±`¼Æ90¡C 7 ª¬ºA¡]status¡^¡G¦¹ÄݩʪºÈ¤£¬O¬°"¥i°Ê§@ªº"¡]operative¡^´N¬O¬°"¤£¥i°Ê§@ªº"¡]inoperative¡^¡C¦pªGª¾ÃÑ·½ªºª¬ºA¬O¤£¥i°Ê§@ªº¡A¨º»ò¦b¸ÑÃD¹Lµ{¤¤¡A¨t²Î«K¤£·|¦Ò¼{¨Ï¥Î¦¹ª¾ÃÑ·½¡C
¡@3.5.3¡@¥~³¡µ{¦¡ª«¥ó¹ê¨Ò
¦b¦¹Á|¥X¨âÓ¥~³¡µ{¦¡ª«¥ó¹ê¨Ò¡A¨ä¤¤¤@¨Ò¬°°õ¦æ®Éµ{¦¡¤£»Ýn°Ñ¼Æ¡Gsegment.number.length.program¡]¤]´N¬Oª½±µ¥Ñµ{¦¡©I¥s¿é¤JÀÉ¡^¡F¥t¤@¨Ò¬°°õ¦æ®Éª½±µµ¹¤©µ{¦¡©Ò»Ý¤§È¡A¦Ó¤£©I¥s¿é¤JÀÉ¡Gsection.type.c.program¡A¸Ô¨£¹Ï3-6©Ò¥Ü¡C¨ä¤¤²Ä¤@Ó¨Ò¤l¬O¥HFORTRAN»y¨¥¼g¦¨ªº¡F¦Ó²Ä¤GÓ¨Ò¤l¬O¥HC»y¨¥©Ò¼g¦¨ªº¡C Á|¨Ò¤@ ¡± segment.number.length.program¡]¸`¶ô¼Æ¥Ø¤Îªø«×ªº¥~³¡µ{¦¡ª«¥ó¡^¡G¦¹ª«¥ó¥]¬A¤U¦CªºÄÝ©Ê ¡]1¡^ PATH ¡]path and name¡^ Values¡G "~/fortran/seg-profile.exe" ¡]2¡^ INPUT-FILES¡]input file slot name¡^ Values¡G segment.number.length.in ¡]3¡^ OUTPUT-FILES¡]output file slot name¡^ Values¡G segment.number.length.out ¡]4¡^ KNOWN-DESIGN-VALUES¡]values we have known¡^ Values¡G ¡]CANTILEVER.BRIDGE top-slab-thickness¡^ ¡]5¡^ UNKNOWN-DESIGN-VALUES¡]values we required¡^ Values¡G ¡]CANTILEVER.BRIDGE segment-number¡^ ¡]6¡^ VALUE-EXIST-P¡]test the value exist or not¡^ ValueClass¡G method Value¡G ·íknown-design-valuesªºÈ(³»ªO«p)¦s¦b¡A¦Óunknown-design-valuesªºÈ(¸`¶ô¼Æ¥Ø)¤£¦s¦b®É¡A¦¹¤èªk«K¦^À³true¡F§_«h«h¦^À³nil¡C¦¹Äݩʴ£¨Ñ¤Fª¾ÃÑ·½execute.one.programªº¥ý¨M±ø¥ó(precondition)§PÂ_¬O§_»¤µoKSAR¡C ¡]7¡^ PREPARE-INPUT¡]write values to input files¡^ ValueClass¡G method Values¡G ·ívalue-exist-p¦^À³true®É¡A¦¹¤èªk«K±Nµ{¦¡©Ò¶·ªº¿é¤JÀɨ̪«¥ó¥»¨¤w©w¸qªºvalues-requiredÄݩʤ§È¦s¤Jpositions©Ò«üªº¦ì¸m¤W¡C ¦Ó¦¹µ{¦¡ª«¥ó¤S»ÝÁpµ²¨ìÀɮת«¥ó¡]FILE object¡^¡A¨ä¤¤¥]¬A¤F¿é¤JÀɪ«¥ó¡]segment.number.length.in¡^¤Î¿é¥XÀɪ«¥ó¡]segment.number.length.out¡^¨âÓª«¥ó¡A¦p¹Ï3-6©Ò¥Ü¡G ¡± segment.number.length.in¡]¸`¶ô¼Æ¥Ø¤Îªø«×ªº¿é¤JÀɪ«¥ó¡^¡G ¡]1¡^ PATH¡]path and name¡^ Values¡G "~/fortran/seg-profile.in" ¡]2¡^ POSITIONS¡]value's position in input file¡^ Values¡G (1 1) ¡]3¡^ values-required¡]the require value of input file¡^ Values¡G (CANTILEVER.BRIDGE span-length¡^ ¡]4¡^ WRITE-INPUT-OUT¡]write values to input files¡^ ValueClass¡G method Values¡G ¨ú¥Xvalues-required©Ò«ü©wªºÈ¶ñ¤Jpositions©Ò«ü©wªº¦ì¸m¡C ¡± segment.number.length.out¡]¸`¶ô¼Æ¥Ø¤Îªø«×ªº¿é¥XÀɪ«¥ó¡^¡G ¡]1¡^ PATH¡]path and name¡^ Values¡G "~/fortran/seg-profile.out" ¡]2¡^ POSITIONS¡]value's position in output file¡^ Values¡G (1 1) (1 5) ¡]3¡^ VALUES-DESIGNATIONS¡]the designation slot values write to¡^ Values¡G ¡]CANTILEVER.BRIDGE segment-number¡^¡B¡]CANTILEVER.BRIDGE segment-length¡^¡C ¡]4¡^ PUT-TO-POSITION-&-VALUE-DESIGNATION¡]get the output file values and assert to designation slot¡^ ValueClass¡G method Values¡G ¦Û¥~³¡¿é¥XÀɨú¥Xpositions©Ò«ü©w¦ì¸m¤§È¡A¨Ã¶ñ¤Jvalues-required©Ò¹ïÀ³Äݩʪº¼Ñ(slot)¤¤¡C Á|¨Ò¤G ¡± section.type.c.program¡G¡]¾îÂ_±©Ê½èªº¥~³¡µ{¦¡ª«¥ó¡^¡G¦¹ª«¥ó¥]¬A¤U¦Cªº¼Ñ¡]slots¡^¡G ¡]1¡^ PATH Values¡G "~/c/sectionc.exe" ¡]2¡^ ARGUMENTS¡]require arguments for program¡^ Values¡G values ¡]3¡^ CAN-BE-EXECUTED-P¡]test KSAR can be executed¡^ Values¡G ¦¹¨Ò·ívalue-exist-p¦^À³true¡A¦Ó¥B¥~³¡µ{¦¡ªº¿é¥XÀɤ£¦s¦b¡A¨Ã¥Bvalue?¦^À³true¤TÓ±ø¥ó¬Òº¡¨¬«á¡A«K¦^À³true¡A©Ò¥Hª¾ÃÑ·½execute.one.program«K»¤µo¦¹KSAR¡A¨Ã¥X²{¦b¶ÂªO¤W¡C ¡]4¡^ INPUT-FILES Values¡G nil ¡]5¡^ OUTPUT-FILES Values¡Gsection.type.c.out ¡]6¡^ KNOWN-DESIGN-VALUES Values¡G ¡]CANTILEVER.BRIDGE bridge-width¡^¡B¡]CANTILEVER.BRIDGE construction-method¡^¡B¡]CANTILEVER.BRIDGE longitudinal-profile¡^ ¡]7¡^ UNKNOWN-DESIGN-VALUES Values¡G ¡]CANTILEVER.BRIDGE bridge-section¡^ ¦]¬°¦¹µ{¦¡ª«¥ó¤§¸ê®Æª½±µ¥Ñ°Ñ¼Æ´£¨Ñ¡A©Ò¥H¨S¦³¿é¤JÀɪ«¥ó¡A¦Ó¥u¦³°Ñ¼Æª«¥ó¡]parameters¡^»P¿é¥XÀɪ«¥ó¡]section.type.c.out¡^¡C¨£¹Ï3-6©Ò¥Ü¡G ¡± values¡]¾ô¼Ù¼eª«¥ó¡^¡G ¡]1¡^ VALUE-FORM Values¡G bw¡]¾ô¼e¡A¨t²Î©w¸qªº¬M®g¸ê®Æ¶µ¡^ ¡]2¡^ VALUE? ¡]test the value-form slot has values¡^ ValueClass¡G method Values¡G ¬O¤@Ópºâ°Ñ¼ÆÈªº¤èªk¡]method¡^¡A·í«e¤@ÂIvalue-formªºÈbwpºâ¥X¦³È®É¡A¦¹¤èªk«K¦^À³¡]true¡^¡A§_«h«K¦^À³¡]nil¡^¡C ¡± section.type.c.out¡]¾îÂ_±©Ê½èªº¿é¥XÀɪ«¥ó¡^¡G ¡]1¡^ PATH Values¡G"~/c/section.out" ¡]2¡^ POSITIONS Values¡G (1 1) (2 1) (5 1) (7 1) (9 1) (11 1) ¡]3¡^ VALUES-REQUIRED Values¡G (CANTILEVER.BRIDGE bridge-section¡^¡B(CANTILEVER.BRDIGE section-width)¡B(CANTILEVER.BRDIGE bottom-slab-width)¡B(CANTILEVER.BRDIGE web-thickness)¡B(CANTILEVER.BRDIGE web-spacing) ¡]4¡^ PUT-TO-POSITION-&-VALUES-DESIGNATION Values¡G ¦¹¤èªk±Nvalues-designationªºÈ±q¥~³¡µ{¦¡ªº¿é¥XÀÉ¥Hpositions³oÓÄݩʩҫüªº¦ì¸m¨ú¦^¡C
¡@3.5.4¡@³]p°Ê§@¡]KSAR¡^¹B§@¹ê¨Ò
¡@¡@¦b¦¹Á|¥X«ezªºsection.type.c.program³oÓpºâ¾îÂ_±©Ê½èµ{¦¡ªºKSAR§@¤¶²Ð¡A±Ôz¦¹KSAR¬O¦p¦ó¹B§@¡G 1. ·í¾ô¼Ù¼e«×¡B¾ô¼Ù«Øºc¤èªk¡BÁaÂ_±§Î¦¡¡]known-design-values³oÓÄݩʩҶñªºÈ¡^¬°¤wª¾¡A¦Ó¾ô¼Ù¾îÂ_±©Ê½è¡]unknown-design-values©Ò¶ñªºÈ¡^¬°¥¼ª¾®É¡A«h¦¹section.type.c.program¤ºªº¤èªk¡]method¡^¡Gcan-be-executed-p«h¦^À³true¡A§_«h¦^À³nil¡C 2. ·ísection.type.c.program¤ºªº¤èªk¡]can-be-executed-p¡^¦^À³true®É¡A«hexecute.one.program³oÓª¾ÃÑ·½¡]¨£¹Ï3-3©Ò¥Ü¡^±N³Q±Ò°Ê¡A¦bprogram¤U©Ò¦³ª«¥ó¤Z¬O²Å¦X¥ý¨M±ø¥ó(precondition)¡A³£·|³Q»¤µo¦¨¬°KSAR¡A¨Ã±N¥X²{¦b¶ÂªO¤W¡A§Y¬°run.section.type.c.program¡C«h¦¹®Éexecute.one.program©Ò©w¸qªºexecute-parameter-program¤èªk±N·|³QIJ°Ê¡C¦]¦¹¨Ò¤£¶·¿é¤JÀÉ¡A¬Gwrite-input-file-out³oÓ¤èªk¨Ã¤£³QIJ°Ê¡C¨Ã°õ¦æpathÄݩʤº©Ò«ü©wªº¸ô®|¤¤ªºÀɮסG"~/c/sectionc"¡C 3. ¦Ó·í¥~³¡µ{¦¡ªº¿é¥XÀɲ£¥Í«á¡]¾ô¼Ù¼e«×¡B¸`¶ô¼e«×¡B©³ªO¼e«×¡B¸¡ªO¼e«×¤Î¸¡ªO¶¡¶Z¤wª¾¡A¦ý¥¼Åª¤Jª¾ÃÑ®wª«¥óªºÄÝ©ÊùØ¡^¡A«hrun.section.type.c.programª«¥ó«K±q¶ÂªO¤W¥h°£¡F¦¹®Écreate.segment.output.file.objª«¥ó«K¦boutput.filesªº¤lÃþ§Oegment.property.outª«¥ó¤U¨Ì©Ò±oªº¸`¶ô¼Æ«Ø¥X15²Õ¸`¶ô©Ê½èªº¹ê¨Ò¡A¦¹®É«K¬O»¤µo¤F15²ÕªºKSAR¡C¨CÓKSAR³Q¿ï¾Ü°õ¦æ®É«h¨äput-to-position-&-value-designation.designations³oÓ¤èªk³£³Q°õ¦æ¡A¨Ã±N¿é¥XÀɪºÈ¨ú¦^¨Ì¨CÓKSARªºÄݩʪºpositions©Ò«ü©wªº¦ì¸m¦s©ñ¦Ü¦U§Ovalues-designations©Ò«ü©wªº¼Ñ¡]slot¡^¤º¡C 4. ·ísection.type.c.program¤ºªºvalue-designations(slot¡^©Ò«ü©wªºÈ¬Ò¶ñ¤J«á¡Aread.output.file.data¤ºªº¥ý¨M±ø¥ó«K¤£º¡¨¬¡A©Ò¥Hread.section.type.c.out.data«K±q¶ÂªO¤W¸õ¨«¡A¶i¦Ó°õ¦æ¤U¤@Ó³]p°Ê§@¡C
¡@