Russian AI Cup

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

Автор Тема: А как вы тестируете свои стратегии?  (Прочитано 10356 раз)

angor

  • Newbie
  • *
  • Сообщений: 4
А как вы тестируете свои стратегии?
« : Декабря 08, 2013, 10:57:44 pm »

Интересно, кто как тестирует свои стратегии?

Я запускал в локал-раннере 100+ боев с предыдущей версией.
Все было хорошо до вчерашнего дня, когда я весь день улучшал, тестировал только локально,
добился выигрыша новой версии у старой в 60+%, за пару часов до старта второй волны залил на сайт,
потестил руками и... новый вариант против лидеров стал визуально гораздо слабее. Пришлось откатываться к предыдущей версии.

Получается, что тестировать только со старым вариантом плохо. Кто как поступает?
Записан

baho

  • Newbie
  • *
  • Сообщений: 19
Re: А как вы тестируете свои стратегии?
« Ответ #1 : Декабря 08, 2013, 11:16:21 pm »

Тестировал только с предыдущим вариантом. Но 100+ боев это не серьезно, я уже упоминал, что у меня проценты начинают устаканиваться только на нескольких сотнях боев, а еще лучше на нескольких тысячах. За пару дней до финала сделал в тестере разделение статистики по картам, вот это очень полезная штука. Часто бывало, что какие-то улучшения годны для одних карт и работают хуже на других. Становится понятнее, где можно подкрутить, чтобы и там и там работало приемлимо.
Версии после заливки проверял только на предмет, чтобы не глючили, все равно те несколько штук, что можно запустить, не дадут реальной картины.
Кстати, вариант локального тестирования работает, только если твой отряд хоть как-то перемещается по карте :) есть ведь варианты, когда бойцы не хотят шевелиться. У меня на некоторых картах такое встречалось, им просто кажется, что дальше везде опасно и они тупят.
PS: Сам в перерыве тоже кучу всего перелопатил, посмотрел на результат локального тестирования, разочаровался, все откатил назад, сделал парочку понятных изменений, проверил и залил.
Записан

Alchemist

  • Newbie
  • *
  • Сообщений: 13
Re: А как вы тестируете свои стратегии?
« Ответ #2 : Декабря 08, 2013, 11:42:05 pm »

Локально не тестировал. Оно и видно по результату :)
Записан

Cooler

  • Full Member
  • ***
  • Сообщений: 98
Re: А как вы тестируете свои стратегии?
« Ответ #3 : Декабря 08, 2013, 11:57:28 pm »

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

Hohol

  • Full Member
  • ***
  • Сообщений: 101
Re: А как вы тестируете свои стратегии?
« Ответ #4 : Декабря 09, 2013, 12:05:46 am »

85 килобайт юнит-тестов
Записан

baho

  • Newbie
  • *
  • Сообщений: 19
Re: А как вы тестируете свои стратегии?
« Ответ #5 : Декабря 09, 2013, 12:14:09 am »

О, вот это интересно! Юнит-тесты для оценки функций на правильность результата или даже тесты логики? Т.е. оценки правильности поведения юнитов в какой-то конкретной ситуации? Если честно, второй вариант себе вообще очень туманно представляю. Но на первый взгляд выглядит прикольно.
Записан

nutic

  • Newbie
  • *
  • Сообщений: 15
Re: А как вы тестируете свои стратегии?
« Ответ #6 : Декабря 09, 2013, 12:37:44 am »

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

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

Каждую новую версию стравливала со смартгаями по пять боев на каждой карте (это занимало по 10-15 минут! и казалось мне ужасно долгим). Не суперточная оценка, но очевидные фейлы или баги находила.

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

Hohol

  • Full Member
  • ***
  • Сообщений: 101
Re: А как вы тестируете свои стратегии?
« Ответ #7 : Декабря 09, 2013, 01:46:02 am »

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

Пара примеров не тривиальных но и не слишком сложных тестов:

