Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Ngihlangane nezinto ezithakazelisayo mayelana nobuhlakani bokwenziwa emidlalweni. Ngencazelo yezinto eziyisisekelo mayelana ne-AI isebenzisa izibonelo ezilula, futhi ngaphakathi kunamathuluzi amaningi awusizo nezindlela zokuthuthuka nokuklama kwayo okulula. Kanjani, kuphi futhi nini ukuzisebenzisa kukhona futhi.

Iningi lezibonelo libhalwe nge-pseudocode, ngakho-ke alukho ulwazi oluthuthukisiwe lokuhlela oludingekayo. Ngaphansi kokusikwa kunamaphepha angama-35 ombhalo anezithombe nama-gif, ngakho-ke lungela.

I-UPD. Ngiyaxolisa, kodwa sengivele ngayenza ukuhumusha kwami ​​​​kwalesi sihloko ku-Habré IsiguliZero. Ungafunda inguqulo yakhe lapha, kodwa ngesizathu esithile lesi sihloko sangidlula (ngasebenzisa ukusesha, kodwa kukhona okungahambanga kahle). Futhi njengoba ngibhala kubhulogi enikelwe ekuthuthukisweni kwegeyimu, nginqume ukushiya inguqulo yami yokuhumusha kwababhalisile (amanye amaphuzu afomethwe ngendlela ehlukile, amanye ashiywa ngamabomu ngezeluleko zabathuthukisi).

Yini i-AI?

Igeyimu ye-AI igxile ekutheni iziphi izenzo okufanele zenziwe into ngokusekelwe ezimeni lapho itholakala khona. Lokhu kuvame ukubizwa ngokuthi "umenzeli okhaliphile", lapho umenzeli ewumlingisi odlalayo, imoto, i-bot, noma ngezinye izikhathi into engaqondakali: lonke iqembu lamabhizinisi noma impucuko. Esimweni ngasinye, kuyinto okufanele ibone indawo ekuyo, yenze izinqumo ezisekelwe kuyo, futhi yenze ngokuvumelana nazo. Lokhu kubizwa ngokuthi umjikelezo we-Sense/Think/Act:

  • Sense: агент находит или получает информацию о вещах в своей среде, которые могут повлиять на его поведение (угрозы поблизости, предметы для сбора, интересные места для исследования).
  • Cabanga: I-ejenti inquma ukuthi isabela kanjani (icabangela ukuthi kuphephe ngokwanele yini ukuqoqa izinto noma ukuthi kufanele alwe/acashe kuqala).
  • Isenzo: i-ejenti yenza izenzo ukuze isebenzise isinqumo sangaphambilini (iqala ukuya esitheni noma entweni).
  • ...manje isimo sesishintshile ngenxa yezenzo zabalingisi, ngakho umjikelezo uphinda ngedatha entsha.

ИИ, как правило, концентрируется на Sense-части цикла. Например, автономные автомобили делают снимки дороги, объединяют их с данными радара и лидара, и интерпретируют. Обычно это делает машинное обучение, которое обрабатывает входящие данные и придает им смысл, извлекая семантическую информацию по типу «есть еще один автомобиль в 20 ярдах впереди вас». Это так называемые classification problems.

Imidlalo ayidingi isistimu eyinkimbinkimbi ukuze ikhiphe ulwazi njengoba idatha eminingi isiyingxenye yayo ebalulekile. Asikho isidingo sokuqalisa ama-algorithms okubona isithombe ukuze unqume ukuthi kukhona yini isitha ngaphambili—igeyimu isiyazi kakade futhi iphakela ulwazi ngokuqondile enqubweni yokwenza izinqumo. Ngakho-ke, ingxenye ye-Sense yomjikelezo ivame ukuba lula kunengxenye ethi Cabanga futhi wenze.

Imikhawulo ye-Game AI

У ИИ есть ряд ограничений, которые необходимо соблюдать:

  • I-AI ayidingi ukuqeqeshwa kusenesikhathi, njengokungathi i-algorithm yokufunda komshini. Akuwenzi mqondo ukubhala inethiwekhi ye-neural ngesikhathi sokuthuthuka ukuze ugade amashumi ezinkulungwane zabadlali futhi ufunde indlela engcono kakhulu yokudlala ngokumelene nabo. Kungani? Ngoba umdlalo awukakhishwa futhi abekho abadlali.
  • Игра должна развлекать и бросать вызов, поэтому агенты не должны находить лучший подход против людей.
  • Ama-ejenti kumele abukeke ngokwangempela ukuze abadlali bazizwe sengathi badlala nabantu bangempela. Uhlelo lwe-AlphaGo lusebenze kahle kakhulu kunomuntu, kodwa izinyathelo ezikhethiwe bezikude kakhulu nokuqonda kwendabuko komdlalo. Uma igeyimu ilingisa isitha esingumuntu, lo muzwa akufanele ube khona. I-algorithm idinga ukushintshwa ukuze yenze izinqumo ezizwakalayo kunezinhle.
  • I-AI kumele isebenze ngesikhathi sangempela. Lokhu kusho ukuthi i-algorithm ayikwazi ukuphatha ukusetshenziswa kwe-CPU isikhathi eside ukwenza izinqumo. Ngisho nama-millisecond angu-10 made kakhulu, ngoba imidlalo eminingi idinga kuphela ama-millisecond angu-16 kuya kwangu-33 ukuze yenze konke ukucutshungulwa futhi idlulele kuzimele wezithombe ezilandelayo.
  • Okufanelekile, okungenani ingxenye yesistimu kufanele ishayelwe idatha, ukuze abangewona amakhodi bakwazi ukwenza izinguquko futhi ukulungiswa kwenzeke ngokushesha okukhulu.

Ake sibheke izindlela ze-AI ezimboza wonke umjikelezo we-Sense/Cack/Act.

Ukwenza Izinqumo Eziyisisekelo

Начнем с простейшей игры — Pong. Цель: переместить платформу (paddle) так, чтобы мяч отскакивал от нее, а не пролетал мимо. Это как теннис, в котором вы проигрываете, если не отбиваете мяч. Здесь у ИИ относительно легкая задача — решить, в каком направлении перемещать платформу.

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Izitatimende ezinemibandela

Ku-AI e-Pong, isixazululo esisobala kakhulu wukuzama njalo ukubeka inkundla ngaphansi kwebhola.

I-algorithm elula yalokhu, ebhalwe nge-pseudocode:

lonke uhlaka/isibuyekezo ngenkathi igeyimu isebenza:
uma ibhola lingakwesokunxele se-paddle:
hambisa gwedla kwesokunxele
okunye uma ibhola lingakwesokudla kwe-paddle:
hambisa gwedla kwesokudla

Uma isiteji sihamba ngesivinini sebhola, khona-ke lena i-algorithm efanelekile ye-AI e-Pong. Asikho isidingo sokwenza izinto zibe nzima uma ingekho idatha eningi kanye nezenzo ezingenzeka ze-ejenti.

Le ndlela ilula kangangokuthi wonke umjikelezo we-Sense/Cathink/Act awubonakali. Kodwa likhona:

  • Ingxenye yeSense ikabili uma izitatimende. Umdlalo uyazi ukuthi ibhola likuphi nokuthi inkundla ikuphi, ngakho-ke i-AI ibheka kuyo ukuthola lolo lwazi.
  • Ingxenye Cabanga ifakiwe kokubili uma izitatimende. Zihlanganisa izixazululo ezimbili, kulokhu okukhethekile. Ngenxa yalokho, kukhethwa isenzo esisodwa kwezintathu - hambisa inkundla kwesokunxele, uyihambise kwesokudla, noma ungenzi lutho uma isivele ibekwe ngendlela efanele.
  • Ingxenye yoMthetho itholakala ezitatimendeni ze-Move Paddle Left kanye ne-Move Paddle Right. Ngokuya ngedizayini yegeyimu, bangahambisa inkundla ngokushesha noma ngesivinini esithile.

Такие подходы называют реагирующими — есть простой набор правил (в данном случае операторы if в коде), которые реагируют на текущее состояние мира и действуют.

Isihlahla sesinqumo

Isibonelo se-Pong empeleni silingana nomqondo osemthethweni we-AI obizwa ngokuthi isihlahla sesinqumo. I-algorithm idlula kukho ukuze ifinyelele “eqabungeni”—isinqumo mayelana nesinyathelo okufanele sithathwe.

Masenze umdwebo webhulokhi wesihlahla sesinqumo se-algorithm yesikhulumi sethu:

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Ingxenye ngayinye yesihlahla ibizwa ngokuthi i-node - i-AI isebenzisa ithiyori yegrafu ukuchaza izakhiwo ezinjalo. Kunezinhlobo ezimbili zama-node:

  • Izindawo zezinqumo: ukukhetha phakathi kokunye okubili okusekelwe ekuhloleni isimo esithile, lapho enye nenye imelelwa njengenodi ehlukile.
  • Amanodi wokugcina: Isenzo sokwenziwa esimele isinqumo sokugcina.

