ZXNet эхоконференция «spbzxnet.games»


тема: Master Of Orion - Speccy, Clon. ;)



от: Ivan Kuvshinov
кому: Aleksey Senilov
дата: 23 Dec 2003

Идеи, теперь, такие: Вооружение кораблей противником, сделать
с помощью генетических алгоритмов. ИИ моделирует сражение, раза
три, со своим предъидущем прототипом и по результатам принимает,
или нет, в серию. Также, со временем, туда будут входить и все
корабли противников, с которыми он повстречался. Причём и
попытки заделать такие корабли из своих деталей, послужат оптим-
зации и обучению ИИ.
Бои. Первое, это надо выявить, приоритетные цели, то есть то,
что уничтожать в первую очередь. Это делается из расчёта:
быстрота ликвидации, причинение ущерба кораблей противника. То
есть моделируются сражения по упрощённому сценарию и оцениваются
корабли противника: очки за каждый убийственный выстрел, за
повреждения систем и просто повреждения (у всех разные
коэффициенты). Так определяются наиболее опасные, но могут быть
и слабые бронёй, но сильные на удар, поэтому дополнительно
моделируются сражения с форой в пару ходов (не отстреливаться),
для реализации возможностей этих задохликов, даже можно не
сражение, а несколькоходовая атака на пассивный по выстрелам
строй. Потом оценивается баланс, на предмет вывести из строя
максимальное количество, наиболее опасных кораблей, в первые
минуты боя.
Очерёдность применения оружия и передвижения, к целям или
расстрел с дальней дистанции и сохранение своих ключевых сил, не
говоря уже о расчёте последствий взрывов и абодаже, как и его
предотвращении - это уже высший пилотаж и должен решаться с
помощью нескольких эвристик и просчёта в глубину на несколько
ходов, как в шахматах. Это тоже реализуемо, но и первый вариант
даст значительный интеллект компьютеру. Вторая часть важна при
выработке тактик, против оригинальных кораблей и захвата планет
и разрушения орбитальных баз.
При создании флотов, для атаки защищённых звёздных систем,
либо облюбованных монстрами, так же придётся проводить
виртуальные учения для определения количества и состава флота
спрвляющегося с этой задачей, при потерях в процентах.. Это же,
может использоваться, для решения о принятии боя.
Да, свои конструкторские подвижки ИИ должен обсчитывать, во
время хода человека. И, что характерно, можно опробовать уже
сейчас, так как наборы вооружения и опыт игры уже есть.

КИА

от: Ivan Kuvshinov
кому: All
дата: 28 Jan 2004

IK> Идеи, теперь, такие: Вооружение кораблей противником,
IK> сделать с помощью генетических алгоритмов. ИИ моделирует
Здесь такой затык. Собственно сам-то генетический алгоритм
прост и работает, но только с обычными генами, а вот здесь
получается иная ситуация. Так как вооружение и системы корабля
ограниченны его объёмом и занимают разное место, да ещё и
некоторые системы его увеличивают, то в процессе скрещивания
геномов - это место деления может прейтись на середину какой-
либо объёмной системы, да и в общем случае, границы генов не
будут совпадать. Конечно, можно пододвинуть чуть в одну или
другую сторону при скрещивании, но оставшееся место придётся
чем-то заполнять, а это шаг в сторону обычного случайного
поиска, да и если система окажется в хвосте, то она скорее всего
будет урезанна, высвобождая много места, которое придётся
заполнить. Что делает весь процесс подобным осаждению песка и
выпячивании больших камней, то есть все ситемы рискуют быть не
включёнными в конфигурацию кораблей, и быть отрезанными, как не
уместившиеся. Да и при прохождении участка скрещивания на
середине такой системы её сдвиг слишком сильно деформирует
соостветствие генов в геноме, что значительно ухудшает
наследственную память и делает весь процесс менее
детерменированным. Есть какие-нибудь идеи?

КИА

от: Ivan Kuvshinov
кому: Ivan Kuvshinov
дата: 01 Feb 2004

IK>>> Идеи, теперь, такие: Вооружение кораблей
IK>>> противником, сделать с помощью генетических алгоритмов.
IK>> другую сторону при скрещивании, но оставшееся место
IK>> придётся чем-то заполнять, а это шаг в сторону обычного
IK>> случайного поиска, да и если система окажется в хвосте, то
IK> Пока, думаю сделать так: разбить все системы и
IK> вооружение на элементарные еденицы и считать экземпляр
IK> укомплектованным, при достаточном количестве едениц
IK> соответствующего типа. Правда заполненность корабля будет,
В общем-то это может заработать, на досуге проверю. Для
этого нужна модель сражения учитывающая эффективность, а не
просто побольше оружия и смять. То есть например, когда я
играл с человком, то построил очень хорошие корабли с
автовсстановлением, благо опыта мне - не занимать, ну и мой
противник построил похожие, в результате чего несмотря на
то, что один такой кораблик, с каждой стороны, мог
остановить целый компьютерный флот, мы немогли причинить
друг другу урон, достаточный, для хоть каких-то видимых
повреждений. Да и из-за пенальти, в свойствах рассы - я
почти не попадал по противнику (он также, специально
использовал технологии усиливающии мой негативный эффект).
Тогда я построил корабли с плазмосетью, которая никогда не
промахивается, да ещё и суммируется от хода к ходу, что
способно погубить, даже такие навороченные корабли, как
наши, а он - гад, уменьшил размер кораблей, сделав
применение моего оружия не эффективным, так как причиняемый
ущерб зависит от размеров корабля, а потеря одного малого
кораблика не сравниться с моим, да и системы он
переориентировал на большую вероятность попадания и в купе
с увеличением количества источников, это привело к
ситуации, когда мои потери дают квадратичный эффект
снижения боеспособности в защите - пришлось отступить.
Здесь же, такую сложную систему вооружения, с ходу
реализовывать - сложно. Так что попробую сыграть на
эффективности ионной пушки, против не защищённых полями
кораблей, либо на эффективности плазмо пушки, против
защищённых полями, за исключением влажного поля, в обоих
случаях. То есть, подставлю противника, соответствующим
образом укомплектованного, и посмотрю на эффективность
выбранного решения, надеюсь оно будет найденно, а не какой-
нибудь середнячёк, с лазерными установками, который будет
чуть сильнее - в среднем.
Теперь самое главное - подобный подход, в реализации
генома, не подходит, для Speccy по причине требуемой
памяти, а именно: у Звезды Смерти, вместимость 1200 едениц,
с коконом 1800 и с мегафлуксером 2400, то есть 2500 байт на
один геном, для 255 видов вооружения, включая системы, поля
и модификации, что может ещё и не хватить. А размер
популяции желателен большой, иначе она будет быстро
вырождаться, конечно эта память, нужна будет
кратковременно, но это ни в какие рамки не лезет - надо
думать дальше, а пока, всё же проверю саму идею, как
настроение будет.