@Test
void doNotBlockPathForTeammates() {
        //большие буквы - наши юниты, маленькие - враги, # - препятствие (самое высокое)
        //S - Soldier, C - Commander
setMap(
"S####",
"C...s"
);

check(
COMMANDER, //чей ход
5, //action points
MyMove.MOVE_EAST, MyMove.shoot(4, 1) //делаем шаг, чтобы дать возможность штурмовику тоже пострелять
);
}

    @Test
    void maximizeNumberOfStepsEnemyMustMakeToHideFromYou() {
        //R - snipeR, F - Field medic
        setMap(
                "...######",
                "R2.....1f"
        );
        check(
                SNIPER,
                8,
                MyMove.MOVE_NORTH, MyMove.MOVE_EAST, MyMove.MOVE_EAST, MyMove.MOVE_SOUTH //если стоять на месте, враг спрячется за одно действие, а так только за два
        );
    }

Сама яростный адепт тдд
Теперь я, кажется, тоже. Это был мой практически первый опыт написания чего-либо в таком стиле. И я им очень доволен.

Возможно, позже напишу статью о своем выступлении и расскажу все подробно. (К чему призываю и остальных топовых участников)
Записан

Cooler

  • Full Member
  • ***
  • Сообщений: 98
Re: А как вы тестируете свои стратегии?
« Ответ #8 : Декабря 09, 2013, 02:06:36 am »

Классная идея с тестами! Жаль не додумался что-то подобное использовать - очень бы пригодилось! :)
Записан

noop

  • Full Member
  • ***
  • Сообщений: 73
Re: А как вы тестируете свои стратегии?
« Ответ #9 : Декабря 09, 2013, 04:08:10 am »

Эти тесты прекрасны :) Хотел делать свой раннер с тестами эталонных боев на микро-картах, да так за три недели и не сделал :(
Записан

olexiyo

  • Newbie
  • *
  • Сообщений: 21
Re: А как вы тестируете свои стратегии?
« Ответ #10 : Декабря 09, 2013, 05:36:29 am »

Я сохранял дампы игр в файл, и проверял, что действие (или последовательность действий) похожи на ожидаемое
Записан

GRaAL

  • Jr. Member
  • **
  • Сообщений: 10
Re: А как вы тестируете свои стратегии?
« Ответ #11 : Декабря 09, 2013, 06:17:57 am »

Тоже писал тесты, типа таких, для простейших действий (не запирать друг друга, лечить больных, убегать если опасно). Очень помогло при переписывании предсказателя действий - хоть тестов было и немного, но большую часть багов они отловили на ура.
        [TestMethod]
        public void CommanderStuck()
        {
            Init(new string[] {
                "       ",
                "m      ",
                " x     ",
                "cx     ",
                "sx     ",
                "       "
            });
            SuggestMove(medic);
            AssertMove(medic, Direction.South);
            SuggestMove(medic);
            AssertNoMove(medic);   

            //now get stuck
            SuggestMove(commander);
            AssertNoMove(commander);

            //medic goes away and let commander continue
            SuggestMove(medic);
            AssertMove(medic, Direction.North);
            SuggestMove(commander);
            AssertMove(commander, Direction.North);
        }

Но, к сожалению, обеспечить нормальное покрытие времени не хватило. В итоге больше проверялось визуально с последующим анализом логов. Для битв генерировал вот такие странички (http://alexeygrishin.github.io/Russian-AI-Cup-2013/battle3-b1.html), чтобы взглянуть "глазами бойцов", но так, наверное, много кто делал.
Записан

CyberWo1f

  • Full Member
  • ***
  • Сообщений: 105
Re: А как вы тестируете свои стратегии?
« Ответ #12 : Декабря 09, 2013, 07:00:54 am »

А я так и не научился пользоваться CellVIsibilities, да и времени хватило только на то, чтобы попасть по добору во второй раунд =) Программа - минимум выполнена =) Я вообще тестировал со смартами в основном в локал раннере. Даже не догадался заливать новую версию, потом опять старую, чтобы вдруг чего не слиться, и тестировать с реальными игроками. Мне интересно, может кто сказать, где и чего почитать про ИИ, Этот турнир был моим первым подобным опытом. Интересно было бы попытаться составить карту с оценками, или там карту видимости. Можете, конечно, ответить после окончания песочницы =)
Записан