I-algorithm iqala ku-node yokuqala ("impande" yesihlahla). Ingenza isinqumo mayelana nokuthi iyiphi i-node yengane okufanele uye kuyo, noma yenza isenzo esigcinwe endaweni futhi iphume.

Iyini inzuzo yokuba nesihlahla sesinqumo senze umsebenzi ofanayo nezitatimende zesigaba sangaphambilini? Kukhona uhlelo olujwayelekile lapha lapho isinqumo ngasinye sinesimo esisodwa kuphela kanye nemiphumela emibili engase ibe khona. Lokhu kuvumela umthuthukisi ukuthi akhe i-AI kusuka kudatha emele izinqumo esihlahleni ngaphandle kokuyikhodi kanzima. Asethule ngendlela yethebula:

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Ohlangothini lwekhodi uzothola isistimu yokufunda izintambo. Dala indawo ngayinye yazo, xhuma ingqondo yesinqumo ngokusekelwe kukholamu yesibili, namanodi ezingane asekelwe kukholamu yesithathu neyesine. Usadinga ukuhlela izimo nezenzo, kodwa manje isakhiwo somdlalo sizoba yinkimbinkimbi kakhulu. Lapha ungeza izinqumo ezengeziwe nezenzo, bese wenza ngendlela oyifisayo yonke i-AI ngokumane uhlele ifayela lombhalo lencazelo yesihlahla. Okulandelayo, udlulisela ifayela kumklami wegeyimu, ongashintsha ukuziphatha ngaphandle kokubuyisela igeyimu noma ukushintsha ikhodi.

Izihlahla zezinqumo ziwusizo kakhulu uma zakhiwe ngokuzenzakalelayo kusukela kusethi enkulu yezibonelo (isibonelo, kusetshenziswa i-algorithm ye-ID3). Lokhu kuwenza abe yithuluzi elisebenzayo nelisebenza kakhulu lokuhlukanisa izimo ngokusekelwe kudatha etholiwe. Nokho, sidlulela ngale kwesistimu elula yokuthi ama-ejenti akhethe izenzo.

Izimo

Мы разобрали систему дерева решений, которая использовала заранее созданные условия и действия. Человек, проектирующий ИИ, может организовать дерево так, как хочет, но он все еще должен полагаться на кодера, который это все запрограммировал. Что если мы могли бы дать дизайнеру инструменты для создания собственных условий или действий?

Ukuze umhleli kungadingeki abhale ikhodi yemibandela ethi Is Ball Left Of Paddle kanye nokuthi Is Ball Right Of Paddle, angakha isistimu lapho umklami ezobhala khona izimo ukuze ahlole la manani. Bese idatha yesihlahla sesinqumo izobukeka kanje:

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

По сути это то же самое, что и в первой таблице, но решения внутри себя имеют свой собственный код, немного похожий на условную часть if-оператора. На стороне кода это считывалось бы во втором столбце для узлов принятия решений, но вместо поиска конкретного условия для выполнения (Is Ball Left Of Paddle), оно оценивает условное выражение и возвращает true или false соответственно. Это делается с помощью скриптового языка Lua или Angelscript. С помощью них разработчик может принимать объекты в своей игре (ball и paddle) и создавать переменные, которые будут доступны в сценарии (ball.position). Кроме того, язык сценариев проще, чем C++. Он не требует полной стадии компиляции, поэтому идеально подходит для быстрой корректировки игровой логики и позволяет «некодерам» самим создавать нужные функции.

В приведенном примере язык сценариев используется только для оценки условного выражения, но его также можно использовать и для действий. Например, данные Move Paddle Right, могут стать оператором сценария (ball.position.x += 10). Так, чтобы действие также определялось в скрипте, без необходимости программирования Move Paddle Right.

Ungadlulela phambili futhi ubhale sonke isihlahla sesinqumo ngolimi lokubhala. Lokhu kuzoba ikhodi ngendlela yezitatimende ezinemibandela enekhodi eqinile, kodwa zizotholakala kumafayela ombhalo wangaphandle, okungukuthi, angashintshwa ngaphandle kokubuyisela lonke uhlelo. Ungahle uhlele ifayela lombhalo ngesikhathi sokudlalwa kwegeyimu ukuze uhlole ngokushesha ukusabela okuhlukile kwe-AI.

Impendulo yomcimbi

Izibonelo ezingenhla zilungele i-Pong. Baqhubeka besebenzisa umjikelezo we-Sense/Think/Act futhi benze ngokusekelwe esimweni sakamuva somhlaba. Kodwa emidlalweni eyinkimbinkimbi kakhulu udinga ukusabela ezenzakalweni ngazinye, futhi ungahloli yonke into ngesikhathi esisodwa. I-Pong kuleli cala isivele iyisibonelo esibi. Asikhethe enye.

Cabanga ngomdubuli lapho izitha zinganyakazi kuze kube yilapho zibona umdlali, ngemva kwalokho zenze kuye ngokuthi "uchwepheshe" wazo: othile uzogijima ukuze "agijime", omunye uzohlasela ekude. Kuseyisistimu esebenzayo eyisisekelo - "uma umdlali ebonwa, yenza okuthile" - kodwa ingahlukaniswa ngokunengqondo ibe umcimbi Obonwe Umdlali kanye Nokusabela (khetha impendulo bese uyisebenzise).

Lokhu kusibuyisela emuva kumjikelezo we-Sense/Cank/Act. Singabhala ingxenye yeSense ezohlola lonke uhlaka ukuthi i-AI iyambona yini umdlali. Uma kungenjalo, akukho okwenzekayo, kodwa uma ibona, khona-ke umcimbi obonwe uMdlali uyadalwa. Ikhodi izoba nesigaba esihlukile esithi "uma umcimbi Obonwe Umdlali wenzeka, yenza" iphi impendulo oyidingayo ukuze ubhekane nezingxenye ze-Think and Act. Ngakho-ke, uzosetha ukusabela kumcimbi obonwe nguMdlali: kumlingiswa "ojahayo" - ChargeAndAttack, kanye ne-sniper - HideAndSnipe. Lobu budlelwano bungadalwa kufayela ledatha ukuze lihlelwe ngokushesha ngaphandle kokuthi kuhlanganiswe futhi. Ulimi lokubhala lungasetshenziswa nalapha.

Ukwenza izinqumo ezinzima

Nakuba izinhlelo zokusabela ezilula zinamandla kakhulu, kunezimo eziningi lapho zinganele khona. Kwesinye isikhathi udinga ukwenza izinqumo ezihlukene ngokusekelwe kulokho okwenziwa yi-ejenti njengamanje, kodwa kunzima ukukucabanga lokhu njengesimo. Kwesinye isikhathi kuba nezimo eziningi kakhulu zokuzimela ngempumelelo esihlahleni sesinqumo noma iskripthi. Kwesinye isikhathi udinga ukuhlola kusenesikhathi ukuthi isimo sizoshintsha kanjani ngaphambi kokuthatha isinqumo ngesinyathelo esilandelayo. Kudingeka izindlela eziyinkimbinkimbi ukuze kuxazululwe lezi zinkinga.

Umshini wombuso ophelile

Umshini wesimo esiphelile noma i-FSM (umshini wesimo esilinganiselwe) iyindlela yokusho ukuthi i-ejenti yethu okwamanje ikwesinye sezifundazwe ezimbalwa okungenzeka ukuthi ikhona, futhi ingashintsha isuka kwesinye isifunda iye kwesinye. Kunenombolo ethile yezifunda ezinjalo-ngakho igama. Isibonelo esihle kakhulu empilweni ilobhothi. Kukhona ukulandelana okuhlukene kwezibani ezindaweni ezahlukene, kodwa isimiso siyafana - isimo ngasinye simelela okuthile (yima, hamba, njll.). Irobhothi lisesimweni esisodwa kuphela nganoma isiphi isikhathi, futhi lisuka kwesinye liye kwesinye ngokusekelwe emithethweni elula.

С NPC в играх похожая история. Для примера возьмем стража с такими состояниями:

  • Патрулирующий (Patrolling).
  • Ukuhlasela.
  • Убегающий (Fleeing).

Futhi le mibandela yokushintsha isimo sayo:

  • Если страж видит противника, он атакует.
  • Если страж атакует, но больше не видит противника, он возвращается к патрулированию.
  • Если страж атакует, но сильно ранен, он убегает.

Ungakwazi futhi ukubhala uma-izitatimende ngokuguquguquka kwesimo somgadi kanye nokuhlola okuhlukahlukene: ingabe sikhona isitha esiseduze, liyini izinga lezempilo le-NPC, njll. Ake sengeze ezinye izifundazwe ezimbalwa:

  • Ubuvila - phakathi kwama-patrol.
  • Ukusesha - lapho isitha esiphawuliwe sesinyamalele.
  • Ukuthola Usizo - lapho isitha sibonwa, kodwa sinamandla kakhulu ukulwa sodwa.

Выбор для каждого из них ограничен — например, страж не пойдет искать скрывшегося врага, если у него низкое здоровье.

