Russian AI Cup

Расширенный поиск  
Страницы: [1] 2 3

Автор Тема: Здесь шарим свои наработки после окончания песочницы!  (Прочитано 21533 раз)

access_denied

  • Sr. Member
  • ****
  • Сообщений: 282

Дело идет к концу, давайте после этого конца пошарим тут свои наработки по стратегии и коду, в свободной форме.
Лидеры, думаю, напишут статьи, а простым смертным будет удобнее выложить на форуме :-)
Записан

kipar

  • Jr. Member
  • **
  • Сообщений: 12

Я написал краткую историю тут: http://www.gamedev.ru/flame/forum/?id=182390&page=32#m473
код вот: https://sourceforge.net/p/codetroopers2013/code/HEAD/tree/
Хотя конечно место во второй сотне, гордится особо нечем. Но не удивлюсь если моя стратегия окажется худшей в категории "стратегии с перебором своих и чужих ходов и генетической оптимизацией коэффициентов".
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

Я написал краткую историю тут: http://www.gamedev.ru/flame/forum/?id=182390&page=32#m473
код вот: https://sourceforge.net/p/codetroopers2013/code/HEAD/tree/
Хотя конечно место во второй сотне, гордится особо нечем. Но не удивлюсь если моя стратегия окажется худшей в категории "стратегии с перебором своих и чужих ходов и генетической оптимизацией коэффициентов".

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

CyberWo1f

  • Full Member
  • ***
  • Сообщений: 105

Что за нидерландский конкурс? МОжно поподробней?
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

Что за нидерландский конкурс? МОжно поподробней?
тсс  там уже один россиянин за первое место и так борется.
других конкурентов для себя не вижу, своих только боюсь  :-\

одно слово это у нас Ломоносовы, Пушкины и другие умные головы рождаются , мы Европу - Америку и прочий мир мозгами питаем.
Записан

amurushkin

  • Sr. Member
  • ****
  • Сообщений: 189

я в прошлом году там участвовал. делали игру symple. меня угораздило делать на питоне и в финале половину игр я проиграл по лимиту времени. хотя стратегия играла довольно неплохо. мне с моим же ботом играть понравилось. А в этом году меня что то смущает поле как сделано. Не хочется браться. Я решил что буду штурмовать конкурс от MIT. там тоже боевые боты
Записан

jetblack

  • Newbie
  • *
  • Сообщений: 7

https://bitbucket.org/jetblack/code-troopers/src - мое чудо.
Получилось неплохо, код показывать не стыдно)
Записан

angor

  • Newbie
  • *
  • Сообщений: 4

я в прошлом году там участвовал. делали игру symple. меня угораздило делать на питоне и в финале половину игр я проиграл по лимиту времени. хотя стратегия играла довольно неплохо. мне с моим же ботом играть понравилось. А в этом году меня что то смущает поле как сделано. Не хочется браться. Я решил что буду штурмовать конкурс от MIT. там тоже боевые боты
А есть какой-нибудь ресурс, где можно было бы узнавать обо всех этих конкурсах?
Записан

o_o

  • Jr. Member
  • **
  • Сообщений: 29

Своё чудо расшарю, только если кто-то это попросит, а так засорять интернет не буду(у меня 27 место в финале, 20 сейчас в песочнице)
Сам очень хочу посмотреть код первых 10 финалистов.
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

я в прошлом году там участвовал. делали игру symple. меня угораздило делать на питоне и в финале половину игр я проиграл по лимиту времени. хотя стратегия играла довольно неплохо. мне с моим же ботом играть понравилось. А в этом году меня что то смущает поле как сделано. Не хочется браться. Я решил что буду штурмовать конкурс от MIT. там тоже боевые боты
А есть какой-нибудь ресурс, где можно было бы узнавать обо всех этих конкурсах?

да, но знаю только этот: http://russianaicup.ru/forum/
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

https://bitbucket.org/jetblack/code-troopers/src - мое чудо.
Получилось неплохо, код показывать не стыдно)

не остановили еще песочницу чтоб публиковать стратегии из топ 50!   ;)
Записан

Hohol

  • Full Member
  • ***
  • Сообщений: 101

jetblack, а как вы смогли наладить отправку кода со своими пакетами? Я вот ниасилил http://russianaicup.ru/post/9#comment-748
Записан

santa324

  • Full Member
  • ***
  • Сообщений: 142

