å®è£
ã倢èŠãŠãããããžã§ã¯ãã®1ã€ã¯ãã¡ã¢ãªãåããã¢ãžã¥ãŒã«åŒã¿ã¹ã¯ãããã§ããã ãã®ãããžã§ã¯ãã®æçµçãªç®æšã¯ãç¬ç«ããŠéå£ãšããŠè¡ââåã§ããçç©ãããäžçãäœãããšã§ããã
以åã¯ã¯ãŒã«ããžã§ãã¬ãŒã¿ãŒãããã°ã©ã ããŠããã®ã§ãAIã䜿çšããŠåäœãšçžäºäœçšã倿ããåçŽãªããããäžçã«æå
¥ãããã£ãã®ã§ãã ãããã£ãŠãäžçã«å¯Ÿãã俳åªã®åœ±é¿ã®ãããã§ããã®è©³çްãå¢ããããšãã§ããŸããã
ç§ã¯ãã§ã«åºæ¬çãªJavascriptã¿ã¹ã¯ãã€ãã©ã€ã³ã·ã¹ãã ãå®è£
ããŸããïŒäººçãç°¡çŽ åãããããïŒããããä¿¡é Œæ§ãé«ãã¹ã±ãŒã©ãã«ãªãã®ã欲ããã®ã§ããã®ãããžã§ã¯ããC ++ã§äœæããŸããã subreddit / r / proceduralgenerationã§æç¶ãååºãå®è£
ããããã®ç«¶äºã¯ãç§ãããã«å°ããŸããïŒãããã£ãŠã察å¿ãããããã¯ïŒã
ç§ã®ã·ã¹ãã ã§ã¯ãã·ãã¥ã¬ãŒã·ã§ã³ã¯ãäžçã人å£ãããã³ããããæ¥ç¶ããäžé£ã®ã¢ã¯ã·ã§ã³ã®3ã€ã®ã³ã³ããŒãã³ãã§æ§æãããŠããŸãã ãã®ããããã®èšäºã§èª¬æãã3ã€ã®ã¢ãã«ãäœæããå¿
èŠããããŸããã
è€éããå¢ãããã«ãã¢ã¯ã¿ãŒã«äžçã§ã®ä»¥åã®çµéšã«é¢ããæ
å ±ãä¿æããå°æ¥ã®ã¢ã¯ã·ã§ã³ã§ãããã®çžäºäœçšã«é¢ããç¥èã䜿çšããŠããããããšæããŸããã
äžçã®ã¢ãã«ãäœæãããšãã«ãåçŽãªãã¹ãéžæããPerlinãã€ãºã䜿çšããŠæ°Žé¢ã«é
眮ããŸããã äžçã®ä»ã®ãã¹ãŠã®ãªããžã§ã¯ãã¯ãå®å
šã«ã©ã³ãã ã«é
眮ãããŠããŸããã
æ¯éå£ã¢ãã«ïŒããã³ãã®ãèšæ¶ãïŒã«ã€ããŠã¯ãããã€ãã®ç¹æ§ãšåº§æšãæã€ã¯ã©ã¹ãäœæããŸããã ããã¯äœè§£å床ã®ã·ãã¥ã¬ãŒã·ã§ã³ã§ãããšæ³å®ãããŠããŸããã ã¡ã¢ãªã¯ãã¥ãŒã§ããããããã¯èŠåãããç°å¢ã«é¢ããæ
å ±ãä¿åãããã¥ãŒã«æžã蟌ã¿ãã¡ã¢ãªã®è§£éãšããŠãã®ãã¥ãŒã管çããŸãã
ããã2ã€ã®ã¢ã¯ã·ã§ã³ã·ã¹ãã ãæ¥ç¶ããããã«ãåã
ã®ãšã³ãã£ãã£ãäžçã§è€éãªåäœãå®è£
ã§ããããã«ãã¿ã¹ã¯ãã¥ãŒã®éå±€ã·ã¹ãã å
ã«ããªããã£ãã¿ã¹ã¯ã®ãã¬ãŒã ã¯ãŒã¯ãäœæãããã£ãã®ã§ãã
ãµã³ãã«ãããã æ°Žã¯æå³ããã«å®å
šã«å·ã®åœ¢ãåããŸããã ä»ã®ãã¹ãŠã®èŠçŽ ã¯ãè»å¡ãå«ããŠã©ã³ãã ã«é
眮ãããŠããŸããè»å¡ã¯ããã®çš®ã§ã¯ç«¯ããé ãã«ãããŠããŸãïŒãã ããå·ã¯ãããã«èŠããŸãïŒãèãéããèã®äžã®ã¢ãªã®æã¯ãåºæ¬çãªæ©èœïŒããã³ã¿ã¹ã¯ãã¥ãŒã·ã¹ãã å
šäœïŒã®å®è£
ã®ä¿¡é Œæ§ãä¿èšŒããã¡ã¢ãªãªãŒã¯ïŒãããã®å€ãããããŸããïŒãé²ãåªãããã¹ãã¢ãã«ã«ãªããšæ±ºããŸããã
ã¿ã¹ã¯ã·ã¹ãã ãšã¡ã¢ãªã®æ§é ãããã«è©³ãã説æããïŒã»ãšãã©ïŒããªããã£ããªåºæ¬æ©èœããè€éããã©ã®ããã«äœæããããã瀺ããŸãã ãŸããã¢ãªãèãæ±ããŠåãæãããã«çã£ãããã«èµ°ãåºãããããã£ãšç«ã£ãŠããã°ã©ã ãé
ãããããããšãã«ééããå¯èœæ§ã®ããé¢çœããã¢ãªã®ã¡ã¢ãªãªãŒã¯ãã瀺ããããšæããŸãã
äžè¬çãªæ§é
ãã®ã·ãã¥ã¬ãŒã·ã§ã³ãC ++ã§èšè¿°ããã¬ã³ããªã³ã°ã«SDL2ã䜿çšããŸããïŒä»¥åã«SLD2ã®å°ããªãã¬ãŒã³ããŒã·ã§ã³ã¯ã©ã¹ãæ¢ã«äœæããŸããïŒã ãŸããGitHubã§èŠã€ããA *å®è£
ïŒå°ã倿ŽïŒã䜿çšããŸããã
å®è£
ãçµ¶æçã«ââé
ããçç±ãçè§£ã§ããªãã£ãããã§ãã
ãããã¯ã2ã€ã®ã¬ã€ã€ãŒïŒãã¹ã®æ€çŽ¢ã«äœ¿çšãããåå£ã¬ã€ã€ãŒïŒãšïŒçžäºäœçšãšæ€çŽ¢ãã¹ãå®äºããããã®ïŒå¡ãã€ã¶ãã¬ã€ã€ãŒã®2ã€ã®ã¬ã€ã€ãŒãæã€100Ã100ã°ãªããã§ãã ã¯ãŒã«ãã¯ã©ã¹ã¯ãèãæ€ç©ã®æé·ãªã©ãããŸããŸãªåç²§æ©èœãåŠçããŸãã ãã®èšäºã§ã¯èª¬æãããŠããªãéšåã®ã¿ããããã§ãããããä»ç§ã¯ããã«ã€ããŠè©±ããŠããã
人å£
ãããã¯ãåäžã®ã¯ãªãŒãã£ãŒãèšè¿°ããããããã£ãæã€ã¯ã©ã¹ã«å±ããŠããŸããã ãããã®ããã€ãã¯åç²§åã§ãããä»ã®ãã®ã¯ã¢ã¯ã·ã§ã³ã®å®è¡ã«åœ±é¿ãäžããŸããïŒããšãã°ãé£ã¶èœåãèŠçã®ç¯å²ãé£ã¹ããã®ãã¯ãªãŒãã£ãŒãçãããšã®ã§ãããã®ïŒã
ããã§æãéèŠãªã®ã¯ãåäœã決å®ããè£å©å€ã§ãã ããªãã¡ãåã¯ããã¯ãµã€ã¯ã«ã§ã«ãŠã³ãããå¿
èŠããªãããã«çŸåšã®ãã¹A *ãå«ããã¯ãã«ïŒããã«ããèšç®æéãç¯çŽãããããå€ãã®ããããã·ãã¥ã¬ãŒãã§ããŸãïŒãããã³ç°å¢ãè§£éããã¯ãªãŒãã£ãŒãå®çŸ©ããã¡ã¢ãªãã¥ãŒã
ã¡ã¢ãªãã¥ãŒ
ã¡ã¢ãªãã¥ãŒã¯ããããããããã£ã®ãµã€ãºã«ãã£ãŠå¶éãããã¡ã¢ãªãªããžã§ã¯ãã®ã»ãããå«ãåçŽãªãã¥ãŒã§ãã æ°ããèšæ¶ã远å ããããã³ã«ããããã¯åã«æŒãåºãããèåŸã«ããå¢çãè¶ãããã¹ãŠã®ãã®ãåæãããŸããã ããã«ãããäžéšã®æãåºã¯ä»ã®æãåºããããæ°é®®ãã«ãªããŸãã
ããããã¡ã¢ãªããæ
å ±ãåŒã³åºãããå Žåãã¡ã¢ãªãªããžã§ã¯ãïŒèŠæ±ïŒãäœæãããããã¡ã¢ãªå
ã®ãã®ãšæ¯èŒããŸããã æ¬¡ã«ããªã³ãŒã«é¢æ°ã¯ãã¯ãšãªã§æå®ãããæ¡ä»¶ã®ãããããŸãã¯ãã¹ãŠã«äžèŽããã¡ã¢ãªã®ãã¯ãã«ãè¿ããŸããã
class Memory{ public:
ã¡ã¢ãªã¯ãããã€ãã®ããããã£ãå«ãåçŽãªãªããžã§ã¯ãã§æ§æãããŸãã ãããã®ã¡ã¢ãªããããã£ã¯ãäºãã«ãé¢é£ä»ããããŠããããšèŠãªãããŸãã åã¡ã¢ãªã«ã¯ãrecallScoreãå€ãäžããããŸãããã®å€ã¯ããªã³ãŒã«æ©èœã«ãã£ãŠã¡ã¢ãªãèšæ¶ããããã³ã«ç¹°ãè¿ãããŸãã ãããã¯ã¡ã¢ãªãèšæ¶ãããã³ã«ãå€ãã¡ã¢ãªã®recallScoreãæ°ããã¡ã¢ãªã®recallScoreãããé«ãå Žåãé çªã«1ãã¹ã®ãœãŒããå®è¡ããŸãã ãã®ãããäžéšã®ã¡ã¢ãªã¯ãéèŠãã§ïŒã¡ã¢ãªãµã€ãºã倧ããå ŽåïŒããã¥ãŒã«é·ãä¿åãããå ŽåããããŸãã æéãçµã€ã«ã€ããŠããããã¯æ°ãããã®ã«çœ®ãæããããŸãã
ã¡ã¢ãªãã¥ãŒ
ãŸãããã®ã¯ã©ã¹ã«ããã€ãã®ãªãŒããŒããŒããããæŒç®åã远å ããŠãã¡ã¢ãªãã¥ãŒãšã¯ãšãªã®éã§çŽæ¥æ¯èŒãè¡ãããanyããŸãã¯ãallãããããã£ãæ¯èŒããŠãã¡ã¢ãªãäžæžãããããšãã«æå®ãããããããã£ã®ã¿ãäžæžããããããã«ããŸããã ãã®ãããããå Žæã«é¢é£ä»ãããããªããžã§ã¯ãã¡ã¢ãªãæã€ããšãã§ããŸããããã®å ŽæãããäžåºŠèŠãŠããªããžã§ã¯ãããªãå Žåããã®å Žæã«å¯Ÿå¿ããã¯ãšãªã䜿çšããŠãæ°ããå¡ãã€ã¶ãã¿ã€ã«ãå«ãã¡ã¢ãªã§äžæžãããããšã§ã¡ã¢ãªãæŽæ°ã§ããŸãã
void Bot::updateMemory(Memory &query, bool all, Memory &memory){
ãã®ã·ã¹ãã ã®ã³ãŒããäœæããéçšã§ãå€ãã®ããšãåŠã³ãŸããã
ã¿ã¹ã¯ã·ã¹ãã
ã²ãŒã ã®ã«ãŒããŸãã¯ã¬ã³ããªã³ã°ã®æ§è³ªã¯ããã¹ãŠã®ã¡ãžã£ãŒã§åãæ©èœãç¹°ãè¿ãããããšã§ããããããã«éåšæçãªåäœãå®è£
ãããã£ãã®ã§ãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ããã®åœ±é¿ã«å¯ŸåŠããããã«èšèšãããã¿ã¹ã¯ã·ã¹ãã ã®æ§é ã«é¢ãã2ã€ã®ãã¥ãŒã«ã€ããŠèª¬æããŸãã
ããã ã¢ããæ§é
ç§ã¯äžããäžã«ç§»åããŠãããããå®è¡ãããããªããã£ãã¢ã¯ã·ã§ã³ãã®ã»ãããäœæããããšã«ããŸããã ãããã®åã¢ã¯ã·ã§ã³ã¯ã1ããŒãã®ã¿ç¶ããŸãã ããªããã£ã颿°ã®åªããã©ã€ãã©ãªã䜿çšããŠãããããããã€ãã®ããªããã£ã颿°ã§æ§æãããè€éãªã¢ã¯ã·ã§ã³ã«çµåã§ããŸãã
ãã®ãããªããªããã£ãã¢ã¯ã·ã§ã³ã®äŸïŒ
ãããã®ã¢ã¯ã·ã§ã³ã«ã¯ãäžçãšäººå£ã®äž¡æ¹ãžã®åç
§ãå«ãŸããŠããããããã倿Žã§ããããšã«æ³šæããŠãã ããã
- åŸ
æ©ãããšãã¯ãªãŒãã£ãŒã¯ãã®ã«ãŒãã§äœãããŸããã
- Lookã¯ç°å¢ãè§£æããæ°ããã¡ã¢ãªããã¥ãŒã«å
¥ããŸãã
- ã¹ã¯ããã¯ãã¯ãªãŒãã£ãŒã®æã«ãããªããžã§ã¯ããåããå°é¢ã«æšªããã£ãŠãããªããžã§ã¯ãã«çœ®ãæããŸãã
- æ¶è²»ãããšãã¯ãªãŒãã£ãŒã®æã«ããã¢ã€ãã ãç Žå£ãããŸãã
- Stepã¯ãçŸåšã®èšç®ãããå®å
ãžã®ãã¹ãåãã1ã€ã®ã¹ããããå®è¡ããŸãïŒå€æ°ã®ãšã©ãŒãã§ãã¯ã䜿çšïŒã
- ...ãªã©ã
ãã¹ãŠã®ã¿ã¹ã¯é¢æ°ã¯ãã¿ã¹ã¯ã¯ã©ã¹ã®ã¡ã³ããŒã§ãã å³ãããã¹ãã®åŸã圌ãã¯ä¿¡é Œæ§ãšããè€éãªã¿ã¹ã¯ã«çµåããèœåã蚌æããŸããã
ãããã®äºæ¬¡æ©èœã§ã¯ãä»ã®ã¿ã¹ã¯ãåçŽã«é£éãããããšã§æ©èœãæ§ç¯ããŸãã
- walkã¿ã¹ã¯ã¯ã»ãã®æ°ã¹ãããã§ãïŒãšã©ãŒåŠçããïŒ
- takeã¿ã¹ã¯ã¯ãã«ãã¯ã¢ã³ãã¹ã¯ããã¿ã¹ã¯ã§ãïŒantã¡ã¢ãªåŠçã®ããã«å¿
èŠã§ããããã«ã€ããŠã¯åŸã§èª¬æããŸãïŒ
- ã¢ã€ãã«ã¿ã¹ã¯ã¯ãã©ã³ãã ãªå ŽæãéžæããŠããã«ç§»åãïŒãŠã©ãŒã¯ã䜿çšïŒãæ°ãµã€ã¯ã«åŸ
æ©ãïŒãŠã§ã€ãã䜿çšïŒããã®ãµã€ã¯ã«ãæå®ãããåæ°ç¹°ãè¿ã
- ...ãªã©
ä»ã®ã¿ã¹ã¯ã¯ããè€éã§ãã æ€çŽ¢ã¿ã¹ã¯ã¯ãã¡ã¢ãªã¯ãšãªãå®è¡ããŠããfoodããªããžã§ã¯ãïŒãã®ã¿ã€ãã®ãããã§äœ¿çšå¯èœïŒãå«ãå Žæã®ã¡ã¢ãªãæ€çŽ¢ããŸãã 圌女ã¯ãããã®æãåºãããŠã³ããŒããããããããã¹ãŠåã£ãŠãé£ã¹ç©ããæ¢ããŠãããŸãïŒã¢ãªã®å Žåãããã¯èã§ãïŒã é£ç©ã®èšæ¶ããªãå Žåãã¿ã¹ã¯ã¯ã¯ãªãŒãã£ãŒãã©ã³ãã ã«äžçãæ©ãåãããèŠåããŸãã ïŒviewRadius = 1ã§ãèŠããããšã«ãããã€ãŸããäžã®ã¿ã€ã«ã®ã¿ãèŠãïŒèгå¯ããç ç©¶ããããšã«ãããã¯ãªãŒãã£ãŒã¯åšå²ã®æ
å ±ã§èšæ¶ãæŽæ°ããé£ç©ãç¥çãã€æå³çã«æ€çŽ¢ããããšãã§ããŸãã
ããäžè¬åããã飌æã¿ã¹ã¯ã¯ãé£ç©ãèŠã€ããããšãé£ç©ãæŸãããšãæ€æ»ããããšïŒè¿é£ã®èšæ¶ãæŽæ°ããé£ç©ãèŠã€ããããšïŒãå®¶ã«æ»ã£ãŠé£ç©ãä¿åããããšããæããŸãã
è»ãè»å¡ããåºãŠãæå³çã«é€ãæ¢ãããšã«æ°ã¥ããããããŸããã åæåã«ãããt = 0ã§ã®ã¢ãªã®ã¡ã¢ãªã空ã§ãããããã¢ãªã®åæãã¹ã¯ã©ã³ãã ãã€ã³ãã«åããããŸãã ããããã圌ãã¯é£Œæã¿ã¹ã¯ã§é£ç©ãæŸãåœä»€ãäžããããŸãããããŠã圌ãã¯ãŸããããé£ç©ããªãããšã確èªããŠãèŠåããŸãã 圌ãã¯é£ã¹ç©ãèŠãå Žæã䜿ãæããã®ã§ãæã
ããŸããå§ããŸãïŒäžåãªè¿èŠïŒããããŠæåŸã«ããããã«ã¯å²ãåœãŠãããAIã®çš®é¡ã決å®ããããã¥ãŒãããããŸãã åãã¥ãŒã¯ããã®ãã¹ãŠã®åäœãå®çŸ©ãã1ã€ã®å¶åŸ¡ã¿ã¹ã¯ã«é¢é£ä»ããããŠããŸããããã¯ãäžé£ã®ã¡ã¢ãªãã¥ãŒãšããªããã£ãã¿ã¹ã¯ã«ãã£ãŠç°¡åã«æ±ºå®ãããããŸããŸãå°ãããªãã¿ã¹ã¯ã®ã«ã¹ã±ãŒãã§æ§æãããŠããŸãã ãããã¯ãAntãBeeã®ãããªã¿ã¹ã¯ã§ãã
ãããããŠã³æ§é
äžããäžã«åãã£ãŠèŠããšãã·ã¹ãã ã¯ããããäžã®åã
ã®ãããã®å¶åŸ¡ã¿ã¹ã¯ãšãã®å®è¡ã調æŽããã¿ã¹ã¯ãã¹ã¿ãŒã¯ã©ã¹ã§æ§æãããŠããŸãã
Taskmasterã«ã¯å¶åŸ¡ã¿ã¹ã¯ã®ãã¯ã¿ãŒããããåã¿ã¹ã¯ã¯ãããã«é¢é£ä»ããããŠããŸãã åå¶åŸ¡ã¿ã¹ã¯ã«ã¯ããµãã¿ã¹ã¯ã®ãã¥ãŒããããé¢é£ä»ããããã¿ã¹ã¯é¢æ°ã§ã¿ã¹ã¯ãªããžã§ã¯ããæåã«åæåãããšãã«èªã¿èŸŒãŸããŸãã
class Task{ public:
ãã¥ãŒå
ã®åã¿ã¹ã¯ãªããžã§ã¯ãã¯åŒæ°ã®é
åãæ ŒçŽããé¢é£ãã颿°ãã³ãã©ãŒã«æž¡ããŸãã ãããã®åŒæ°ã¯ãå¯èœãªéãäžè¬çã«äœæããããããã®ããªããã£ãã¿ã¹ã¯ã®åäœã決å®ããŸãã åŒæ°ã¯åç
§ã«ãã£ãŠæž¡ãããããããã¥ãŒå
ã®ã¿ã¹ã¯ãªããžã§ã¯ãã¯åŒæ°ãæ ŒçŽãããã®ãµã颿°ã倿Žã§ããããã«ãããããç¹å®ã®ã¯ããã¯ãµã€ã¯ã«ãåŸ
æ©ããå埩ãç¹å®ã®æ°ã®ã¢ã€ãã ãåéããèŠæ±ãªã©ãå®è£
ã§ããŸãã ãµã颿°ã¯ãåç
§ã«ãã£ãŠèŠªé¢æ°ã®å埩åïŒåŒæ°[n]ïŒã®å€ã倿Žãããã®æåæ¡ä»¶ããã®å€ã«äŸåãããŸãã
åã¡ãžã£ãŒã§ãã¿ã¹ã¯ãã¹ã¿ãŒã¯å¶åŸ¡ã¿ã¹ã¯ã®ãªã¹ãã調ã¹ãŠãperformã¡ãœãããåŒã³åºããŠå®è¡ããŸãã æ¬¡ã«ãperformã¡ãœããã¯ãã¿ã¹ã¯å
ã®ãã¥ãŒã®äžçªäžã®èŠçŽ ã調ã¹ãã¿ã¹ã¯ããã®åŒæ°ã䜿çšããŠãããå®è¡ããŸãã ããã«ãããã¿ã¹ã¯ãã¥ãŒãã«ã¹ã±ãŒãããŠãåžžã«æé«ã®ã¿ã¹ã¯ãå®äºããããšãã§ããŸãã æ¬¡ã«ãã¿ã¹ã¯ã®æ»ãå€ã«ãã£ãŠã¿ã¹ã¯ã®å®äºã決ãŸããŸãã
ããªããã£ãã¿ã¹ã¯ãtrueãè¿ããšãããã®å®å®ç¹ã«éããŠããããå°ãªããšãç¹°ãè¿ãããã¹ãã§ã¯ãããŸããïŒããšãã°ãã¯ãªãŒãã£ãŒãçµäºç¹ã«éãããšãã«stepãtrueãè¿ããŸãïŒã ã€ãŸãããã®æ»ãæ¡ä»¶ãæºãããããã¥ãŒããåé€ããããããæ¬¡ã®ã¡ãžã£ãŒã§æ¬¡ã®ã¿ã¹ã¯ãå®äºã§ããŸãã
ã¿ã¹ã¯ãã¥ãŒãå«ãã¿ã¹ã¯ã¯ããã¥ãŒã空ã«ãªã£ãåŸã«trueãè¿ããŸãã ããã«ãããåã颿°ãåžžã«åŒã³åºããããã¥ãŒãšãµããã¥ãŒã®æ§é ãæã€è€éãªã¿ã¹ã¯ãäœæã§ããŸãããåŒã³åºãããšã«ã²ãŒã ã®ç¶æ
ãšã¿ã¹ã¯ã®ç¶æ
ã1ã¹ããããã€ç¹°ãè¿ãããŸãã
æåŸã«ãå¶åŸ¡ã¿ã¹ã¯ã¯åçŽãªæ§é ã䜿çšããŸããåãµã€ã¯ã«ã§åŒã³åºããã空ã®å Žåã«ã®ã¿ã¿ã¹ã¯ãããŒããããã以å€ã®å Žåã¯ãã¥ãŒã«ããŒããããã¿ã¹ã¯ãå®è¡ããŸãã
ãã¥ãŒã«ãŒãïŒã³ãŒããåç
§ïŒã®å©ããåããŠã1ã€ã®é¢æ°ãç¹°ãè¿ãå®è¡ãããã®ãã¥ãŒã®äžçªäžã®èŠçŽ ãå®è¡ãããã³ã«ãperformã¡ãœãããåŒã³åºããštrueãè¿ããããšèŠçŽ ãããã·ã¥ã§ããŸãã
çµæ
ããã¯ãã¹ãŠlibconfigã«ã©ãããããŠãããããã·ãã¥ã¬ãŒã·ã§ã³ãã©ã¡ãŒã¿ã®å€æŽã¯éåžžã«ç°¡åã§ãã å€ãã®å¶åŸ¡ã¿ã¹ã¯ãåé¡ãªãã³ãŒãã£ã³ã°ã§ãïŒã¢ãªãšãããããäœæããŸããïŒãlibconfigã䜿çšããŠæ°ããçš®ãå®çŸ©ããã³ããŒãããã®ã¯é©ãã»ã©ç°¡åã§ãã
ãããã¯ã·ãã¥ã¬ãŒã·ã§ã³ã«ãšã¬ã¬ã³ãã«ããŒããããŸããã æ°ããæ¹åããããã¹ã®æ€çŽ¢ã®ãããã§ã2次å
ã®å¹³é¢ã§é£ç©ãåéããŠãã倿°ã®ã¢ã¯ãã£ããªããããã·ãã¥ã¬ãŒãã§ããŸãã
åæã«èãéãã40å¹ã®ã¢ãªã®ã·ãã¥ã¬ãŒã·ã§ã³ã ããããç ã®äžã«äœæããçµè·¯ã¯ããæã€ããã®ãåå°ã«å²ãåœãŠãããééã®å¢å ã«ãããã®ã§ãã ããã¯ãç¹åŸŽçãªãã¢ãªé«ééè·¯ãã®äœæã«ã€ãªãããŸãã ãããã¯ãã§ãã¢ã³ãšããŠè§£éããããšãã§ããŸãããã¢ãªãå®éã«èšæ¶ã亀æããå Žåãããã¯çå®ã®ããã«ãªããŸãããã®ã·ã¹ãã ã®ã¢ãžã¥ãŒã«æ§ã«ãããåçŽãªå¶åŸ¡ã¿ã¹ã¯ã«ãã£ãŠåäœã決å®ãããæ°ããçš®ã®è¿
éãªäœæãä¿èšŒãããŸãã äžèšã®ã³ãŒãã§ã¯ãã¯ãŒã ãšAIããããã®è²ããã¹æ€çŽ¢ã®å¶éïŒé£è¡ã§ããªãïŒãå¯èŠç¯å²ãã¡ã¢ãªãµã€ãºã倿Žããã ãã§äœæãããŠããããšãããããŸãã åæã«ããããã®ãã©ã¡ãŒã¿ãŒã¯ãã¹ãŠããªããã£ãã¿ã¹ã¯ã®æ©èœã«ãã£ãŠäœ¿çšããããããäžè¬çãªåäœã倿ŽããŸããã
Antã¡ã¢ãªã®ãããã°
è€éãªã¿ã¹ã¯ãšã¡ã¢ãªã®æ§é ã«ãããäºæãã¬å°é£ãšäŸå€ã®åŠçãå¿
èŠã«ãªããŸããã
ãµãã·ã¹ãã ãããçŽãã3ã€ã®ç¹ã«è€éãªã¡ã¢ãªãã°ã次ã«ç€ºããŸãã
åã§èµ°ã£ãŠããã¢ãª
ç§ãçŽé¢ããªããã°ãªããªãã£ãæåã®ãã°ã®1ã€ïŒã¢ãªã¯è£žå°ã§èãæ¢ããŠåºå Žã«å²ãŸãããã¿ãŒã³ã«æ²¿ã£ãŠçã£ãããã«èµ°ããŸããã ãã®åé¡ã¯ããã®æç¹ã§ã¯ãŸã ã¡ã¢ãªã®æŽæ°ãå®è£
ããŠããªãããã«çºçããŸããã ã¢ãªã«ã¯é£ã¹ç©ã®å Žæã®èšæ¶ããããèãæŸã£ãŠåã³èŠåããšããã«ãæ°ããèšæ¶ã圢æãããŸããã
åé¡ã¯ãæ°ããã¡ã¢ãªã¯åããã€ã³ãã«ãã£ãããå€ãã¡ã¢ãªã¯ä¿åãããŠããããšã§ããã ã€ãŸããé£ã¹ç©ãæ¢ãéçšã§ãã¢ãªã¯ãã¯ãæå¹ã§ã¯ãªããªã£ãé£ã¹ç©ã®å Žæãèšæ¶ããä¿æããŠããŸãããããããã®å€ãèšæ¶ã¯ä¿åãããæ°ãããã®ã«åã£ãŠä»£ãããŸããïŒåœŒãã¯ãã®ããããããŒããèŠããŠããŸããïŒã
ç§ã¯ãããæ¬¡ã®ããã«ä¿®æ£ããŸããïŒãªããžã§ã¯ãã®ããŒã¿ã¯ãåãå ŽæãèŠãŠãªããžã§ã¯ãã倿Žãããå Žåãå€ãã¡ã¢ãªã«åçŽã«äžæžããããŸãïŒããšãã°ãã¯ãªãŒãã£ãŒã¯èããããªãããšãèŠãããèããã£ãããšãèŠããŠããªãïŒã ããããå°æ¥çã«ã¯ãç¡å¹ãªããããã£ãæãåºã«è¿œå ããŠãéèŠãªå€ãæ
å ±ãããããæãåºããããã«ããŸãããæå¹ã§ã¯ãªããªã£ãæ
å ±ã¯ã衚瀺ããããŸãïŒãããã§ã¯ããèŠãŸããããä»ã¯ãããŸãããïŒã
ã¢ãªã¯ä»ã®ã¢ãªã®äžã«ãããªããžã§ã¯ããæŸããŸã
æã
ïŒç¹ã«å€æ°ã®ã¢ãªãšé«å¯åºŠã®èãããå ŽåïŒã2ã€ã®ã¢ãªã1ã€ã®ã¡ãžã£ãŒã§1ã€ã®ã¿ã€ã«ã®ã¿ã€ã«ã«ä¹ã£ãŠããããæŸãããšããããšãã§ããŸãã ããã¯ãæåã®ã¢ãªãã¿ã€ã«ã«å
¥ããåšããèŠåãã3ã€ã®ã¹ãããã§ã¢ã€ãã ãåãåã£ãããšãæå³ããŸããã æ¬¡ã«ã2çªç®ã®ã¢ãªãåãããšãè¡ãããªããžã§ã¯ããæã¡äžããçŽåã«ã®ã¿ãå¥ã®ã¢ãªã錻ã®äžãããããã²ã£ããããŸããã 圌ã¯éãã«ä»äºãç¶ããåã®æž¬å®ã§ä»ã®ã¢ãªãšåãç°å¢ã調ã¹ãåæ§ã®æ¹æ³ã§èšæ¶è¡ãåŠçããŸããïŒãã®æ®µéã§èšæ¶ã¯åäžã§ããããïŒã ããã«ããã2çªç®ã®ã¢ãªãæåã®ã¢ãªãã³ããŒãããªããžã§ã¯ããããã¯ã¢ãããããæåã®ã¢ãªã«ç¶ããŠãå®éã«ãã¹ãŠã®äœæ¥ãè¡ããŸããã 5å¹ã®ã¢ãªã®ã·ãã¥ã¬ãŒã·ã§ã³ã§ã¯ã3å¹ããèŠããªãã£ããããããã«æ°ä»ããŸããã åå ãèŠã€ããã®ã«é·ãæéãããããŸããã
ãã®åé¡ã解決ããã«ã¯ãã¹ã¯ããã¿ã¹ã¯ããªããã£ããäœæãããã€ã¯ã¿ã¹ã¯ãäœæããŸãããã®ã¿ã¹ã¯ã¯ããŸãå°é¢ãèŠãŠãªããžã§ã¯ãããããã©ããã確èªããŸãã ããã§ããå Žåãããã¯ãã¹ã¯ãããããããã§ãªãå Žåã2ã€ã®åãããåŸ
æ©ãããŠãä»ã®ã¢ãªã確å®ã«å»ãããã«ããŸãã 1ã€ã®ã±ãŒã¹ã§ã¯ããã®ã¢ã¯ã·ã§ã³ã¯2ã€ã®ã¡ãžã£ãŒã«å¯Ÿãããã®ã§ããããã1ã€ã¯1ã€ã®ã¡ãžã£ãŒã«å¯Ÿãããã®ã§ãã
å°éäžèœãªå Žæ
ã¡ã¢ãªã®åŠçãããçŽãããšãäœåãªããããå¥ã®äžæå¿«ãªãã°ã¯ãã¢ãªãèŠãããšãã§ããããã€ãã®å Žæã圌ã«ãšã£ãŠå°éäžå¯èœã ã£ããšããããšã§ããã ç§ã®æ zyãªãã°ã©ã¹ã¯ãã¹ãã®åå°ãžã®é
眮ãåå ã§çºçããŸããã ããã«ãããã¹ãããã¿ã¹ã¯ãäžè¬åã§ããŸããã
é£ç©æ¢çŽ¢ã®ãªã¯ãšã¹ããéä¿¡ãããšããã¢ãªã¯ãã°ãã°åœŒããæ¬åœã«å°éããããšãã§ããªãå Žæã®èšæ¶ãæã£ãŠããŸããïŒåœŒãã¯æ°Žã®äžã«èãèŠãã®ã§ã
ãã¡ããã¡ããããéãããã£ãã§ãïŒã ã¡ã¢ãªå
ã§ããŒã¯ãããŠããªãå ŽåïŒããšãã°ãããŒã«å€æ°ãå°éå¯èœãïŒããã®ã¢ã¯ã·ã§ã³ãå¯äžã«ãªããŸã§ããããèšæ¶ãããã¥ãŒã«æžã蟌ã¿ç¶ããŸããã ããã¯
ãåã¡ãžã£ãŒã§ãã¹æ€çŽ¢æäœã
åžžã«å®è¡ããããã«å°éããããšããŠå€±æãããããæ·±å»ãªæå¶ãåŒãèµ·ãããŸã
ã ã
解決çã¯ãå Žæãžã®ãã¹ãèŠã€ãããªãå Žåã«ã¹ãããã¿ã¹ã¯ã§ã¡ã¢ãªãæŽæ°ããã¡ã¢ãªå
ã§å°éäžèœãšããŠããŒã¯ããããšã§ããã ããã«ãæ€çŽ¢ã¿ã¹ã¯ã¯ãå°éå¯èœãªèšæ¶ã®ããã«é£ç©ã®ããå Žæã®ã¿ãç
§äŒããŸãã
ã·ã¹ãã å
šè¬
äžè¬çã«èšãããããšã§ããã¯ããç§ã¯èªåã®äººçã®1é±éãããã°ã©ãã³ã°ãã©ãœã³ã«è²»ãããããšãåŸæããŠããŸãã ç§ã¯ããã€ãã®ããªãã¯ãããªããã°ãªãããå€ããåŠã³ãŸããã
ç§ãäœæããã·ã¹ãã ã¯100ïŒ
ä¿¡é Œã§ãããã®ã§ã¯ãªãããŸã ããã€ãã®ã¢ãŒãã£ãã¡ã¯ãããããŸãã ããšãã°ãå€èгãè§£æããæ¹åãšããŠãã¢ã¯ã·ã§ã³ã¯äžäžå·Šå³ã«äœ¿çšãããŸããã€ãŸããæåŸã®ã¡ã¢ãªã¯å³äžé
ã«ãããŸãã æ
å ±ãåŒã³åºããŠã¢ã€ãã ãæ€çŽ¢ãããšããããã¯ã¯ãªãŒãã£ãŒãåæ±ã«ç§»åããåŸåãããããšãæå³ããŸãã ããã¯ãçš®ã«é¢ä¿ãªããèãæ¥éã«æé·ããåæ±ã«åãã£ãŠãããã«æ²ããå€§èŠæš¡ãªã·ãã¥ã¬ãŒã·ã§ã³ã§ç¹ã«é¡èã§ãã
æ©èœåŒ·å
ããè€éãªçç©ã®ããè€éãªèšæ¶ãã·ãã¥ã¬ãŒãããã«ã¯ã倧å¹
ãªæ¹åãå¿
èŠã ãšæããŸãã
ããã«ã¯ãã¡ã¢ãªåŠçæ©èœã®ä¿¡é Œæ§ã®åäžããæèããªã©ã®æ°ããããªããã£ããããã³ã決å®ããã倢ããªã©ã®é«ã¬ãã«ã¿ã¹ã¯ã®æŽŸçç©ã®è¿œå ãå«ãŸããŸãã ãèãããã¯ãã¡ã¢ãªãªã¯ãšã¹ãã®åå§çãªåäœã§ãã ã倢ãã¯ãããã€ãã®ãæèãåŒã³åºãã§æ§æã§ããŸããã©ã³ãã ãªã¡ã¢ãªãéžæããã©ã³ãã ãªããããã£ãååŸãããããç¹°ãè¿ããŠãå
±éã®ããŒããéèŠãªé¢é£æ§ã匷åããŸãã
å°æ¥çã«ã¯ã3ã€ã®ç¹å®ã®è¿œå ãèšç»ããŠããŸãã
- å²ã蟌ã¿åŠçãšã¿ã¹ã¯ã®åªå
é äœä»ãã远å ããŸã
- ãšã³ãã£ãã£éã®éä¿¡ã远å ãã
- ãšã³ãã£ãã£ãäºãã«æ£åŒã«èå¥ã§ããããã«ãã°ã«ãŒãæ§é ã远å ããŸã
ãšã³ãã£ãã£éã®ããåãã«ã¯ãã¿ã¹ã¯ã®åŠçã®äžæãšåªå
é äœä»ããå¿
èŠã«ãªãå ŽåããããŸãããªããªããããããéä¿¡ããïŒäœããã®æ¹æ³ã§ãèããå¿
èŠãããïŒããæ»æãããïŒãéããããŸãã¯ãæŠããïŒ ïŒ
ãšã³ãã£ãã£éã®éä¿¡ã¯ããããããã¡ã¢ãªã亀æããããä»ã®ãããã®ã¡ã¢ãªã«ãªã¯ãšã¹ããéä¿¡ãããããããã®1ã€ãŸãã¯2ã€ã®åºæ¬çãªã¿ã¹ã¯ã§æ§æãããŸãïŒãsayãããaskããªã©ïŒã ãã®ããã«ããŠã飿ããã®ä»ã®ãªãœãŒã¹ã®å Žæãªã©ã®æ
å ±ãéä¿¡ã§ããŸãã
ãããã®ã¿ã¹ã¯ãå®è£
ããã³ãã¥ãã±ãŒã·ã§ã³ã®æç¡ã«ãããããå€§èŠæš¡ãªã°ã«ãŒãã«ãããªãœãŒã¹èç©çã®ã°ã©ããäœæããããšèããŠããŸãã 人å£ã¯ãã§ã«å枬å®ã§åéãããé£ç©ã®éã远跡ããŠããŸãã æãåºã®å
±æãå¹çã«åœ±é¿ãäžããå¯èœæ§ãããããšã瀺ãã®ã¯è峿·±ãã§ãããã
æªæ¥
ã³ãã¥ããã£ã·ãã¥ã¬ãŒã·ã§ã³ã®æãéèŠãªæ©èœã¯ãã°ã«ãŒãæ§é ã远å ãããããã®ã°ã«ãŒãã«ãã¯ãã¬ãã«ã®ããããã£ãããšãã°å
±éã®ãç®æšãšè²¬ä»»ããäžããããšã§ãã ããã«ãããäžçš®ã®ãã·ãŒãããåŸãããããããã°ã«ãŒãæ§é ã®éå±€ãäžã£ãŠå§ä»»ãããé«ã¬ãã«ã®ã¿ã¹ã¯ãååŸããŠãäžçã«çŽæ¥åœ±é¿ãããäœãã®é«ã¬ãã«ã®ã¿ã¹ã¯ãååŸã§ããŸãã ãŸããæ¿æ²»æ§é ã®ãã©ãŒã ãäœæããããšãã§ããŸãã
ãã®ãããªã·ã¹ãã ã¯éåžžã«èªçµŠèªè¶³ã§ãããèŠèŠåã¯ãã®äžã«åçŽã«éããããŸãã æè«ã人åçç©ã«çœ®ãæããããšã¯éåžžã«ç°¡åã§ãè³æºãéããŠã©ããã«ä¿ç®¡ãããµã€ãºã倧ããããŸãã
ããšãã°ã圌ãã®å®¶ã®æé·ã®æ§è³ªã¯ããããã®è¡åã«å€§ããäŸåããããå®å
šã«ç¬ç«ããŠããŸããç°ãªãçš®ã¯ãç°ãªãç¹æ§ãšåŸåãæã€ç°ãªãéšæãæã£ãŠãããããããŸãããããã«ããã®ã·ã¹ãã ã以åã«äœæããããããžã§ãã¬ãŒã¿ãŒïŒäžçã¯ã©ã¹ãæ¡åŒµïŒãšçµã¿åãããŠãäžçããããªã¢ã«ã«ããããšãã§ããŸããçµè«ãšããŠ
è¿ãå°æ¥ãã¯ãªãŒãã£ãŒã人ã«çœ®ãæããææ°ã®æ©èœãå®è£
ããäºå®ã§ãããããããã·ã¹ãã ã®åè³ªãæ¹åãããšãã«ãå®å
šãªãœãŒã¹ã³ãŒããå
¬ââéããŸãïŒã³ãŒãã¯ããªãæ··codeãšããŠããå ŽåããããŸãïŒã次ã®èšäºãåŸ
ã¡ãŸãããããŸã§ã¯ãè±ã®äžã§è±ç²ãæ¢ããŠããããããã®ãããªããããŸãããããã¯åããã¬ãŒã ã¯ãŒã¯ã䜿çšããŠãšã³ã³ãŒããããŸããåºçºç¹ãå°ããªå³¶ã«ããããããã®çš®ãéžã³ãŸãããããããããããã¯å·£ç®±ã«æ»ãããã«ããã°ã©ã ãããŠããããåã«è±ç²ãçµ¶ããåéããŸããããªãã¯åœŒãã®èŠçãããé«ããæã
圌ããã¡ããã©èŠãã°ããã®è±ã«éåžžã«æå³çã«ç§»åããããšã«æ°ä»ããããããŸããã...ãããŠããããBee Taskã¡ã³ããŒé¢æ°ã§ãïŒ bool Task::Bee(Garden &garden, Population &population, int (&arguments)[10]){