В конце концов огромный список «если <x и y, но не z>, то <p>», может стать слишком громоздким, поэтому следует формализовать метод, который позволит нам держать в уме состояния и переходы между состояниями. Чтобы это сделать, примем во внимание все состояния, и под каждым состоянием запишем в список все переходы в другие состояния, вместе с необходимыми для них условиями.

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Leli yithebula lenguquko yesimo - indlela ebanzi yokumela i-FSM. Ake sidwebe umdwebo futhi sithole umbono ophelele wokuthi kushintsha kanjani ukuziphatha kwe-NPC.

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Umdwebo ubonisa ingqikithi yokwenza izinqumo zale ejenti ngokusekelwe esimweni samanje. Ngaphezu kwalokho, umcibisholo ngamunye ubonisa inguquko phakathi kwezifunda uma isimo esiseduze kwawo siyiqiniso.

Isibuyekezo ngasinye sihlola isimo samanje se-ejenti, sibheke uhlu lwezinguquko, futhi uma izimo zoshintsho zifinyelelwa, samukela isimo esisha. Isibonelo, uhlaka ngalunye luhlola ukuthi ingabe isibali sikhathi semizuzwana eyi-10 siphelelwe yisikhathi yini, futhi uma kunjalo, unogada uyasuka endaweni ye-Idling aye kuPatrolling. Ngendlela efanayo, isimo sokuhlasela sihlola impilo ye-ejenti - uma iphansi, bese ingena esimweni sokubalekela.

Lokhu ukuphatha izinguquko phakathi kwezifundazwe, kodwa kuthiwani ngokuziphatha okuhlotshaniswa nezifunda ngokwazo? Mayelana nokuqaliswa kokuziphatha kwangempela kwesifunda esithile, ngokuvamile kunezinhlobo ezimbili "zehuku" lapho sabela khona izenzo ku-FSM:

  • Izenzo esizenza ngezikhathi ezithile kulesi simo samanje.
  • Izenzo esizithathayo lapho sisuka kwesinye isimo siya kwesinye.

Izibonelo zohlobo lokuqala. Isimo Sokugada sizohambisa i-ejenti emzileni wokugada ifreyimu ngayinye. Isimo esihlaselayo sizozama ukuqalisa ukuhlasela uhlaka ngalunye noma ukushintshela esimweni lapho lokhu kungenzeka khona.

Для второго типа рассмотрим переход «если враг виден и враг слишком силен, то перейти в состояние Finding Help. Агент должен выбрать, куда пойти за помощью, и сохранить эту информацию, чтобы состояние Finding Help знало куда обратиться. Как только помощь найдена, агент переходит обратно в состояние Attacking. В этот момент он захочет рассказать союзнику об угрозе, поэтому может возникнуть действие NotifyFriendOfThreat.

Nakulokhu, singabheka le sistimu ngelensi yomjikelezo weSense/Cabanga/Act. I-Sense iqukethwe kudatha esetshenziswa umqondo woshintsho. Cabanga - izinguquko ezitholakala esifundeni ngasinye. Futhi uMthetho wenziwa ngezenzo ezenziwa ngezikhathi ezithile ngaphakathi kwesifunda noma ezinguqukweni phakathi kwezifunda.

Иногда непрерывный опрос условий перехода может быть дорогостоящим. Например, если каждый агент будет выполнять сложные вычисления каждый кадр, чтобы определить видит ли он врагов и понять, можно ли переходить от состояния Patrolling к Attacking — это займет много времени процессора.

Izinguquko ezibalulekile esimweni somhlaba zingacatshangwa njengezehlakalo ezizocutshungulwa njengoba zenzeka. Esikhundleni sokuthi i-FSM ihlole isimo soshintsho "i-ejenti yami ingambona umdlali?" uhlaka ngalunye, isistimu ehlukile ingalungiselelwa ukuhlola izikhathi ezimbalwa (isb. izikhathi ezi-5 ngomzuzwana). Futhi umphumela uwukukhipha i-Player Seen lapho isheke lidlula.

Lokhu kudluliselwa ku-FSM, okumele manje iye kumcimbi otholiwe womdlali Oboniwe bese iphendula ngokufanele. Ukuziphatha okuwumphumela kuyafana ngaphandle kokulibaziseka okucishe kubonakale ngaphambi kokuphendula. Kodwa ukusebenza kuye kwaba ngcono ngenxa yokuhlukanisa ingxenye ye-Sense ibe ingxenye ehlukile yohlelo.

Umshini wombuso olinganiselwe we-Hierarchical

Nokho, ukusebenza nama-FSM amakhulu akulula ngaso sonke isikhathi. Uma sifuna ukunweba isimo sokuhlasela ukuze sihlukanise i-MeleeAttacking ne-RangedAttacking, kuzodingeka siguqule izinguquko ezivela kuzo zonke ezinye izifundazwe eziholela esimweni sokuhlasela (okwamanje nekusasa).

Наверняка вы заметили, что в нашем примере много дублированных переходов. Большинство переходов в состоянии Idling идентичны переходам в состоянии Patrolling. Хорошо бы не повторяться, особенно если мы добавим больше похожих состояний. Имеет смысл сгруппировать Idling и Patrolling под общим ярлыком «небоевые», где есть только один общий набор переходов в боевые состояния. Если мы представим этот ярлык как состояние, то Idling и Patrolling станут подсостояниями. Пример использования отдельной таблицы переходов для нового небоевого подсостояния:

Izifundazwe eziyinhloko:
Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Состояние вне боя:
Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Futhi ngefomu lomdwebo:

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Kuyisistimu efanayo, kodwa enesimo esisha sokungalwi esihlanganisa i-Idling kanye nokuPatrolling. Ngesifunda ngasinye esiqukethe i-FSM enezifunda ezingaphansi (nalezi zifunda ezingaphansi, nazo, eziqukethe ama-FSM azo - nokunye isikhathi eside njengoba udinga), sithola umshini wesifunda se-Hierarchical Finite State noma i-HFSM (umshini wombuso olinganiselwe we-hierarchical). Ngokuhlanganisa isimo esingesona esokulwa, sinqamula inqwaba yezinguquko ezingafuneki. Singenza okufanayo kunoma yiziphi izifundazwe ezintsha ezinoshintsho oluvamile. Isibonelo, uma ngokuzayo sinweba isimo sokuhlasela siye kuzifundazwe ze-MeleeAttacking ne-MissileAttacking, zizoba yizifundazwe ezishintshayo phakathi kwesinye ngokususelwe ebangeni lesitha nokutholakala kwe-ammo. Ngenxa yalokho, ukuziphatha okuyinkimbinkimbi kanye nokuziphatha okuncane kungamelwa ngobuncane bezinguquko eziyimpinda.

Дерево поведений

Nge-HFSM, inhlanganisela eyinkimbinkimbi yokuziphatha idalwe ngendlela elula. Nokho, kunobunzima obuncane bokuthi ukwenza izinqumo ngendlela yemithetho yoguquko kuhlobene eduze nesimo samanje. Futhi emidlalweni eminingi yilokhu kanye okudingekayo. Futhi ukusetshenziswa ngokucophelela kwesikhundla sombuso kunganciphisa inani lokuphindaphinda koshintsho. Kodwa ngezinye izikhathi udinga imithetho esebenzayo kungakhathaliseki ukuthi ukusiphi isimo, noma esebenza cishe kunoma yisiphi isimo. Isibonelo, uma impilo ye-ejenti yehlela ku-25%, uzofuna ukuthi abaleke kungakhathaliseki ukuthi ubesempini, engenzi lutho, noma ekhuluma - kuzodingeka wengeze lesi simo esimweni ngasinye. Futhi uma umklami wakho kamuva efuna ukushintsha umkhawulo wezempilo ophansi usuka ku-25% uye ku-10%, khona-ke lokhu kuzomele kwenziwe futhi.

Ngokufanelekile, lesi simo sidinga uhlelo lapho izinqumo mayelana nokuthi "isiphi isimo okufanele sibe kuso" zingaphandle kwezifunda ngokwazo, ukuze kwenziwe izinguquko endaweni eyodwa kuphela futhi zingathinti izimo zoguquko. Izihlahla zokuziphatha zivela lapha.

Kunezindlela eziningana zokuzisebenzisa, kodwa ingqikithi icishe ifane kubo bonke futhi ifana nesihlahla sesinqumo: i-algorithm iqala ngendawo "yempande", futhi isihlahla siqukethe ama-node amelela izinqumo noma izenzo. Kukhona ukuhluka okumbalwa okubalulekile:

  • Теперь узлы возвращают одно из трех значений: Succeeded (если работа выполнена), Failed (если нельзя запустить) или Running (если она все еще запущена и нет конечного результата).
  • Awasekho ama-node wesinqumo ongakhetha phakathi kokunye okubili. Kunalokho, angama-Decorator node, anenodi eyodwa yengane. Uma Bephumelela, bakhipha i-node yabo yengane okuwukuphela kwayo.
  • Узлы, выполняющие действия, возвращают значение Running для представления выполняемых действий.