https://bitbucket.org/jetblack/code-troopers/src - мое чудо.
Получилось неплохо, код показывать не стыдно)
А мне стыдно, у меня там куча мусора от неудачных экспериментов, чистить лень :)
Но если кому интересно (вдруг не найдется в TOP20 никого с альфабетой) могу поделиться.
Записан

jetblack

  • Newbie
  • *
  • Сообщений: 7

jetblack, а как вы смогли наладить отправку кода со своими пакетами? Я вот ниасилил http://russianaicup.ru/post/9#comment-748
https://bitbucket.org/jetblack/code-troopers/src/491471342c106c14c4cdea20f166b8997d8b4ec6/src/main/java/common/Packager.java?at=master
Сделал на коленке такую вот утилиту для инлайна всех файлов в дефолтный пакет с удалением импортов.
Записан

Hohol

  • Full Member
  • ***
  • Сообщений: 101

jetblack крутяк, а я поленился)
Записан

baho

  • Newbie
  • *
  • Сообщений: 19

http://yadi.sk/d/zBfOSe3lENR9L

Мои наработки. Есть exe-шники всех версий, можно стравливать со своими, кто-то в личке интересовался. Параметры command line как у обычной версии с сайта.
Есть последний скомпиленый экзешник, можно посмотреть GUI в работе. Правда одна функция выпилена (второй кобмобокс), т.к. в финал не вошла версия функции, которая нужна для нее.
Комментов очень мало, английский кривой, так что прошу не придираться :)
Записан

Cooler

  • Full Member
  • ***
  • Сообщений: 98

А вот моё... В исходниках, конечно, вагон мусора, так что выкладываю две версии - старая менее захламлена и лишена рудиментов неудачной попытки реализации углубленного перебора :)
http://spectromancer.com/trash/submit_v60.zip - эта версия достигла моего наивысшего рейтинга в Песочнице - 3309.
http://spectromancer.com/trash/submit_v37.zip - эта версия была на 5-м месте в первой части 2-го раунда.
Архивы содержат как исходники, так и скомпилированный exe.
Записан

NightmareZ

  • Jr. Member
  • **
  • Сообщений: 41
Записан

amurushkin

  • Sr. Member
  • ****
  • Сообщений: 189

А есть какой-нибудь ресурс, где можно было бы узнавать обо всех этих конкурсах?

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

DVS

  • Hero Member
  • *****
  • Сообщений: 688

код писался при недостатке времени, до сегодняшнего дня побыл в топ 100 всего лишь..