access_denied

  • Sr. Member
  • ****
  • Сообщений: 282
Re: А как вы тестируете свои стратегии?
« Ответ #13 : Декабря 09, 2013, 09:18:51 am »

Удивляюсь производительности и результативности некоторых людей - тесты, сравнение со старой стратегией, отход, чтобы освободить дорогу другому бойцу...
Читая тут, думаю - чего я вообще сунулся?
Я тестировал против трех смартов визуально, выиграли с большим перевесом на большинстве карт - хорошо, заливаем.
Проиграли/затупили - смотрим логи и разбираемся.
Как стать таким же умным? :-)
Записан

Alchemist

  • Newbie
  • *
  • Сообщений: 13
Re: А как вы тестируете свои стратегии?
« Ответ #14 : Декабря 09, 2013, 09:54:45 am »

Удивляюсь производительности и результативности некоторых людей - тесты, сравнение со старой стратегией, отход, чтобы освободить дорогу другому бойцу...
Так в этом и секрет :)
«если бы мне предложили за 8 часов срубить дерево, то 6 из них я бы точил топор»
Записан

olexiyo

  • Newbie
  • *
  • Сообщений: 21
Re: А как вы тестируете свои стратегии?
« Ответ #15 : Декабря 09, 2013, 10:00:15 am »

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

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

А битву со старыми версиями написать быстрее, чем один раз прогнать против смартов на всех картах по разу :) Кроме того, смарты -- это как проверять уровень футболиста по игре с пустыми воротами, не в обиду смартам :)
Записан

access_denied

  • Sr. Member
  • ****
  • Сообщений: 282
Re: А как вы тестируете свои стратегии?
« Ответ #16 : Декабря 09, 2013, 11:31:45 am »

Ну вот, опять расстроился, что не на то время потратил :-(
Записан

baho

  • Newbie
  • *
  • Сообщений: 19
Re: А как вы тестируете свои стратегии?
« Ответ #17 : Декабря 09, 2013, 12:57:15 pm »

Большинство тестов проверяют именно логику. И немножко тестов - какие-то определенные функции.
Практически каждой фиче, которой обучен мой бот, соответствуют один-два теста.
Отлично! Спасибо! Сильно задумался, буду тоже пытаться внедрять. Сразу же открыл кучу возможностей для себя :) Не в конкурсе конечно, на него уже скорее всего забью совсем, итак времени было потрачено предостаточно.
Записан

vovo4ka

  • Jr. Member
  • **
  • Сообщений: 34
Re: А как вы тестируете свои стратегии?
« Ответ #18 : Декабря 09, 2013, 01:10:24 pm »

А мне проще графическую информацию воспринимать, вот я и сделал рисовалку используемой бойцами информации.

Но лучше бы потратил время на допиливание стратегии, так как в самое последнее время его не оказалось.  :(
Записан

baho

  • Newbie
  • *
  • Сообщений: 19
Re: А как вы тестируете свои стратегии?
« Ответ #19 : Декабря 09, 2013, 01:21:01 pm »

Рисовалку я сделал первым делом. Еще до написания стратегии :)
И, в общем-то, не прогадал, думаю времени мне сэкономила выше крыши.
Вот моя:
Записан

CyberWo1f

  • Full Member
  • ***
  • Сообщений: 105
Re: А как вы тестируете свои стратегии?
« Ответ #20 : Декабря 09, 2013, 01:27:05 pm »

И как работает ваша рисовалка? Я просто не совсем понимаю. Это своеобразный локал раннер для тестов? или как её использовать?
Записан