Le sethi encane yama-node ingahlanganiswa ukuze idale inani elikhulu lokuziphatha okuyinkimbinkimbi. Ake sicabange ngonogada be-HFSM esibonelweni sangaphambilini njengesihlahla sokuziphatha:

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Ngalesi sakhiwo akufanele kube noguquko olusobala ukusuka ezifundazweni ze-Idling/Patrolling ukuya ekuhlaseleni nanoma yiziphi ezinye izifundazwe. Uma isitha sibonakala futhi impilo yomlingisi iphansi, ukubulawa kuzoma endaweni ethi Ukubaleka, kungakhathaliseki ukuthi ibisetshenziswa yiphi i-node ngaphambilini - Ukugada, Ukungenzi lutho, Ukuhlasela, nanoma iyiphi enye.

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Izihlahla zokuziphatha ziyinkimbinkimbi—ziningi izindlela zokuziqamba, futhi ukuthola inhlanganisela efanele yabahlobisi namanodi ahlanganisiwe kungaba inselele. Kukhona nemibuzo mayelana nokuthi kufanele usihlole kangaki isihlahla - ingabe sifuna ukudlula kuzo zonke izingxenye zaso noma kuphela lapho esinye sezimo sesishintshile? Sisigcina kanjani isimo esiphathelene namanodi - sazi kanjani ukuthi besibambe imizuzwana eyi-10, noma sazi kanjani ukuthi imaphi ama-node abesebenzisa okokugcina ukuze sikwazi ukucubungula ukulandelana ngendlela efanele?

Yingakho kukhona ukuqaliswa okuningi. Isibonelo, amanye amasistimu athathe indawo yama-decorator afaka abahlobisi abangaphakathi. Baphinde bahlole isihlahla lapho izimo zomhlobisi zishintsha, basize ukujoyina ama-node, futhi banikeze izibuyekezo zezikhathi ezithile.

Utility-based system

Eminye imidlalo inomakhenika abaningi abahlukene. Kuyinto efiselekayo ukuthi bathole zonke izinzuzo zemithetho yenguquko elula futhi evamile, kodwa hhayi ngesimo somuthi ophelele wokuziphatha. Esikhundleni sokuba nesethi ecacile yokukhetha noma isihlahla sezenzo ezingenzeka, kulula ukuhlola zonke izenzo bese ukhetha okufanele kakhulu okwamanje.

Uhlelo olusekelwe ku-Utility luzosiza ngalokhu nje. Lolu uhlelo lapho i-ejenti inezenzo ezihlukahlukene futhi ikhetha ukuthi yiziphi okufanele zenze ngokusekelwe ekusetshenzisweni okuhlobene kwento ngayinye. Lapho ukusetshenziswa kuyisilinganiso esinqunyiwe sokuthi kubaluleke kangakanani noma kufiseleka kangakanani ukuthi umenzeli enze lesi senzo.

Ukusetshenziswa okubaliwe kwesenzo okusekelwe esimweni samanje nendawo, umenzeli angahlola futhi akhethe esinye isimo esifaneleka kakhulu noma kunini. Lokhu kufana ne-FSM, ngaphandle kwalapho izinguquko zinqunywa isilinganiso sesimo ngasinye esingaba khona, okuhlanganisa lesi samanje. Sicela uqaphele ukuthi sikhetha isenzo esiwusizo kakhulu ukuze siqhubeke (noma sihlale uma sesivele sisiqedile). Ukuze uthole ukuhlukahluka okwengeziwe, lokhu kungaba ukukhetha okulinganiselayo kodwa okungahleliwe ohlwini oluncane.

Uhlelo lunikeza ububanzi obungenamthetho bamanani ensiza—ngokwesibonelo, ukusuka ku-0 (okungafuneki nhlobo) kuye ku-100 (okufiseleka ngokuphelele). Isenzo ngasinye sinenombolo yamapharamitha athinta ukubalwa kwaleli nani. Sibuyela esibonelweni sethu somnakekeli:

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Переходы между действиями неоднозначны — любое состояние может следовать за любым другим. Приоритеты действий находятся в возвращаемых значениях полезности. Если враг виден, и этот враг силен, а здоровье персонажа низкое, то и Fleeing, и FindingHelp вернут высокие ненулевые значения. При этом FindingHelp всегда будет выше. Аналогичным образом, небоевые действия никогда не возвращают больше 50, поэтому они всегда будут ниже боевых. Нужно учитывать это при создании действий и вычислении их полезности.

В нашем примере действия возвращают либо фиксированное постоянное значение, либо одно из двух фиксированных значений. Более реалистичная система предполагает возврат оценки из непрерывного диапазона значений. Например, действие Fleeing возвращает более высокие значения полезности, если здоровье агента низкое, а действие Attacking возвращает более низкие, если враг слишком силен. Из-за этого действие Fleeing имеет приоритет над Attacking в любой ситуации, когда агент чувствует, что у него недостаточно здоровья для победы над противником. Это позволяет изменять приоритеты действий на основе любого числа критериев, что делает такой подход более гибким и вариативным, чем дерево поведения или FSM.

Isenzo ngasinye sinemibandela eminingi yokubala uhlelo. Angabhalwa ngolimi lokubhala noma njengochungechunge lwamafomula ezibalo. I-Sims, elingisa inqubo yansuku zonke yomlingiswa, yengeza isendlalelo esengeziwe sokubala - i-ejenti ithola uchungechunge "lwezisusa" ezithonya izilinganiso zokusetshenziswa. Uma umlingisi elambile, uzolamba nakakhulu ngokuhamba kwesikhathi, futhi inani lokusetshenziswa kwesenzo se-EatFood lizokhuphuka kuze kube yilapho umlingisi esenza, ehlisa ileveli yendlala futhi abuyisele inani le-EatFood kuqanda.

Umqondo wokukhetha izenzo ezisuselwe kuhlelo lokulinganisa ulula kakhulu, ngakho-ke isistimu esekelwe ku-Utility ingasetshenziswa njengengxenye yezinqubo zokuthatha izinqumo ze-AI, esikhundleni sokuthatha indawo yazo ephelele. Isihlahla sesinqumo singase sicele isilinganiso esiwusizo samanodi ezingane ezimbili bese sikhetha esiphezulu. Ngokufanayo, isihlahla sokuziphatha singaba ne-Utility node eyinhlanganisela ukuze sihlole ukusetshenziswa kwezenzo ukuze sinqume ukuthi iyiphi ingane esizoyikhipha.

Движение и навигация

В предыдущих примерах у нас была платформа, которую мы перемещали влево или вправо, и страж, который патрулировал или атаковал. Но как именно мы обрабатываем перемещение агента в течение определенного периода времени? Как мы устанавливаем скорость, как мы избегаем препятствий, и как мы планируем маршрут, если добраться до места назначения сложнее, чем просто двигаться по прямой? Давайте это рассмотрим.

Ukubusa

Esigabeni sokuqala, sizocabanga ukuthi i-ejenti ngayinye inenani lejubane, elihlanganisa ukuthi lihamba ngokushesha kangakanani futhi ngakuphi. Ingalinganiswa ngamamitha ngomzuzwana, amakhilomitha ngehora, amaphikseli ngomzuzwana, njll. Uma sikhumbula iluphu ye-Sense/Think/Act, singacabanga ukuthi ingxenye ethi Cabanga ikhetha isivinini, futhi ingxenye Yomthetho isebenzisa leso sivinini kumenzeli. Ngokuvamile imidlalo inesistimu yefiziksi ekwenzela lo msebenzi, ifunda inani lesivinini lento ngayinye bese iyalungisa. Ngakho-ke, ungashiya i-AI ngomsebenzi owodwa - ukunquma ukuthi yisiphi isivinini i-ejenti okufanele ibe nayo. Uma wazi ukuthi i-ejenti kufanele ibe kuphi, udinga ukuyihambisa ngendlela efanele ngesivinini esimisiwe. Isibalo esincane kakhulu:

desired_travel = destination_position – agent_position

Cabanga ngezwe le-2D. I-ejenti isendaweni (-2,-2), indawo okuyiwa kuyo isenyakatho-mpumalanga endaweni (30, 20), futhi indlela edingekayo ukuze umenzeli afike lapho ngu (32, 22). Ake sithi lezi zikhundla zikalwa ngamamitha - uma sithatha isivinini se-ejenti sibe amamitha angu-5 ngomzuzwana, sizobe sesikala i-vector yethu yokufuduka futhi sithole isivinini esicishe sibe (4.12, 2.83). Ngala mapharamitha, i-ejenti izofika lapho iya khona cishe ngamasekhondi angu-8.

Ungakwazi ukubala kabusha amanani nganoma yisiphi isikhathi. Uma i-ejenti iphakathi nendawo ekuhlosiwe, ukunyakaza bekuyoba uhhafu wobude, kodwa njengoba isivinini esiphezulu se-ejenti singu-5 m/s (sinqume lokhu ngenhla), isivinini sizofana. Lokhu futhi kusebenza ekuhambiseni okuqondiwe, okuvumela i-ejenti ukuthi yenze izinguquko ezincane njengoba ihamba.

