На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru


Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Игра + AI
    ...а События в шашках думаю не трудно записать - координаты фигур.. imho пойдет.
      Я имел в виду абстракции!
      Какая разница к чему привязано Событие (не путать с Event)? Это просто объект, содержащий начальные условия и последовательности действий участников конфликта. Опыт - это не то же самое, что и событие. Он может содержать "память" о одном или нескольких событиях. Самое главное в опыте - оценка полезности конкретных действий. Например.
      Шашки. Событие вырождается в описание расположения фигур. Опыт будет непосредственно содержать копию События. Все фишки стоят в начальной позиции. Выбор хода. Смотрим в Хранилище Опыта и ищем Опыт, содержащий событие, аналогичное начальному состоянию партии - схожесть 1, если не находим - ищем максимально похожее - с наименьшим числом отклонений. Опыт также содержит оценку "полезности" того или иного хода. Находим ход с наибольше пользой. Если нет статистики - нам надо подумать - запускаем виртуальную партию и перебираем все возможные ситуации. Делаем ход и запоминаем, какой опыт мы применили, для того, чтобы дать оценку конкретному действию. Действия оцениваются так: если в результате действия была принесена непосредственная польза в размере a1, то польза от действия = a1 / 1. Если польза a2 была принесена на втором ходу = a1 / 1 + a2 / 2
      Таким образом польза от хода будет равна sum(i = 1 -> n, ai / i). ai - может быть отрицательным. На самом деле должны существовать более научные подходы, но я предлагаю стратегию, которая может сочетаться с любой из формул. После партии статистика накапливается в Опыт. Если статистика была собрана в результате обдумывания - вводим для неё коефициенты неуверенности - один для положительных результатов "пользы", другой - для отрицательных. Таким образом мы можем задавать характер нашему "разуму" - он может быть у нас оптимистом, писсимистом, рисковым парнем (см. коеф. риска). Если есть N возможных ходов, польза от которых не меньше, чем Max * ( 1 - RiskKoef), то выбор нужного действия производим среди них случайным образом.

      Где-то так...  ::)
        Цитата Shaman, 29.08.03, 12:09:58
        Самое главное в опыте - оценка полезности конкретных действий.


        В вот в этом то вся фишка. Не так то это просто -  представить а1 или а2 в реальных числах..  или представить пользу в такой форме а=0 - не было потерь с ни с одной из сторон, а=1 - мы убили одного противника а=-N - наших положили и т.д? Правильно и События должны, несомненно, записываться в абстракной форме...(в какой только?)  Как-то быть универсальными для шашек и других игр.. А так алгоритм реальный!
          всё ето конечно хорошо, но обладает теми же недостатками, что и статьи с dushkin.boom.ru , в частности

          1. сложностью, я бы даже сказал наукообразностью формулировок.
          2. отсутствием законченности идеи, отчего всё это превращается в рассуждения "если бы да кабы".
          3. и как следствие, отсутствием математической красоты.

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

          а касаемо похожести - так ето тоже голубая мечта всех программистов - универсальный алгоритм для определения похожести одной ситуации на другую. для каждой игры надо будет отдельно думать, как определить похожесть.

          оценка ситуации - опять же отдельный разговор. по идее наилучшая оценка - это значение типа boolean, знаменующее то, какой игрок выиграет, если оба игрока будут ходить из данной ситуации оптимально, или число очков выигрыша в конце игры, если игра ведётся на деньги. но здесь возникают некоторые трудности принципиального характера. вопервых, как уже упоминалось, рассчитать игру до конца в большинстве случаев не представляется возможным. вовторых противник может играть далеко не оптимально, стало быть в идеале для различных противников надо применять различные оценки. таким образом, идеальную оценку зачастую невозможно придумать, и вместо неё применяют различные высосанные из пальца функции или формируют оценочную функцию с помощью нейронных сетей (т е на входе сети игровое поле, на выходе число - оценочная функция, сеть предварительно оптимизируют дарвином или градиентным спуском, проето даже в программе гордона рассказывали). более того, есть игры вроде карточных, где есть элемент случайности, и тогда выигрыш зависит от удачи, и появляется мотивация действовать по принципу "пан или пропал", т е совершать такие ходы, которые приведут к выигрышу лишь с некоторой вероятностью.

          лично я всёже склоняюсь к тому, что надо продолжать искать щастья в нейронных сетях и распределённых системах. ну например вариант аи для стратегии: у каждого юнита есь нервная система (я думаю, хватит однослойной), и несколько чисел (например два), назовём их по аналогии с живыми организмами уровнями гормонов. также юнит может выделять во внешнюю среду "запахи", представляемые опять же числами на игровой карте и распространяющиеся по закону диффузии (например тоже два различных запаха). стало быть входом нейронной сети служит уровень гормонов данного юнита, уровень запахов по четырём сторонам (чтобы определить, в какой стороне источник), игровая ситуация вблизи юнита и состояние самого юнита (здоровье, поражающая способность, скорость и т. п.). на выходе - сколько надо выделить гормонов, запахов, и собственно команды - пойти, атаковать, ещё чтото сделать. гормоны и запахи постепенно самопроизвольно исчезают по экспоненциальному закону с некоторой скоростью. основное преимущество такой схемы - относительно малое количество чисел, подлежащих оптимизации. почему я ето пишу? просто я хочу ето дерьмо написать применительно к конкретной стратегии и посмотреть, как оно будет работать, а все проекты стратегий на данном форуме почемутоникогда не доходят до стадии написания. так мож щас ктолибо сподобится написать стратегию?? всмысле мне лень её писать самому.

          что же касается других моих измышлений на ету тему, то они страдают теми же 3мя недостатками, даже в ещё большей степени :(.

          зы.. нильсон в печатном виде и пишется через о.
            ОК. Мнение понятно... ;)
            А то что писать под каждую игру отдельные вещи, (типа оценок) - так это само-собой :)
            Вот только подход надо было бы выбрать правильный ;) если использовать патерны проектирования (разложить задачу на составные части и реализовать абстрактный движок, но сначала - на бумаге ;) ), то можно сократить время для конкретных реализаций. Кроме того - это позволит понять задачу гораздо лучше ;)
              Цитата wormball, 30.08.03, 17:09:10

              1. сложностью, я бы даже сказал наукообразностью формулировок.
              2. отсутствием законченности идеи, отчего всё это превращается в рассуждения "если бы да кабы".
              3. и как следствие, отсутствием математической красоты.


              Ага.. Читали наверное КТ о корнях чел-кой мысли? (Август что-ли .. какой-то из номеров..) А там формулировки какие были? Скорее врача - психотерапевта! Так, конечно, тоже нельзя, но... Wormball, ты что хочешь интегралы по контуру брать??.. IMHO AI это, скорее алгоритмическая проблема и вариант "склад + нач. склада" (как скелет модели) подходит реально..  Тут можно чего-нибудь прикинуть. А в нейронных сетях.. Этой пробделе наверное уже лет 20 (минимум) немерянно уже яйцеголовых доцентов в почтовх ящиках кандидатские защитили.. И где они? Сети нейронные.. Нетути!
              Сообщение отредактировано: Nickolay111 -
                кт не читал, но одобряю 8D
                по моему глубокому убеждению любой мысли грош цена, если её нельзя проверить экспериментально. да и вся современная наука держится на данном постулате. а нейронным сетям уже под 40 лет ;D.
                а аристотелевской логике вобще более 2000 лет ;D
                Сообщение отредактировано: wormball -
                  Цитата wormball, 09.09.03, 15:23:17
                  любой мысли грош цена, если её нельзя проверить экспериментально....
                  а аристотелевской логике вобще более 2000 лет

                  Ну, сколько лет аристотелевской локиги , да и логики вообще, известно... Но, на самом деле, не каждую мысль можно проверить экспериментально... а если и могут быть проверены экспериментально, то это это будет такая проверка которая по-любому уничтожит мысль(идею) в её метафизической плоскости... Более того, мысль эк-но вообще проверить нельзя. Это другая материя. Факт. Вот пример. Конечно можно говорить о физической нелепости парадоксов Зенона и это будет правильно. С точки зрения физики (механики) Но если смотреть шире, то можно задуматься (неслабо) о парадоксах пространства и времени..
                  (Ладно, я не сумашедший! :) Только что выписался :) )
                  Сообщение отредактировано: Nickolay111 -
                    мы тут кто? философы или программисты? задача-то у нас - написать искусственный интеллект, а не пофилософствовать.
                      Да, все правильно, сорри... Иногда чего-то находит..
                        2shaman

                        а у нас ещё есть ;D ;D ;D ;D ;D ;D ;D

                        я давно предлагал одну из тем закрыть ;D
                          2 wormball: спасибо за совет.
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:




                          Рейтинг@Mail.ru
                          [ Script execution time: 0,0463 ]   [ 15 queries used ]   [ Generated: 10.05.24, 08:49 GMT ]