Hohol

  • Full Member
  • ***
  • Сообщений: 101
Re: А как вы тестируете свои стратегии?
« Ответ #21 : Декабря 09, 2013, 01:29:36 pm »

Блин, а я рисовать нормально ни в чем не умею, а тратить на обучение время во время конкурса не хочется. Так что только консоль, только хардкор)
Записан

baho

  • Newbie
  • *
  • Сообщений: 19
Re: А как вы тестируете свои стратегии?
« Ответ #22 : Декабря 09, 2013, 01:35:41 pm »

В мою рисовалку встроена моя текущая стратегия. Из нее уже можно запускать local-runner с разными параметрами. Можно разовую битву, тогда на поле отрисовывается текущая информация, доступная моим бойцам. Ну и тут же можно запустить глобальный тестер в несколько потоков, но уже конечно без графики, будет выдаваться простая статистика процента побед.
Записан

kvagus

  • Newbie
  • *
  • Сообщений: 8
Re: А как вы тестируете свои стратегии?
« Ответ #23 : Декабря 09, 2013, 03:13:14 pm »

baho, а сколько примерно времени ушло на такую рисовалку, со всем встроенным в нее, кроме собственно стратегии? это офигенно)
Записан

baho

  • Newbie
  • *
  • Сообщений: 19
Re: А как вы тестируете свои стратегии?
« Ответ #24 : Декабря 09, 2013, 03:37:59 pm »

Не считал, но думаю не мало. Хотя и не так много, как может показаться. Все таки QT мощь и сила для такого. Больше времени у меня ушло на наладку многопоточного тестирования.
Да все равно без таких инструментов у меня вообще бы ничего не получилось, так что почти ни о чем не жалею :)
Записан

Cooler

  • Full Member
  • ***
  • Сообщений: 98
Re: А как вы тестируете свои стратегии?
« Ответ #25 : Декабря 09, 2013, 03:59:38 pm »

Рисовалку я сделал первым делом. Еще до написания стратегии :)
Аналогично - сперва сделал рисовалку, потом уже выложил стратегию :)
(не знаю как тут вставить изображение...)
« Последнее редактирование: Декабря 09, 2013, 04:05:14 pm от Cooler »
Записан

sskolot

  • Full Member
  • ***
  • Сообщений: 137
Re: А как вы тестируете свои стратегии?
« Ответ #26 : Декабря 09, 2013, 04:12:25 pm »

Многопоточное тестирование - мне лично сильно помог std::thread из нового стандарта и 2013 студии :) Без него я бы даже и думать не стал о генетической настройке. Правда такая настройка в данной задаче практически бесполезна из-за метода оценки и тестирования. Выставленные ручками константы оказались в среднем лучше. http://imgur.com/gUmk2o5 (картинка до того, как я узнал, как запускать консольные процессы в фоне)
Записан

nakilon

  • Full Member
  • ***
  • Сообщений: 98
Re: А как вы тестируете свои стратегии?
« Ответ #27 : Декабря 09, 2013, 04:38:49 pm »

А мне проще графическую информацию воспринимать, вот я и сделал рисовалку используемой бойцами информации.