Kodwa sifuna ukuhluka okwengeziwe - isibonelo, ukukhulisa kancane isivinini ukuze silingise umlingisi osuka ekumeni aye ekugijimeni. Okufanayo kungenziwa ekugcineni ngaphambi kokuma. Lezi zici zaziwa njengokuziphatha kokuqondisa, ngayinye enamagama athile: Funa, Baleka, Ukufika, njll. Umbono ukuthi amandla okusheshisa angasetshenziswa kusivinini somenzeli, ngokusekelwe ekuqhathaniseni indawo yomenzeli nesivinini samanje nendawo ekuyiwa kuyo. ukuze usebenzise izindlela ezahlukene zokuya emgomeni.

Ukuziphatha ngakunye kunenjongo ehluke kancane. Ukufuna kanye Nokufika kuyizindlela zokuhambisa i-ejenti endaweni oya kuyo. Ukugwema Isithiyo Nokwehlukana lungisa umnyakazo we-ejenti ukuze ugweme izithiyo endleleni eya egoli. Ukuqondanisa nokubumbana kugcina ama-agent ehamba ndawonye. Noma yiliphi inani lokuziphatha okuhlukile kokuqondisa lingafingqwa ukuze kukhiqizwe i-vector yomzila owodwa kubhekwa zonke izici. Umenzeli osebenzisa Ukufika, Ukwehlukana, kanye nokuziphatha Kokugwema Isithiyo ukuze uhlale kude nezindonga nabanye abasebenzeli. Le ndlela isebenza kahle ezindaweni ezivulekile ngaphandle kwemininingwane engadingekile.

Ezimweni ezinzima kakhulu, ukungezwa kokuziphatha okuhlukile kusebenza kubi kakhulu - ngokwesibonelo, i-ejenti ingabhajwa odongeni ngenxa yokungqubuzana phakathi kokufika kanye Nokugwema Isithiyo. Ngakho-ke, udinga ukucabangela izinketho eziyinkimbinkimbi kunokumane ungeze wonke amanani. Indlela yilena: esikhundleni sokwengeza imiphumela yokuziphatha ngakunye, ungacabangela ukunyakaza ngezindlela ezihlukene bese ukhetha inketho engcono kakhulu.

Kodwa-ke, endaweni eyinkimbinkimbi eneziphetho ezifile nokukhetha ukuthi iyiphi indlela okufanele sihambe ngayo, sizodinga okuthile okuthuthuke kakhulu.

Ukuthola indlela

Steering behaviours отлично подходит для простого движения на открытой местности (футбольное поле или арена), где добраться от А до Б — это прямой путь с небольшими отклонениями мимо препятствий. Для сложных маршрутов нам нужен pathfinding (поиск пути), который является способом изучения мира и принятия решения о маршруте через него.

Okulula kakhulu ukusebenzisa igridi kusikwele ngasinye eduze kwe-ejenti bese uhlola ukuthi yiziphi ezivunyelwe ukuhamba. Uma enye yazo iyindawo, landela umzila osuka kusikwele ngasinye uye kwesidlule uze ufike ekuqaleni. Lona umzila. Uma kungenjalo, phinda inqubo nezinye izikwele eziseduze uze uthole indawo oya kuyo noma uphelelwe izikwele (okusho ukuthi awukho umzila ongaba khona). Yilokhu okwaziwa ngokusemthethweni ngokuthi Usesho Olubanzi-Olokuqala noma i-BFS (i-algorithm yokusesha ububanzi). Kuzo zonke izinyathelo ubheka kuzo zonke izinhlangothi (ngakho-ke ububanzi, "ububanzi"). Indawo yokusesha ifana ne-wavefront ehambayo ize ifike endaweni oyifunayo - indawo yokusesha iyakhula esinyathelweni ngasinye kuze kufakwe indawo yokugcina, ngemva kwalokho ingalandelelwa emuva ekuqaleni.

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Ngenxa yalokho, uzothola uhlu lwezikwele lapho umzila owufunayo uhlanganiswa khona. Lena indlela (ngakho-ke, ukuthola indlela) - uhlu lwezindawo i-ejenti ezozivakashela ngenkathi ilandela indawo.

Njengoba sisazi isimo saso sonke isikwele emhlabeni, singasebenzisa ukuziphatha kokuqondisa ukuze sihambe endleleni - sisuka endaweni engu-1 siye endaweni engu-2, bese sisuka endaweni engu-2 siye endaweni engu-3, ​​njalo njalo. Inketho elula ukuya ngasenkabeni yesikwele esilandelayo, kodwa inketho engcono kakhulu ukuma phakathi konqenqema phakathi kwesikwele samanje nesilandelayo. Ngenxa yalokhu, i-ejenti izokwazi ukusika amakhona ngokujika okubukhali.

I-algorithm ye-BFS nayo inobubi - ihlola izikwele eziningi ohlangothini “olungalungile” njengasendleleni “elungile”. Kulapho i-algorithm eyinkimbinkimbi ebizwa ngokuthi A* (A star) iqala ukusebenza. Isebenza ngendlela efanayo, kodwa esikhundleni sokuhlola ngobumpumputhe izikwele ezingomakhelwane (khona-ke omakhelwane bomakhelwane, bese kuba omakhelwane bomakhelwane bomakhelwane, njalonjalo), iqoqa ama-node ohlwini bese ihlunga ukuze i-node elandelayo ihlolwe njalo eyodwa eholela emzileni omfushane kakhulu. Ama-Node ahlungwa ngokusekelwe ku-heuristic ecabangela izinto ezimbili—“izindleko” zomzila wokucatshangelwa oya esikweleni esifiselekayo (okuhlanganisa nanoma yiziphi izindleko zokuhamba) kanye nesilinganiso sokuthi leso sikwele sikude kangakanani nendawo oya kuyo (okuchemile ukusesha endaweni isiqondiso esifanele).

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Lesi sibonelo sibonisa ukuthi umenzeli uhlola isikwele esisodwa ngesikhathi, isikhathi ngasinye ekhetha esiseduze esithembisa kakhulu. Indlela ewumphumela iyafana ne-BFS, kodwa kucatshangelwe izikwele ezimbalwa kule nqubo - okunomthelela omkhulu ekusebenzeni komdlalo.

Ukunyakaza ngaphandle kwegridi

Kodwa imidlalo eminingi ayindlalwanga kugridi, futhi ngokuvamile akunakwenzeka ukwenza kanjalo ngaphandle kokudela iqiniso. Kudingeka ukuvumelana. Izikwele kufanele zibe zingakanani? Zinkulu kakhulu futhi ngeke zikwazi ukumela kahle amaphasishi amancane noma amajika, amancane kakhulu futhi kuzoba nezikwele eziningi ongazisesha, okuzogcina kuthathe isikhathi esiningi.

Into yokuqala okufanele uyiqonde ukuthi i-mesh isinika igrafu yama-node axhunyiwe. Ama-algorithms we-A* kanye ne-BFS empeleni asebenza kumagrafu futhi awakhathali nhlobo ngemeshi yethu. Singabeka ama-node noma yikuphi emhlabeni wegeyimu: inqobo nje uma kukhona ukuxhumana phakathi kwanoma yimaphi ama-node amabili axhunyiwe, kanye naphakathi kwamaphoyinti okuqala nawokugcina kanye okungenani ne-node eyodwa, i-algorithm izosebenza njengangaphambili. Lokhu kuvame ukubizwa ngokuthi i-waypoint system, njengoba i-node ngayinye imelela isikhundla esibalulekile emhlabeni esingaba yingxenye yanoma iyiphi inombolo yezindlela zokucatshangelwa.

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo
Пример 1: узел в каждом квадрате. Поиск начинается из узла, в котором находится агент, и заканчивается в узле нужного квадрата.

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo
Пример 2: меньший набор узлов (путевых точек). Поиск начинается в квадрате с агентом, проходит через необходимое количество узлов, и затем продолжается до пункта назначения.

Lolu uhlelo oluguquguqukayo ngokuphelele futhi olunamandla. Kodwa ukunakekelwa okuthile kuyadingeka ekunqumeni ukuthi iphoyinti lendlela libekwa kuphi futhi kanjani, ngaphandle kwalokho ama-agent angase angaboni indawo eseduze futhi angeke akwazi ukuqala indlela. Kungaba lula uma singabeka ama-waypoints ngokuzenzakalelayo ngokusekelwe kujometri yomhlaba.

Yilapho i-navigation mesh noma i-navmesh (i-navigation mesh) ivela khona. Lokhu kuvamise ukuba yi-2D mesh yonxantathu embozwa ku-geometry yomhlaba - noma yikuphi lapho i-ejenti evunyelwe ukuhamba khona. Ngamunye wabonxantathu ku-mesh uba i-node kugrafu, futhi unonxantathu abangafika kwabathathu abaseduze ababa amanodi ancikene kugrafu.

