miniaicups icon indicating copy to clipboard operation
miniaicups copied to clipboard

расчет времени и выдача 'time_left' в FileClient, рефакторинг

Open Pro100AlexHell opened this issue 5 years ago • 5 comments

Pro100AlexHell avatar Aug 01 '19 22:08 Pro100AlexHell

Продолжение (и, надеюсь, окончание) истории, начатой в https://github.com/MailRuChamps/miniaicups/issues/265

Смысл в том, чтобы добавить параметр time_left в сообщения, чтобы стратегия знала, сколько времени по мнению сервера ей осталось на выполнение. Предыдущий PR делал это только для серверного кода, оставив Local Runner за бортом. Данный PR исправляет это, обобщив логику подсчёта времени для TcpClient и FileClient, чтобы всё работало единообразно и на сервере и в LR.

tongohiti avatar Aug 02 '19 00:08 tongohiti

С этими изменениями стратегия запущенная под отладчиком начнет получать таймауты (если задуматься в отладчике)

alex3d avatar Aug 02 '19 05:08 alex3d

В оригинале с этим флагом:

parser.add_argument('-t', '--timeout', type=str, nargs='?', help='off/on timeout', default='on')

видимо его же надо приспособить в тайм-аут, или другой флаг но название конечно классное "--timeout" а по факту это тики считает и если я сделаю "--time_limit" то это тоже про тики будто бы будет :)

потом проверка флага и самого тайм-аута

 def game_loop_wrapper(dt):
         is_game_over = loop.run_until_complete(Runner.game.game_loop())
         if is_game_over or (args.timeout == 'on' and Runner.game.tick >= MAX_TICK_COUNT):

доделать могу на случай запуска под отладчиком - придется задавать этот флаг в пути к localrunner.py и будет проверяться и у меня в FileClient тоже


P.S. вообщем решил добавить флаг parser.add_argument('--ai-timeout', type=str, nargs='?', help='off/on AI execution time limit', default='off') т.е. начальное значение = "БЕЗ ПРОВЕРКИ ТАЙМ_АУТА ДЛЯ AI" чтобы для всех под отладчиком работало без тайм-аута, чтобы для большинства не пришлось лезть в параметры и чето менять,

и только кто захочет валидировать тайминги-бота - пусть задает localrunner.py флаг '--ai-timeout=on' и у него будет тайминг вычитаться

Pro100AlexHell avatar Aug 02 '19 14:08 Pro100AlexHell

Время MAX_EXECUTION_TIME придумано, чтобы подсчитать вычислительные ресурсы необходимые для проведения AiCups. По идее оно не должно кому-либо мешать. Если у большинства стратегии начинают упираться в эти ограничения, то мы найдём способ их увеличить.

xammi avatar Aug 09 '19 13:08 xammi

Коммит был сделан чтобы считать время в FileClient т.к для отладки своих ботов, а он считался только в TcpClient, т.е без сервера это нельзя было потестить. Хотя сейчас уже с конфликтами, вобщем смотрите сами - хотите - внесите аналог в master.

Pro100AlexHell avatar Aug 09 '19 14:08 Pro100AlexHell