Но лучше бы потратил время на допиливание стратегии, так как в самое последнее время его не оказалось.  :(

ну ппц у тебя картинкохостинг
Записан

nakilon

  • Full Member
  • ***
  • Сообщений: 98
Re: А как вы тестируете свои стратегии?
« Ответ #28 : Декабря 09, 2013, 04:41:09 pm »

Блин, а я рисовать нормально ни в чем не умею, а тратить на обучение время во время конкурса не хочется. Так что только консоль, только хардкор)
Аналогично ..( И давно не пишу декстопных приложений с гуями, в которых нарисовать что-то в окне было раз плюнуть.
Есть идея как-то проецировать в HTML-страницы с яваскриптом на канвасе и пр.
Записан

noop

  • Full Member
  • ***
  • Сообщений: 73
Re: А как вы тестируете свои стратегии?
« Ответ #29 : Декабря 09, 2013, 04:41:31 pm »

Планы создания рисовалки и своего раннера с кастомными картами на Qt были съедены гриппом и авралом на работе. А потом я решил, что точа топор, могу не успеть приступить, собственно, к рубке дерева. Хотя скажем, еще в первых выложенных версиях стратегии была своя генерация видимости, написанная для этого самого раннера. Не пригодилась в конечном счете.
Дебажил в дебагере, чередуя Visual Studio и xcode. Смотрел только логи действий и промежуточных карт в консоли. Есть платформонезависимые обертки для замера времени исполнения.
Серьезными скриптованными тестами в новом официальном раннере занимался только по последнюю неделю, кажется. Была простенькая утилитка для подведения статистики и генерации всех возможных файлов .properties со всеми возможными параметрами, черт бы их побрал(неужели так сложно было брать всё это из командной строки?). Автотесты мог параллельно запускать на работе и домашнем виндовом компе, пока кодил на маке, а забирал из дропбокса. Все равно протестировать таким образом удалось немного. Пока завершатся длительные тесты, обычно успеваешь написать фичу, из за которой старая версия безнадежно устаревает, очень большая задержка между написанием кода и достоверными результатами тестирования боев с ним. Только в последние часы обнаружил, что забагованный языковой пакет не закрывает сокет при завершении работы, из за чего их вскоре начинает не хватать и приходится вставлять паузы между запусками тестов.
На новых картах бои даже не успевал просмотреть глазами. Мне было невдомек, что большинство побед последней моей стратегии достигаются кемперством, отстрелом всех сунувшихся, прижавшись к краю карты, и она во многих случаях даже не может покинуть эту позицию. Или что к второму раунду финала я напрочь запорол веса для карты cheeser(днем ранее у меня вообще не было детекта карт), и принял за успешную игру просто необычно длительное "везение". Возможно, занял бы на место выше, если б не это.
А вообще, было запланировано, отчасти реализовано и не закончено: визуализатор, свой раннер, глубокий перебор с ДП-оптимизацией, более правильная оценка опасности, несколько потенциально очень полезных стратегических эвристик. Такие дела. :)
Записан

noop

  • Full Member
  • ***
  • Сообщений: 73
Re: А как вы тестируете свои стратегии?
« Ответ #30 : Декабря 09, 2013, 05:22:24 pm »

Здесь что, нельзя сообщения редактировать? Хотел опечатки поправить - и на тебе..
Записан

Hohol

  • Full Member
  • ***
  • Сообщений: 101
Re: А как вы тестируете свои стратегии?
« Ответ #31 : Декабря 09, 2013, 05:24:50 pm »

А зачем чередовать студию и xcode?
Записан

noop

  • Full Member
  • ***
  • Сообщений: 73
Re: А как вы тестируете свои стратегии?
« Ответ #32 : Декабря 09, 2013, 05:35:47 pm »

А зачем чередовать студию и xcode?
Дома разработку предпочитал вести в xcode и большая часть кода написана в нем, а на работе, в свободные минутки, кодил и дебажил в студии. У обеих сред свои плюсы. У Xcode лучше, например, автодополнение и подсветка ошибок, зато в студии более привычный отладчик. На работе - три монитора, что позволяет дебажить в одном, держать окно раннера в другом, а лог в третьем :) Еще у этих компиляторов разные статические анализаторы, не полностью пересекаются наборы ошибок и предупреждений, что позволило мне поправить некоторые проблемы до загрузки стратегии на сайт.
Записан

Hohol

  • Full Member
  • ***
  • Сообщений: 101
Re: А как вы тестируете свои стратегии?
« Ответ #33 : Декабря 09, 2013, 05:54:56 pm »