Lesi sithombe siyisibonelo esivela enjinini ye-Unity - ihlaziye i-geometry emhlabeni futhi yakha i-navmesh (kusithombe-skrini esiluhlaza okwesibhakabhaka). Ipholigoni ngayinye ku-navmesh indawo lapho i-ejenti ingakwazi ukuma noma isuke isuka kwenye ipholigoni iye kwenye ipholigoni. Kulesi sibonelo, amapholigoni mancane kunezitezi atholakala kuzo - lokhu kwenziwa ukuze kubhekwe usayizi we-ejenti, okuzokwedlulela ngale kwesikhundla saso.

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Singasesha umzila ngale mesh, futhi sisebenzisa i-algorithm ye-A*. Lokhu kuzosinika indlela ecishe iphelele emhlabeni, ecabangela yonke i-geometry futhi ayidingi ama-node angadingekile nokudala ama-waypoints.

Pathfinding — слишком обширная тема, о которой мало одного раздела статьи. Если хотите изучить ее более подробно, то в этом поможет сайт Амита Пателя.

Ukuhlela

Sifunde ngokuthola indlela ukuthi ngesinye isikhathi akwanele ukuvele ukhethe indlela bese sihamba - kufanele sikhethe umzila bese sijika kancane ukuze sifike lapho siya khona. Singawenza jikelele lo mbono: ukufeza umgomo akusona nje isinyathelo esilandelayo, kodwa ukulandelana okuphelele lapho ngezinye izikhathi udinga ukubheka phambili izinyathelo ezimbalwa ukuze uthole ukuthi kufanele kube yini eyokuqala. Lokhu kubizwa ngokuthi ukuhlela. Ukuthola izindlela kungacatshangwa njengesinye sezandiso ezimbalwa zokuhlela. Ngokomjikelezo wethu Wokucabanga/Wokucabanga/Wokwenza, kulapho ingxenye ethi Cabanga ihlela izingxenye eziningi Zomthetho zesikhathi esizayo.

Ake sibheke isibonelo somdlalo webhodi Magic: The Gathering. Sihamba kuqala nesethi elandelayo yamakhadi ezandleni zethu:

  • Ixhaphozi - Inikeza i-mana emnyama e-1 (ikhadi lomhlaba).
  • Ihlathi - linikeza i-mana eluhlaza (ikhadi lomhlaba).
  • I-Fugitive Wizard - Idinga i-mana e-blue ukubiza.
  • Elvish Mystic — требует 1 зеленую ману для призыва.

Оставшиеся три карты игнорируем, чтобы было проще. По правилам игроку разрешено играть 1 карту земли за ход, он может «тапнуть» эту карту, чтобы извлечь из нее ману, а затем использовать заклинания (включая вызов существа) по количеству маны. В этой ситуации игрок-человек знает, что нужно играть Forest, «тапнуть» 1 зеленую ману, а затем вызвать Elvish Mystic. Но как об этом догадаться игровому ИИ?

Простое планирование

Indlela ewubala wukuzama isenzo ngasinye ngokushintshana kuze kube kungabikho abafanelekile abasele. Ngokubheka amakhadi, i-AI ibona ukuthi iSwamp ingadlala ini. Futhi uyayidlala. Ingabe zikhona ezinye izenzo ezisele kuleli jika? Ayikwazi ukubiza i-Elvish Mystic noma i-Fugitive Wizard, njengoba idinga i-mana eluhlaza neluhlaza ngokulandelanayo ukuze ibabize, kuyilapho ixhaphozi lihlinzeka ngemana emnyama kuphela. Futhi ngeke esakwazi ukudlala uForest, ngoba useyidlalile iSwamp. Ngakho-ke, umdlalo we-AI wawulandela imithetho, kodwa awukwenzi kahle. Ingathuthukiswa.

Ukuhlela kungathola uhlu lwezenzo eziletha igeyimu esimweni esifiswayo. Njengoba nje isikwele ngasinye endleleni sasinomakhelwane (ekutholeni indlela), sonke isenzo ohlelweni sinomakhelwane noma abalandelayo. Singabheka lezi zenzo kanye nezenzo ezilandelayo kuze kube yilapho sifika esimweni esifunekayo.

Esibonelweni sethu, umphumela oyifunayo "ubiza isidalwa uma kungenzeka." Ekuqaleni kwejika, sibona izenzo ezimbili kuphela ezivunyelwe yimithetho yomdlalo:

1. Dlala Ixhaphozi (umphumela: Ixhaphozi emdlalweni)
2. Dlala Ihlathi (umphumela: Ihlathi kugeyimu)

Каждое принятое действие может привести к дальнейшим действиям и закрыть другие, опять же в зависимости от правил игры. Представьте, что мы сыграли Swamp — это удалит Swamp в качестве следующего шага (мы его уже сыграли), также это удалит и Forest (потому что по правилам можно сыграть одну карту земли за ход). После этого ИИ добавляет в качестве следующего шага — получение 1 черной маны, потому что других вариантов нет. Если он пойдет дальше и выберет Tap the Swamp, то получит 1 единицу черной маны и ничего с ней не сможет сделать.

1. Dlala Ixhaphozi (umphumela: Ixhaphozi emdlalweni)
1.1 “Thepha” Ixhaphozi (umphumela: Ixhaphozi “lithathiwe”, +1 iyunithi yemana emnyama)
Azikho izenzo ezitholakalayo - END
2. Dlala Ihlathi (umphumela: Ihlathi kugeyimu)

Uhlu lwezenzo lwalufushane, safinyelela ekugcineni. Siphinda inqubo yesinyathelo esilandelayo. Sidlala i-Forest, vula isenzo "thola i-1 mana eluhlaza", okuzovula isenzo sesithathu - biza u-Elvish Mystic.

1. Dlala Ixhaphozi (umphumela: Ixhaphozi emdlalweni)
1.1 “Thepha” Ixhaphozi (umphumela: Ixhaphozi “lithathiwe”, +1 iyunithi yemana emnyama)
Azikho izenzo ezitholakalayo - END
2. Dlala Ihlathi (umphumela: Ihlathi kugeyimu)
2.1 Ihlathi elithi “Tap” (umphumela: Ihlathi “lithentwa”, +1 iyunithi yemana eluhlaza)
2.1.1 Biza u-Elvish Mystic (umphumela: u-Elvish Mystic uyadlala, -1 mana eluhlaza)
Azikho izenzo ezitholakalayo - END

Ekugcineni, sihlole zonke izenzo ezingenzeka futhi sathola icebo elibiza isidalwa.

Lesi isibonelo esenziwe lula kakhulu. Kutuswa ukukhetha uhlelo olungcono kakhulu, kunokuba nje noma yiluphi uhlelo oluhlangabezana nemibandela ethile. Ngokuvamile kungenzeka ukuhlola izinhlelo ezingase zibe khona ngokusekelwe kumphumela noma inzuzo iyonke yokuqaliswa kwazo. Ungazitholela iphuzu eli-1 ngokudlala ikhadi lomhlaba kanye namaphoyinti ama-3 wokubiza isidalwa. Ukudlala ixhaphozi kungaba wuhlelo lwephuzu eli-1. Futhi ukudlala Ihlathi → Thepha Ihlathi → biza u-Elvish Mystic uzonikeza amaphuzu angu-4 ngokushesha.

Вот так работает планирование в Magic: The Gathering, но по той же логике это применяется и в других ситуациях. Например, переместить пешку, чтобы освободить место для хода слона в шахматах. Или укрыться за стеной, чтобы безопасно стрелять в XCOM так. В общем, вы поняли суть.

Ukuhlela okuthuthukisiwe

Kwesinye isikhathi ziningi kakhulu izenzo ezingenzeka ukuze kucatshangelwe zonke izindlela ezingase zibe khona. Ukubuyela esibonelweni esinomlingo: Ukubuthana: ake sithi emdlalweni nasesandleni sakho kunamakhadi amaningana omhlaba nawezidalwa - inani lenhlanganisela yokunyakaza okungaba khona ingaba ngamashumi amaningi. Kunezixazululo eziningana zenkinga.

Indlela yokuqala iwukubopha emuva ngamaketango. Esikhundleni sokuzama zonke izinhlanganisela, kungcono ukuqala ngomphumela wokugcina bese uzama ukuthola umzila oqondile. Esikhundleni sokusuka empandeni yesihlahla siye eqabungeni elithile, sisuka kwelinye icala - sisuka eqabungeni siye empandeni. Le ndlela ilula futhi iyashesha.

Uma isitha sinempilo engu-1, ungathola uhlelo "lwedili 1 noma ngaphezulu". Ukufeza lokhu, imibandela eminingi kufanele ihlangatshezwe:

1. Umonakalo ungadalwa isipelingi - kumele sibe sesandleni.
2. Ukuloya udinga imana.
3. Чтобы получить ману — нужно разыграть карту земли.
4. Ukuze udlale ikhadi lezwe, udinga ukuba nalo esandleni sakho.

Enye indlela engcono kakhulu-ukusesha kokuqala. Esikhundleni sokuzama zonke izindlela, sikhetha efanelekile kakhulu. Ngokuvamile, le ndlela inikeza uhlelo olufanele ngaphandle kwezindleko zokusesha ezingadingekile. I-A* iwuhlobo lokusesha olungcono kakhulu lokuqala - ngokuhlola imizila ethembisa kakhulu kusukela ekuqaleni, ingakwazi kakade ukuthola indlela engcono kakhulu ngaphandle kokuhlola ezinye izinketho.