КИА

от: Aleksey Senilov
кому: Ivan Kuvshinov
дата: 02 Feb 2004
Привет тебе, _/Ivan/_!

28 января 2004 18:01, Ivan Kuvshinov писал(а) All:

IK>> Идеи, теперь, такие: Вооружение кораблей противником,
IK>> сделать с помощью генетических алгоритмов. ИИ моделирует
IK> Здесь такой затык. Собственно сам-то генетический алгоритм
IK> прост и работает, но только с обычными генами, а вот здесь
IK> получается иная ситуация. Так как вооружение и системы корабля

IK> середине такой системы её сдвиг слишком сильно деформирует
IK> соостветствие генов в геноме, что значительно ухудшает
IK> наследственную память и делает весь процесс менее
IK> детерменированным. Есть какие-нибудь идеи?

Значит надо все генетические операции производить не на уровне битов. Лучше
всего наверно так: каждая система корабля - это один его ген, и неважно сколько
он занимает места, 1 бит или 100 байт. В любом случае по описанию корабля мы
видим отсутствие или наличие систем, и то, какие именно системы, так что с
определением длин генов не должно быть проблем.

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

Все операции сделать реально и относительно легко. Только ввиду
неопределенности общей длины одной особи надо динамическое распределение
памяти.

До новых встреч! С уважением, Тхэнн.

от: Ivan Kuvshinov
кому: Aleksey Senilov
дата: 26 Feb 2004

AS> Значит надо все генетические операции производить не на
AS> уровне битов.
Да, в общем-то так и есть, но всё равно пришлось
разделить на части, для учитывания объёма.

AS> Лучше всего наверно так: каждая система корабля - это один
AS> его ген, и неважно сколько он занимает места, 1 бит или 100
AS> байт. В любом случае по описанию корабля мы видим отсутств
AS> ие или наличие систем, и то, какие именно системы, так что
AS> с определением длин генов не должно быть проблем.
Стоп, каждый ген - это номер системы или оружия, причём
20 лазеров - это вполне заурядное дело. И, самое главное,
это не наличие или отсутствие систем, а баланс, между ними
и оружием, граничным условием где является -
предоставленное место. Если же рассматривать только
системы, то можно заранее наделать шаблонов, с отличными и
не изменными характеристиками, а в отсутствии некоторых
систем заполнять оружием, но хочется сделать
интеллектуального, подобного человеку противника, который и
ошибиться может и проявит незаурядную гибкость и сможет
играть в очень нестандартных условиях.

AS> Единственная проблема - это грамотная оценочная функция.
Оценочная функция - это результат смоделированных боёв
(скажем, один на один, в защите), с известными, в каждом
конкретном случае, типами кораблей. То есть, игрок будет
делать эффективные против противника корабли, а не вообще,
используя слабые стороны противника.

AS> совсем негодные варианты, и лучших "родителей" для
AS> следующего поколения.
А здесь вопрос тонкий, так как это сузит поле поиска. То
есть негодная особь, это ещё не значит, что в ней плохие
гены. Hапример, развитие популяции происходит так:
появляется несколько элитных вариантов и сразу же
отсеиваются значительное количество средних, так как
вероятность их исключения возрастает, затем в результате
долгих эволюций, во всех остальных особях накапливаются
гены элиты, хотя сами по себе эти особи оцениваются очень
плохо. Если на этом этапе не будет найденн новый геном, то
буквально в течении нескольких мгновений, те, оставшиеся
отличия в "плохих" особях будут устраняться, любым
скрешиванием и популяция выродится - произойдёт, своего
рода клонирование. Этот процесс можно всячески замедлять,
но смысл остаётся тем же.

КИА




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Презентация - о причинах создания нового журнала.
Открытые письма Nemo №6.279
Тусовка - Полный отчет с FunTop'98: часть четвертая. Мнения о Demo compo от Logros, Daniil/Playgear.
Хит-парад - 10 лучших программ,по итогам продаж фирмы Welcome.
Тема ОС - Мыcли по Тeмe ОС: Еcли и дeлать на Sрectrum'e ОСь то только многозадачнyю.

В этот день...   2 мая