Еще у этих компиляторов разные статические анализаторы, не полностью пересекаются наборы ошибок и предупреждений, что позволило мне поправить некоторые проблемы до загрузки стратегии на сайт.
Прикольно. Буду в следующий раз писать в Идее, Эклипсе и Нетбинсе :)
Записан

noop

  • Full Member
  • ***
  • Сообщений: 73
Re: А как вы тестируете свои стратегии?
« Ответ #34 : Декабря 09, 2013, 06:05:24 pm »

Прикольно. Буду в следующий раз писать в Идее, Эклипсе и Нетбинсе :)
Не знаю, как у вас с джавой, но в C/С++, особенно при использовании новых диалектов, то что у одного компилятора - отключенное по умолчанию предупреждение у другого - серьезная ошибка. Я уж молчу про то, что майки ненавидят C и не поддерживают C99, а Эппл аналогично относится к C++ и отладка/рефакторинг C++ там - дело не из приятных.
Записан

Megabyte

  • Jr. Member
  • **
  • Сообщений: 27
Re: А как вы тестируете свои стратегии?
« Ответ #35 : Декабря 09, 2013, 06:30:52 pm »

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

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

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

santa324

  • Full Member
  • ***
  • Сообщений: 142
Re: А как вы тестируете свои стратегии?
« Ответ #36 : Декабря 09, 2013, 06:50:11 pm »

Ого, Megabyte, сколько времени ты потратил на все это?
Я поленился всем этим заниматься, написал альфабетту а оценочную подбирал на глазок. Правда вышло не очень, не попал даже в финал :)

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

amurushkin

  • Sr. Member
  • ****
  • Сообщений: 189
Re: А как вы тестируете свои стратегии?
« Ответ #37 : Декабря 09, 2013, 09:14:33 pm »

Да размах визуализатора от Megabyte впечатлил.  Если не секрет, что означают кружочки в клетках 10,9 и 5,9?
Записан

sskolot

  • Full Member
  • ***
  • Сообщений: 137
Re: А как вы тестируете свои стратегии?
« Ответ #38 : Декабря 09, 2013, 09:28:43 pm »

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

brainfarm

  • Newbie
  • *
  • Сообщений: 1
Re: А как вы тестируете свои стратегии?
« Ответ #39 : Декабря 09, 2013, 09:52:45 pm »

sskolot
Точно такое же ощущение, ахах)
Записан

Cooler

  • Full Member
  • ***
  • Сообщений: 98
Re: А как вы тестируете свои стратегии?
« Ответ #40 : Декабря 09, 2013, 10:07:15 pm »

Мой визуализатор (полный размер по ссылке:
« Последнее редактирование: Декабря 09, 2013, 10:09:06 pm от Cooler »
Записан

CyberWo1f

  • Full Member
  • ***
  • Сообщений: 105
Re: А как вы тестируете свои стратегии?
« Ответ #41 : Декабря 09, 2013, 10:18:51 pm »

Такой визуализатор можно на python написать? или проще в студии какой нибудь?
Записан

Megabyte

  • Jr. Member
  • **
  • Сообщений: 27
Re: А как вы тестируете свои стратегии?
« Ответ #42 : Декабря 09, 2013, 11:15:28 pm »

Писал не сразу, начинал с простой сетки. Отмотку боя назад написал за два дня до финала : ) редактор констант за пять дней до финала.

Красные круги, это местоназначение команды (если нет врагов, указывает на ближайший нужный бонус). Если враг есть, указывает на ближайшую к центру команды точку, из которой юнит с максимальным радиусом стрельбы может застрелить супостата. : )

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

Хотел еще добавить добавление врагов и бонусов кликом, для моделирования и отладки ситуации. Но уже все. : )
Записан

slash

  • Newbie
  • *
  • Сообщений: 13
Re: А как вы тестируете свои стратегии?
« Ответ #43 : Декабря 10, 2013, 12:11:38 am »

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