Inketho yokuqala yokuqala ethokozisayo neyandayo yokusesha i-Monte Carlo Tree Search. Esikhundleni sokuqagela ukuthi yiziphi izinhlelo ezingcono kunezinye lapho kukhethwa isenzo ngasinye esilandelayo, i-algorithm ikhetha abalandela okungahleliwe esinyathelweni ngasinye ize ifike ekugcineni (lapho uhlelo lubangele ukunqoba noma ukunqotshwa). Umphumela wokugcina ube ususetshenziselwa ukwandisa noma ukunciphisa isisindo sezinketho zangaphambilini. Ngokuphinda le nqubo izikhathi ezimbalwa zilandelana, i-algorithm inikeza isilinganiso esihle sokuthi yikuphi umnyakazo olandelayo ongcono kakhulu, noma ngabe isimo sishintsha (uma isitha sithatha isinyathelo sokuphazamisa umdlali).

Ayikho indaba emayelana nokuhlela emidlalweni engaqedwa ngaphandle KokuHlelwa Kwesenzo Okugxile Kumgomo noma i-GOAP (ukuhlelwa kwesenzo okugxile kumgomo). Lena indlela esetshenziswa kakhulu futhi okuxoxiswana ngayo, kodwa ngaphandle kwemininingwane embalwa ehlukanisayo, empeleni kuyindlela yokubuyela emuva esikhulume ngayo ngaphambili. Uma inhloso bekuwuku "cekela phansi umdlali" futhi umdlali engemuva kwekhava, icebo lingaba: ukucekela phansi ngebhomu → ukuthole → ukuliphonsa.

Ngokuvamile kuba nemigomo eminingana, ngayinye inokubaluleka kwayo. Uma inhloso ebaluleke kakhulu ingakwazi ukuqedelwa (ayikho inhlanganisela yezenzo edala uhlelo "lokubulala umdlali" ngoba umdlali akabonakali), i-AI izobuyela emuva kuzinjongo eziphansi.

Ukuqeqeshwa nokuzivumelanisa nezimo

Sesivele sathi igeyimu i-AI ngokuvamile ayisebenzisi ukufunda komshini ngoba ayifanele ukuphatha ama-ejenti ngesikhathi sangempela. Kodwa lokhu akusho ukuthi awukwazi ukuboleka okuthile kule ndawo. Sifuna isitha kumdubuli esingafunda okuthile kuye. Isibonelo, thola mayelana nezindawo ezihamba phambili kumephu. Noma umphikisi kugeyimu yokulwa ongavimba umnyakazo we-combo osetshenziswa njalo womdlali, amkhuthaze ukuthi asebenzise abanye. Ngakho ukufunda ngomshini kungaba usizo kakhulu ezimweni ezinjalo.

Izibalo kanye Namathuba

Ngaphambi kokuba singene ezibonelweni eziyinkimbinkimbi, ake sibone ukuthi singahamba ibanga elingakanani ngokuthatha izilinganiso ezimbalwa ezilula futhi sizisebenzise ekwenzeni izinqumo. Isibonelo, isu lesikhathi sangempela - sinquma kanjani ukuthi umdlali angakwazi ukuqalisa ukuhlasela emizuzwini embalwa yokuqala yegeyimu nokuthi ikuphi ukuzivikela okufanele sizilungiselele ngokumelene nalokhu? Singatadisha isipiliyoni sangaphambilini somdlali ukuze siqonde ukuthi kungaba yini ukusabela okuzayo. Okokuqala, asinayo idatha enjalo eluhlaza, kodwa singayiqoqa - njalo uma i-AI idlala nomuntu, ingaqopha isikhathi sokuhlasela kokuqala. Ngemuva kwamaseshini ambalwa, sizothola isilinganiso sesikhathi esizosithatha ukuze umdlali ahlasele ngokuzayo.

У средних значений есть и проблема: если игрок 20 раз «рашил», а 20 раз играл медленно, то нужные значения будут где-то в середине, а это ничего полезного нам не даст. Одним из решений является ограничение входных данных — можно учитывать последние 20 штук.

Аналогичный подход используется при оценке вероятности определенных действий, предполагая, что прошлые предпочтения игрока будут такими же в будущем. Если игрок атакует нас пять раз фаерболом, два раза молнией и один раз врукопашную, очевидно, что он предпочитает фаербол. Экстраполируем и увидим вероятность использования различного оружия: фаербол=62,5%, молния=25% и рукопашная=12,5%. Нашему игровому ИИ нужно подготовиться к защите от огня.

Enye indlela ethokozisayo ukusebenzisa i-Naive Bayes Classifier ukufunda amanani amakhulu edatha yokufaka futhi uhlukanise isimo ukuze i-AI isabele ngendlela oyifunayo. Abahlukanisi bezigaba base-Bayesia baziwa kakhulu ngokusebenzisa kwabo izihlungi ze-imeyili yogaxekile. Lapho bahlola amagama, bawaqhathanise nalapho lawo magama ake avela khona ngaphambili (kugaxekile noma cha), bese befinyelela iziphetho mayelana nama-imeyili angenayo. Singenza into efanayo ngisho nokufaka okuncane. Ngokusekelwe kulo lonke ulwazi oluwusizo olubonwa i-AI (njengokuthi yiziphi izitha ezidaliwe, noma yiziphi iziphonso ezizisebenzisayo, noma yiziphi ubuchwepheshe ezicwaninge), kanye nomphumela wokugcina (impi noma ukuthula, ukushesha noma ukuvikela, njll.) - sizokhetha ukuziphatha kwe-AI esikufunayo.

Всех этих способов обучения достаточно, но желательно использовать их на основе данных из тестирования. ИИ научится адаптироваться к различным стратегиям, которые использовали ваши плэйтестеры. ИИ, который адаптируется к игроку после релиза, может стать слишком предсказуемым или наоборот слишком сложным для победы.

Адаптация на основе значений

Uma kubhekwa okuqukethwe kwegeyimu yethu kanye nemithetho, singashintsha isethi yamanani athonya ukuthathwa kwezinqumo, kunokuba sisebenzise idatha yokokufaka. Senza lokhu:

  • Vumela i-AI iqoqe idatha ngesimo somhlaba nezehlakalo ezibalulekile phakathi nomdlalo (njengangenhla).
  • Ake siguqule amanani ambalwa abalulekile asekelwe kule datha.
  • Sisebenzisa izinqumo zethu ezisekelwe ekucubunguleni noma ekuhloleni lawa manani.

Isibonelo, umenzeli unamagumbi ambalwa ongakhetha kuwo kumephu yokudubula yomuntu wokuqala. Ikamelo ngalinye linenani lalo, elinquma ukuthi kufiseleka kangakanani ukuvakasha. I-AI ikhetha ngokungahleliwe ukuthi iliphi igumbi okufanele liye kulo ngokusekelwe kunani. Umenzeli ube esekhumbula ukuthi ubulawelwe kuliphi igumbi bese enciphisa inani lalo (amathuba okuthi uzobuyela lapho). Ngokufanayo nesimo esiphambene - uma i-ejenti ibhubhisa abaphikisi abaningi, khona-ke inani lekamelo liyakhula.

Марковская модель

Kuthiwani uma sisebenzisa idatha eqoqiwe ukuze senze izibikezelo? Uma sikhumbula igumbi ngalinye esibona umdlali kulo isikhathi esithile, sizobikezela ukuthi yiliphi igumbi umdlali angase aye kulo. Ngokulandelela nokurekhoda ukunyakaza komdlali kuwo wonke amagumbi (amanani), singawabikezela.

Возьмем три комнаты: красную, зеленую и синюю. А также наблюдения, которые мы записали при просмотре игровой сессии:

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Количество наблюдений за каждой комнатой почти равное — где сделать хорошее место для засады мы до сих пор не знаем. Сбор статистики также осложняется респауном игроков, которые появляются равномерно по всей карте. Но данные о следующей комнате, в которую они входят после появления на карте — уже полезны.

Видно, что зеленая комната устраивает игроков — большинство людей из красной переходят в нее, 50% которых остается там и дальше. Синяя комната наоборот не пользуется популярность, в нее почти не ходят, а если ходят, то не задерживаются.

Но данные говорят нам кое-что более важное — когда игрок находится в синей комнате, то следующая комната, в которой мы его скорее всего увидим будет красной, а не зеленой. Несмотря на то, что зеленая комната популярнее красной, ситуация меняется, если игрок находится в синей. Следующее состояние (то есть комната, в которую игрок перейдет) зависит от предыдущего состояния (то есть комнаты, в которой игрок находится сейчас). Из-за исследования зависимостей мы будем делать прогнозы точнее, чем если бы мы просто подсчитывали наблюдения независимо друг от друга.

