Russian AI Cup

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

Автор Тема: Random seed  (Прочитано 775 раз)

tongohiti

  • Jr. Member
  • **
  • Сообщений: 28
Random seed
« : Ноября 16, 2016, 02:12:44 am »

Вопрос про random seed.
В свойствах local runner есть такой параметр:
# Число, которое игровой симулятор будет использовать для инициализации
# генератора случайных чисел или пустая строка.
# Также может задаваться вторым аргументом в командной строке при запуске Local runner'а.
# Параметр в командной строке имеет больший приоритет.
seed=42
Ставлю туда, как в примере, 42, запускаю local runner и вижу: Game.getRandomSeed() = -3095447905682661842 То есть в стратегию прилетело совершено другое число. Почему?

Мой use case такой: запускаю стратегию без указания seed (в этом случае будет случайный seed, как я понял) и вижу в поведении стратегии некую странность, которую мне надо отдебажить, для этого local runner нужно несколько раз перезапустить. Чтобы обеспечить повторяемость, требуется указать seed такой же, как для игры, когда странность была замечена - но облом!

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

Есть идеи?
Записан

sergeadamenko

  • Newbie
  • *
  • Сообщений: 5
Re: Random seed
« Ответ #1 : Ноября 16, 2016, 12:06:50 pm »

seed последней сыгранной игры по идее можно взять из game.log, который пишется local-runner'ом в той же папке по умолчанию.
Записан

Adler

  • Jr. Member
  • **
  • Сообщений: 31
Re: Random seed
« Ответ #2 : Ноября 16, 2016, 01:15:32 pm »

Подтверждаю. Вместо seed из local-runner-sync.default.properties в cpp-cgdk(32-bit) в game.getRandomSeed() прилетает какой-то мусор.

Использую local-runner.jar(14 ‎ноября ‎2016 ‎г., ‏‎1:06:57)
Записан

sskolot

  • Full Member
  • ***
  • Сообщений: 137
Re: Random seed
« Ответ #3 : Ноября 16, 2016, 01:38:41 pm »

Если я правильно понимаю, есть два разных seed. Один, который в конфиге local-runner, это seed собственно local-runner-а. А тот, который отдаётся стратегии - это отдельный seed и локально он задаётся через параметры командной строки (там же, ip и где порт)
Записан

Adler

  • Jr. Member
  • **
  • Сообщений: 31
Re: Random seed
« Ответ #4 : Ноября 16, 2016, 02:22:20 pm »

Сделал 5 запусков своей стратегии с разным seed:
seed -> rndseed.
7 -> 5641644681582647244
7 -> 5641644681582647244
8 -> -9112437044027683311
7 -> 5641644681582647244
8 -> -9112437044027683311

похоже sskolot прав.
Записан

tongohiti

  • Jr. Member
  • **
  • Сообщений: 28
Re: Random seed
« Ответ #5 : Ноября 16, 2016, 04:11:02 pm »

Если я правильно понимаю, есть два разных seed. Один, который в конфиге local-runner, это seed собственно local-runner-а. А тот, который отдаётся стратегии - это отдельный seed и локально он задаётся через параметры командной строки (там же, ip и где порт)
Если верить комментарию в local-runner.properties, то "# Также может задаваться вторым аргументом в командной строке при запуске Local runner'а.
# Параметр в командной строке имеет больший приоритет." То есть параметр в командной строке и параметр в файле - одного поля сущности.
Плюс как правильно выше заметил Adler, для одного и того же seed в файле всегда прилетает одно и то же значение seed в стратегию, т.е. сид стратегии - это скорее всего какая-то функция (м.б. хеш) от сида в файле. Вопрос как отреверсить или отключить.
Записан

mortido

  • Full Member
  • ***
  • Сообщений: 80
Re: Random seed
« Ответ #6 : Ноября 16, 2016, 04:30:55 pm »

Это имеет смысл. Т.е. при одном сиде локалраннера стратегия получит один и тот же сид, но не будет знать сид локал раннера. И теоретическая возможность полностью смоделировать положения бонусов/миньонов/деревьев отпадает.
Записан

tongohiti

  • Jr. Member
  • **
  • Сообщений: 28
Re: Random seed
« Ответ #7 : Ноября 17, 2016, 05:07:20 am »

Это имеет смысл. Т.е. при одном сиде локалраннера стратегия получит один и тот же сид, но не будет знать сид локал раннера. И теоретическая возможность полностью смоделировать положения бонусов/миньонов/деревьев отпадает.
Это имеет смысл при тестировании настоящих игр на сервере, но мешает как раз в локале. Локал раннер-то какой смысл обманывать :)
Записан
Страницы: [1]