Блин, ребята, смотрю и офигеваю, как мне вообще удалось выиграть у этим монстров. Графическую оболочку была конечно мысль написать, но как и Hohol, я этого делать не умею, последняя графическая прога была написана еще в школе, причем там только простейший канвас был, даже без форм. Хотя порой такой оболочки весьма не хватало.

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

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

Даже до запуска своей стратегии против предыдущей версией дело у меня не дошло, все отлаживал на смартах, потом сразу заливал на сервер и вызывал топов. Ну а там repeater и дебаггер.
Записан

slash

  • Newbie
  • *
  • Сообщений: 13
Re: А как вы тестируете свои стратегии?
« Ответ #44 : Декабря 10, 2013, 12:14:05 am »

(слэш на дефолт карте только ангору проиграл) :)
Да это было только в первой волне. Дальше там все было ровнее в районе 5 поражений за волну.
Записан

access_denied

  • Sr. Member
  • ****
  • Сообщений: 282
Re: А как вы тестируете свои стратегии?
« Ответ #45 : Декабря 10, 2013, 10:26:33 am »

Рисовалку я сделал первым делом. Еще до написания стратегии :)
И, в общем-то, не прогадал, думаю времени мне сэкономила выше крыши.
Вот моя:

Я только это бы делал месяц!
А тут пишут - пришлось написать свою визуализацию, без нее не перло. Так, походя, как вспомогательный инструмент.
Чувствую себя безнадежным слоупоком :-(
Записан

CyberWo1f

  • Full Member
  • ***
  • Сообщений: 105
Re: А как вы тестируете свои стратегии?
« Ответ #46 : Декабря 10, 2013, 10:50:13 am »

Я только это бы делал месяц!
А тут пишут - пришлось написать свою визуализацию, без нее не перло. Так, походя, как вспомогательный инструмент.
Чувствую себя безнадежным слоупоком :-(

И не ты один! Мне вообще интересно, написать визуализатор с интеграцией в него локал ранера или репитера, это по силам только java программистам, или любой более-менее разбирающийся человек сможет это сделатЬ?
Записан

baho

  • Newbie
  • *
  • Сообщений: 19
Re: А как вы тестируете свои стратегии?
« Ответ #47 : Декабря 10, 2013, 10:58:19 am »

Тот же Qt для Python существует и очень даже отлично существует. Посмотрите, на нем подобные вещи делаются очень просто. Конечно для этого придется немного его поизучать, но это можно и в процессе работы. Я сам впервые на python с Qt познакомился, писал тулзу по работе для создания и редактирования спрайтовых атласов.
На счет интеграции раннера, его же не обязательно переписывать с нуля, у меня это просто вызов javaw local-runner.jar с параметрами доступными всем. Ну разве что доступ ко всем плюшкам, типа запуска со своей стратегией, я получил раньше, расковыряв local-runner.jar и написав свой небольшой run.class. К сведению: java не знаю почти совсем, разве что похожий с C/C++ синтаксис помогает разбираться.
Записан

CyberWo1f

  • Full Member
  • ***
  • Сообщений: 105
Re: А как вы тестируете свои стратегии?
« Ответ #48 : Декабря 10, 2013, 11:14:41 am »

Baho, Спасибо, будем посмотреть =)
Записан

olexiyo

  • Newbie
  • *
  • Сообщений: 21
Re: А как вы тестируете свои стратегии?
« Ответ #49 : Декабря 11, 2013, 09:24:21 am »

Аплодисменты всем, кто визуализировал :) Супер

Пробовал без тестов, но очень быстро новые изменения стали ломать старые.
Поскольку рисовать не умею, дебажил итеративно:
+) Беру бой, который моя стратегия слила
+) Смотрю, где она ошиблась (по моему мнению)
+) Делаю скриншот
+) Запускаю бой еще раз, сохраняя все внутреннее состояние на диск
+) Создаю тест типа "загрузить ситуацию, принять решение -- проверить, что решение как хочу"
+) Чиню константы / пишу код пока тест не проходит
+) Повторяю
Записан
Страницы: [1] 2