Ukubikezela isimo esizayo ngokusekelwe kudatha evela esimweni esidlule kubizwa ngokuthi imodeli ye-Markov, futhi izibonelo ezinjalo (ezinamagumbi) zibizwa ngokuthi amaketanga e-Markov. Njengoba amaphethini amele amathuba oshintsho phakathi kwezifunda ezilandelanayo, aboniswa ngokubukeka njengama-FSM okungenzeka azungeze inguquko ngayinye. Ngaphambilini, sasebenzisa i-FSM ukumela isimo sokuziphatha umenzeli abekuso, kodwa lo mqondo udlulela kunoma yisiphi isimo, kungakhathaliseki ukuthi uhlotshaniswa nomenzeli noma cha. Kulokhu, izifunda zimelela igumbi i-ejenti elihlala kuyo:

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Lena indlela elula yokumela amathuba ahlobene okushintsha kwesimo, enikeza i-AI ikhono elithile lokubikezela isimo esilandelayo. Ungalindela izinyathelo ezimbalwa ezizayo.

Uma umdlali esendlini eluhlaza, kunamathuba angama-50% okuthi uzohlala lapho ngesikhathi esilandelayo lapho ebonwa khona. Kodwa mangakanani amathuba okuthi uzobe esekhona ngisho nangemva kwalokho? Akukhona nje ukuthi kukhona ithuba lokuthi umdlali uhlale egumbini eliluhlaza ngemuva kokubhekwa kabili, kodwa kukhona nethuba lokuthi uhambe wabuya. Nali ithebula elisha licabangela idatha entsha:

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo

Kubonisa ukuthi ithuba lokubona umdlali egumbini eliluhlaza ngemva kokubhekwa kabili lizolingana no-51% - 21% ukuthi uzobe evela egumbini elibomvu, u-5% wabo ukuthi umdlali uzovakashela igumbi eliluhlaza phakathi kwabo, futhi Amaphesenti angu-25 umdlali angeke ashiye igumbi eliluhlaza.

Ithebula limane liyithuluzi elibonakalayo - inqubo idinga kuphela ukuphindaphinda okungenzeka esinyathelweni ngasinye. Lokhu kusho ukuthi ungabheka kude nekusasa nge-caveat eyodwa: sicabanga ukuthi ithuba lokungena ekamelweni lincike ngokuphelele ekamelweni lamanje. Lokhu kubizwa ngokuthi i-Markov Property - isimo esizayo sincike kuphela okwamanje. Kodwa lokhu akulona iqiniso ngo-XNUMX%. Abadlali bangashintsha izinqumo kuye ngezinye izici: izinga lezempilo noma inani lezinhlamvu. Ngenxa yokuthi asirekhodi lawa manani, izibikezelo zethu ngeke zinembe kancane.

I-N-Gram

Kuthiwani ngesibonelo somdlalo wokulwa nokubikezela ukunyakaza kwenhlanganisela yomdlali? Okufanayo! Kodwa esikhundleni sesifunda esisodwa noma umcimbi, sizohlola konke ukulandelana okwakha isiteleka se-combo.

Один из способов сделать это — сохранить каждый ввод (например, Kick, Punch или Block) в буфере и записать весь буфер в виде события. Итак, игрок неоднократно нажимает Kick, Kick, Punch, чтобы использовать атаку SuperDeathFist, система ИИ хранит все вводы в буфере и запоминает последние три, используемые на каждом шаге.

Ungayakha kanjani i-AI yokudlala: umhlahlandlela wabaqalayo
(Imigqa egqamile yilapho umdlali ethula ukuhlasela kwe-SuperDeathFist.)

ИИ увидит все варианты, когда игрок выбрал Kick, следом за другим Kick, а после заметить, что следующий ввод всегда Punch. Это позволит агенту спрогнозировать комбо-прием SuperDeathFist и заблокировать его, если это возможно.

Lokhu kulandelana kwezehlakalo kubizwa ngama-N-grams, lapho u-N eyinani lezakhi ezigciniwe. Esibonelweni sangaphambilini bekuyi-3-gram (trigram), okusho ukuthi: okufakiwe okubili kokuqala kusetshenziselwa ukubikezela okwesithathu. Ngakho, ku-5-gram, okufakiwe okune kokuqala kubikezela okwesihlanu nokunye.

Разработчику нужно тщательно выбирать размер N-грамм. Меньшее число N требует меньше памяти, но и хранит меньшую историю. Например, 2-грамма (биграмма) будет записывать Kick, Kick или Kick, Punch, но не сможет хранить Kick, Kick, Punch, поэтому ИИ не отреагирует на комбо SuperDeathFist.

Ngakolunye uhlangothi, izinombolo ezinkulu zidinga inkumbulo eyengeziwe futhi i-AI izoba nzima kakhulu ukuyiqeqesha njengoba kuzoba nezinye izinketho eziningi. Ukube ubunokufaka okuthathu okungenzeka kwe-Kick, Punch noma Block, futhi sisebenzisa i-10-gram, lokho kungaba izinketho ezihlukene ezingaba yizinkulungwane ezingu-60.

Imodeli ye-bigram iyiketango le-Markov elilula - isimo ngasinye esidlule/ipheya yesimo samanje siyi-bigram, futhi ungakwazi ukubikezela isimo sesibili ngokusekelwe kwesokuqala. Ama-N-grams angu-3 namagremu amakhulu angabuye acatshangwe njengamaketanga e-Markov, lapho zonke izakhi (ngaphandle kweyokugcina ku-N-gram) ndawonye zakha isimo sokuqala kanye nesici sokugcina okwesibili. Isibonelo segeyimu yokulwa sibonisa ithuba lokushintsha usuke ku-Kick and Kick state uye ku-Kick and Punch state. Ngokuphatha okufakiwe komlando wokufakwayo okuningi njengeyunithi eyodwa, empeleni siguqula ukulandelana kokokufaka kube ingxenye yesifunda sonke. Lokhu kusinika impahla ye-Markov, esivumela ukuthi sisebenzise amaketanga e-Markov ukuze sibikezele okokufaka okulandelayo futhi siqagele ukuthi yikuphi ukunyakaza kwe-combo okuzolandela.

isiphetho

Sikhulume ngamathuluzi ajwayelekile nezindlela ekuthuthukisweni kobuhlakani bokwenziwa. Siphinde sabheka izimo okudingeka zisetshenziswe kuzo nalapho ziwusizo kakhulu.

Lokhu kufanele kube ngokwanele ukuqonda izisekelo zomdlalo we-AI. Kodwa, yiqiniso, lezi akuzona zonke izindlela. Okudume kancane, kodwa okusebenzayo okuncane kufaka phakathi:

  • ama-algorithms wokwenza kahle afaka ukukhuphuka kwamagquma, ukwehla kwe-gradient kanye ne-genetic algorithms
  • состязательные алгоритмы поиска/планирования (minimax и alpha-beta pruning)
  • izindlela zokuhlukanisa (ama-perceptron, amanethiwekhi we-neural kanye nemishini yokusekela ye-vector)
  • amasistimu okucubungula ukubona kanye nenkumbulo yama-ejenti
  • izindlela zokwakha ze-AI (amasistimu ayi-hybrid, izakhiwo ze-subset nezinye izindlela zokumboza izinhlelo ze-AI)
  • amathuluzi opopayi (ukuhlela nokuxhumana kokunyakaza)
  • izici zokusebenza (izinga lemininingwane, nganoma yisiphi isikhathi, kanye nama-algorithms okuhlelwa kwezikhathi)

Izinsiza eziku-inthanethi ngesihloko:

1. I-GameDev.net ine ingxenye enezindatshana kanye nezifundo ku-AIFuthi inkundla.
2. I-AiGameDev.com iqukethe izethulo nezindatshana eziningi ngezihloko ezahlukahlukene ezihlobene nokuthuthukiswa komdlalo we-AI.
3. The GDC Vault ihlanganisa izihloko ezivela ku-GDC AI Summit, eziningi zazo ezitholakala mahhala.
4. Izinto eziwusizo zingatholakala nakuwebhusayithi AI Game Programmers Guild.
5. Томми Томпсон, исследователь ИИ и разработчик игр, делает ролики на YouTube-канале I-AI nemidlalo ngencazelo kanye nocwaningo lwe-AI emidlalweni yezentengiso.

Книги по теме:

1. Uchungechunge lwencwadi ye-Game AI Pro iqoqo lezindatshana ezimfushane ezichaza ukuthi zifakwa kanjani izici ezithile noma ukuthi zingaxazulula kanjani izinkinga ezithile.

Igeyimu ye-AI Pro: Ukuhlakanipha Okuqoqiwe Kwabaqeqeshi Begeyimu ye-AI
Game AI Pro 2: Collected Wisdom of Game AI Professionals
Game AI Pro 3: Collected Wisdom of Game AI Professionals

2. Uchungechunge lwe-AI Game Programming Wisdom lwandulela uchungechunge lwe-Game AI Pro. Iqukethe izindlela ezindala, kodwa cishe zonke zibalulekile nanamuhla.

I-AI Game Programming Wisdom 1
I-AI Game Programming Wisdom 2
I-AI Game Programming Wisdom 3
I-AI Game Programming Wisdom 4

3. I-Artificial Intelligence: Indlela Yesimanje — это один из базовых текстов для всех желающих разобраться в общей области искусственного интеллекта. Это книга не о игровой разработке — она учит базовым основам ИИ.

Source: www.habr.com

Engeza amazwana