но раз такой массовый экгсцибизм.. :)

 :-[

..

в секцию

Следующие ошибки возникли при попытке отправки сообщения: Сообщение превышает максимально допустимую длину (20000 знаков).

Записан

Hohol

  • Full Member
  • ***
  • Сообщений: 101

Эх, собирался я написать здоровенную статью как в прошлом году, и выложить на хабр, да так толком и не собрался =(
Кароч вот код
https://github.com/Hohol/HoholTroopers

Конечно, по одному лишь коду трудно будет понять что-то. Но если кому-то все же интересно посмотреть, обратите внимание на тесты (что лежат в папке test). По ним можно понять большую часть того, что умеет моя стратегия.

Только по поводу тестов замечание. Я ниасилил придумать простой способ проверять достижимость одной клетки из другой в соответствии с определением из правил. Поэтому для тестов я изменил это определение на более простое. Все так же, но юниты способны видеть и стрелять лишь по вертикали и горизонтали (гранату кидают как обычно). По этому определению я формирую массив visibilities, и алгоритмы работают с этим массивом, уже не задумываясь о достижимости. Такое странное определение вроде бы ничуть не помешало мне оттестировать все что я хотел. Был лишь один недостаток - невозможность смоделировать ситуацию, когда из клетки A видна клетка B, но не наоборот. Специально для таких случаев я просто явно указывал, что из этой клетки видно вот эту.

А кто-нибудь писал зачем-нибудь правильную проверку достижимости?
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

Цитировать
А кто-нибудь писал зачем-нибудь правильную проверку достижимости?

Зачем?

скопировать для карты массив достижимостей, который пришел из локал раннера для карты, собственно все...
Записан

Hohol

  • Full Member
  • ***
  • Сообщений: 101

Зачем-зачем, как мне - для тестов, например.
Записан

Cooler

  • Full Member
  • ***
  • Сообщений: 98

А кто-нибудь писал зачем-нибудь правильную проверку достижимости?
В чем смысл писать свою проверку, а не использовать исходный массив?
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

А кто-нибудь писал зачем-нибудь правильную проверку достижимости?
В чем смысл писать свою проверку, а не использовать исходный массив?

я на это тоже намекал :)   нас разводят?  скорее всего  :D
Записан

Hohol

  • Full Member
  • ***
  • Сообщений: 101

Мм, а мое предыдущее сообщение что, не отображается? Давайте повторю.
Зачем-зачем, как мне - для тестов, например.
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

хотя если задаться целью писать автогенерируемые карты, и сделать пошаговую стратегию на основе своего ИИ..
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

Мм, а мое предыдущее сообщение что, не отображается? Давайте повторю.
Зачем-зачем, как мне - для тестов, например.

не.. Вы пишите свою стратегию на основе этой игры, другое объяснение неправдоподобно..   >:(
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

записываюсь в альфа беты тестеры
Записан

Hohol

  • Full Member
  • ***
  • Сообщений: 101

А кто добился наибольшего успеха, используя генетические алгоритмы, или еще что-нибудь модное искусственно-интеллектуальное? (У меня простой перебор с кучей ручных эвристик повсюду)
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

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

еще пара тройка тысячилетий, и игра ГО тоже будет просчитана до последнего хода  :-[
Записан

access_denied

  • Sr. Member
  • ****
  • Сообщений: 282

Своё чудо расшарю, только если кто-то это попросит, а так засорять интернет не буду(у меня 27 место в финале, 20 сейчас в песочнице)
Сам очень хочу посмотреть код первых 10 финалистов.
А эта тема на форуме не считается за просьбу, надо персонально каждому?
Записан

angor

  • Newbie
  • *
  • Сообщений: 4

Мой код:
https://bitbucket.org/AGordienko/codetroopers
(код кривой, с безграмотными комментариями)

У меня тоже обычный перебор только для текущего солдата.
После 2ого раунда занимался только дуэлями и новый код включался только в играх 1-на-1.
(и уже только после финала расширил эти правки для всех типов игр).

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

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

santa324

  • Full Member
  • ***
  • Сообщений: 142

Ну раз такое дело, вот мое:
https://github.com/santa324/Santa324Troopers.git

Применил модификацию альфабеты с плавающей глубиной перебора, эвристик старался сделать минимум, максимум перебора.
Пришлось переделывать на побитовые операции, хранить состояние трупера в одном инте и т.п. для ускорения и уменьшения потребления памяти. Получилось довольно быстро, хотя и далеко не предел. Уперся в скорость оценочной ф-ции а дальше упрощать ее уже не стал - проигрывал не из-за нехватки глубины перебора.
« Последнее редактирование: Декабря 16, 2013, 11:40:49 am от santa324 »
Записан

CyberWo1f

  • Full Member
  • ***
  • Сообщений: 105

Может кто выложит исходники визуализатора? =) Очень интересно научится на примере самому такое делать =)
Записан

baho

  • Newbie
  • *
  • Сообщений: 19

Так выше уже навыкладывали. Мой выложен, правда на C++. У Cooler'а вроде тоже есть визуализатор, там наверно на паскале. Или тебе на питоне обязательно надо? :)
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

Так выше уже навыкладывали. Мой выложен, правда на C++. У Cooler'а вроде тоже есть визуализатор, там наверно на паскале. Или тебе на питоне обязательно надо? :)

Крутто, паскаль еще жив.  8)

я вот в Нидерландах вспоминаю паскаль, как же неудобно методы класса реализовывать вне класса..
и остальное тоже уже неудобно по сравнению с С#, и все в жертву однопроходного компилятора.
Записан

noop

  • Full Member
  • ***
  • Сообщений: 73

А кто-нибудь писал зачем-нибудь правильную проверку достижимости?
Я писал, я даже сабмитил стратегию с нею, с одной из самых первых версий.
http://russianaicup.ru/post/1#comment-1383   :)
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

А кто-нибудь писал зачем-нибудь правильную проверку достижимости?
Я писал, я даже сабмитил стратегию с нею, с одной из самых первых версий.
http://russianaicup.ru/post/1#comment-1383   :)
а все таки зачем это делать если есть готовый массив?
Записан

JustAMan

  • Full Member
  • ***
  • Сообщений: 105

Возможно, затем, что в тестах генерируются не те же самые карты, на которых идёт соревнование?
Записан

Megabyte

  • Jr. Member
  • **
  • Сообщений: 27

Шарю свою страту
https://www.dropbox.com/s/7i9ouvm33n35sek/MyStrategy.cs
Там есть несколько #if макросов, которые подключают дебаг отрисовку и форму отладчика. Отладчик я расшаривать не буду, там только контролы и канвас для отрисовки. Весь код все равно в файле стратегии.

Ниже текст, который я написал неделю назад: считать больше написать нечего : )

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

Туман войны заливает карту волной. После разведки туман чистится, и заливается только вероятная область расположения врага. Пока туман далеко, солдаты бегают не пригибаясь и ничего не боясь. Боятся солдаты только затуманенных клеток. Если они стоят по обе стороны от низкого препятствия, то пригибаться не станут. : )
Взаимодействие только на уровне общей точки сбора, и клетки находящиеся за спиной друга считаются в 10 раз менее опасными.
Есть детекция очередности ходов с противником, которая учитывается при расчете урона врагу. Если врага можно убить до следующего его хода, то его валят, не боясь получить от него урона, главное не попасть в обзор видимости.

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

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

noop

  • Full Member
  • ***
  • Сообщений: 73

а все таки зачем это делать если есть готовый массив?
Потому что в своем раннере хотелось иметь:
a) Кастомные тесты
б) Для каждой новой карты нужно снова дампить массивы видимости
в) Хочется иметь поддержку своих карт
г) Я не полностью доверял генератору видимости от организаторов :) Паранойя, да :P
.. но свой раннер так и не был написан в связи с обновлениями в штатном раннере.
Записан

Cooler

  • Full Member
  • ***
  • Сообщений: 98

Может кто выложит исходники визуализатора? =) Очень интересно научится на примере самому такое делать =)
Выкладываю:
http://spectromancer.com/trash/Debugger.rar - это визуализатор (нужно компилить в одной папке со стратегией - есть общий файл!)
http://spectromancer.com/trash/MyRunner.rar - это мой ЛокалРаннер (вдруг кому пригодится...)
Записан

Cooler

  • Full Member
  • ***
  • Сообщений: 98

я вот в Нидерландах вспоминаю паскаль, как же неудобно методы класса реализовывать вне класса..
и остальное тоже уже неудобно по сравнению с С#, и все в жертву однопроходного компилятора.
В паскале стопиццот лет как многопроходный компилятор. А отделение реализации от декларации - это такой принцип, придуманный вовсе не ради однопроходности компиляции. Кому-то может не нравится, бывает... Я лично никаких неудобств по этому поводу не ощущаю,  скорее наоборот :)
<holywar>А C# зато только под вынь :)</holywar>
Записан

CyberWo1f

  • Full Member
  • ***
  • Сообщений: 105

Может кто выложит исходники визуализатора? =) Очень интересно научится на примере самому такое делать =)
Выкладываю:
http://spectromancer.com/trash/Debugger.rar - это визуализатор (нужно компилить в одной папке со стратегией - есть общий файл!)
http://spectromancer.com/trash/MyRunner.rar - это мой ЛокалРаннер (вдруг кому пригодится...)

Спасибо огромное! Завтра будем посмотреть!=)
Записан

nutic

  • Newbie
  • *
  • Сообщений: 15

Цитировать
<holywar>А C# зато только под вынь :)</holywar>

А как же Mono?
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

я вот в Нидерландах вспоминаю паскаль, как же неудобно методы класса реализовывать вне класса..
и остальное тоже уже неудобно по сравнению с С#, и все в жертву однопроходного компилятора.
В паскале стопиццот лет как многопроходный компилятор. А отделение реализации от декларации - это такой принцип, придуманный вовсе не ради однопроходности компиляции. Кому-то может не нравится, бывает... Я лично никаких неудобств по этому поводу не ощущаю,  скорее наоборот :)
<holywar>А C# зато только под вынь :)</holywar>

и free pascacal и delphi - однопроходные с изначальных времен!
для того форвардные объявления функций там есть :)
Записан

DVS

  • Hero Member
  • *****
  • Сообщений: 688

Цитировать
<holywar>А C# зато только под вынь :)</holywar>

А как же Mono?

а Mono они не подключили :(
Записан

olexiyo

  • Newbie
  • *
  • Сообщений: 21

Мой код (болтался около 30-го места сразу после финала, потом перестал обновлять): github.com/OlexiyO/CodeTroopers
Записан
Страницы: [1] 2 3