Открытое соревнование по программированию искусственного интеллекта

Правила

Проект

Песочница

Раунд 1

Раунд 2

Финал

Последние комментарии

17 мая 13:42: penetrationtest написал комментарий в посте Закрытие Russian AI Cup 2018
17 мая 13:15: xaleraf4ra написал комментарий в посте Закрытие Russian AI Cup 2018
16 мая 18:56: xalerafera написал комментарий в посте Закрытие Russian AI Cup 2018
16 мая 15:42: xalerafera написал комментарий в посте Закрытие Russian AI Cup 2018
16 мая 15:37: xalerafera написал комментарий в посте Закрытие Russian AI Cup 2018
16 мая 15:37: xalerafera написал комментарий в посте Закрытие Russian AI Cup 2018
16 мая 15:36: xalerafera написал комментарий в посте Закрытие Russian AI Cup 2018
16 мая 15:35: xalerafera написал комментарий в посте Закрытие Russian AI Cup 2018
19 февраля 23:14: karloid написал комментарий в посте Закрытие Russian AI Cup 2018
19 февраля 13:38: tyamgin написал комментарий в посте Закрытие Russian AI Cup 2018

Группа ВКонтакте

Telegram-чат

 

Вы можете скачать подробные правила в формате PDF. В них изложен формат проведения турнира, дано описание игрового мира и технических характеристик объектов.

Актуальная версия:

  • 27 декабря: 1.1.0.

Также правила в tex формате опубликованы на GitHub

Также, чтобы проверить аспекты игровой механики, вы можете попробовать поиграть.



Adler

Adler

Дзержинск

Все ограничения по времени распространяются не только на код участника, но и на взаимодействие клиента-оболочки стратегии с игровым симулятором -1

17.12.2018 0:46:55
Flyasd1

В коде движка на странице 10 в функции update. Есть две переменные robot.action.target_velocity и robot.target_velocity. Это одно и тоже?

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

17.12.2018 11:15:08
AlexKol

В коде движка на странице 10 в функции update. Есть две переменные robot.action.target_velocity и robot.target_velocity . Это одно и тоже? И еще мне не понятно, почему в обычном движении сначала меняют размер этого вектора, а потом вычитают из текущей скорости, а в использовании буста, сначала вычитают скорость, а потом меняют размер?

Мне кажется в robot.action скорость не нормированная.

17.12.2018 11:40:50
Flyasd1

Я не нашел, а где считается коллизия мяча с ареной и с роботами?

17.12.2018 12:00:07
Combat_Goose

Как работает функция clamp для 3D вектора? Вот пример из доки - target_velocity = clamp( robot.action.target_velocity, ROBOT_MAX_GROUND_SPEED.

Допустим ROBOT_MAX_GROUND_SPEED=30, robot.action.target_velocity=(100, 50, 10), Что вернет clamp()?

17.12.2018 12:24:22
AlexKol

Как работает функция clamp для 3D вектора? Вот пример из доки - target_velocity = clamp( robot.action.target_velocity, ROBOT_MAX_GROUND_SPEED. Допустим ROBOT_MAX_GROUND_SPEED=30, robot.action.target_velocity=(100, 50, 10), Что вернет clamp()?

velocity*abs(Max_ground_Speed/length(velocity)) я думаю что то такое

17.12.2018 12:36:18
AlexKol

AlexKol

BB

Или не, это вернет если length(velocity) > Max_ground_Speed. Иначе velocity

17.12.2018 12:37:30
Combat_Goose

разумно, но неплохо бы подтверждение от организаторов

17.12.2018 12:45:59
Flyasd1

Я не нашел, а где считается коллизия мяча с ареной и с роботами?

Коллизии мяча с ареной нашел, а вот мяча с роботами нет.

17.12.2018 12:58:54
AlexKol

Коллизии мяча с ареной нашел, а вот мяча с роботами нет.

function collide_entities(a: Entity, b: Entity):

17.12.2018 12:59:53
Flyasd1

function collide_entities(a: Entity, b: Entity):

Функция есть. Где она вызывается?

17.12.2018 13:01:45
kuviman

kuviman

СГУ им. Чернышевского

Как работает функция clamp для 3D вектора? Вот пример из доки - target_velocity = clamp( robot.action.target_velocity, ROBOT_MAX_GROUND_SPEED. Допустим ROBOT_MAX_GROUND_SPEED=30, robot.action.target_velocity=(100, 50, 10), Что вернет clamp()?

Функция clamp ограничивает длину вектора.

clamp(vector, length) — возвращает vector, если его длина меньше length, иначе normalize(vector) * length.

17.12.2018 13:38:18
Flyasd1

В формуле расчета коллизий используется переменная a.radius_change_speed, но нигде не описано, что это такое.

17.12.2018 13:41:19
AlexKol

AlexKol

BB

а что за операция dot(vector, vector)? По идее возвращает число

17.12.2018 15:22:48
Failman

Failman

Мытищи

AlexKol

AlexKol

BB

а что за операция dot(vector, vector)? По идее возвращает число

Ну, очевидно dot product (вики)

17.12.2018 15:33:33
artem.votincev

artem.votincev

Ижевск

function update(delta_time: float):

Можно ли рассчитывать на то, что delta_time будет всегда одинаковый? Ато в бота он не передается, а на ускорение влияет.

17.12.2018 16:00:35
AlexKol

AlexKol

BB

clamp( point.x, arena.bottom_radius - (arena.goal_width / 2), (arena.goal_width / 2) - arena.bottom_radius, )

Что это делает?

17.12.2018 17:26:26
Combat_Goose

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

Может кто-нибудь перефразировать, чтобы стало понятно, о чем речь?

17.12.2018 23:39:42
NightmareZ

NightmareZ

безработный

Как можно однозначно разбить свою команду на первого и второго?

18.12.2018 5:17:25
arukim

arukim

Санкт-Петербург

NightmareZ

NightmareZ

безработный

Как можно однозначно разбить свою команду на первого и второго?

только по Robot.id, Внутри каждого хода порядок следования роботов одного игрока разный

18.12.2018 6:30:17
j303

j303

Москва

Всем привет. Из документации много не понятно. Например: __________________________________ robot.radius = ROBOT_MIN_RADIUS + (ROBOT_MAX_RADIUS - ROBOT_MIN_RADIUS) * robot.action.jump_speed / ROBOT_MAX_JUMP_SPEED robot.radius_change_speed = robot.action.jump_speed __________________________________ Число robot.action.jump_speed остаётся неизменным на протяжении всех 100 подтиков(MICROTICKS_PER_TICK)? Либо оно действует только первый подтик, а потом 0?

18.12.2018 9:27:03
AlexKol

AlexKol

BB

Ещё вопрос по правилам. Допустим 2 робота, для каждого идет вызов метода. Ограничения по времени для каждого вызова или для 2х сразу. То есть если я сделаю все расчеты в первом вызове, а во втором только применю действие это нормально? Или надо равномерно распределять нагрузку?

18.12.2018 13:39:47
Kill.La.Kill

Формула 1.3 из документации не соотвтествует действительности. radius в данной формуле может расти до бесконечности в зависимости от jump_speed, но такого не происходит. Следовательно есть какое-то ограничение. Нужно написать про это ограничение.

18.12.2018 16:51:06
mixei4

Формула 1.3 из документации не соотвтествует действительности. radius в данной формуле может расти до бесконечности в зависимости от jump_speed, но такого не происходит. Следовательно есть какое-то ограничение. Нужно написать про это ограничение.

Ограничение в знаменателе.

18.12.2018 20:10:04
Kill.La.Kill

Ограничение в знаменателе.

Попробуйте подставить в числитель 10000000000. Знаменатель, не ограничение. Более того, в старом локал раннере бага проявлялась. Радиусы андроидов раздувались до огромных размеров. В новом испавили. Скорее всего появился недокумпентированный clamp в формуле.

18.12.2018 22:44:50
mixei4

Попробуйте подставить в числитель 10000000000. Знаменатель, не ограничение. Более того, в старом локал раннере бага проявлялась. Радиусы андроидов раздувались до огромных размеров. В новом испавили. Скорее всего появился недокумпентированный clamp в формуле.

Зачем подставлять это в числитель, если по условию:

Скорость прыжка можно задать любую от 0 (не прыгать) до ROBOT_MAX_JUMP_SPEED (прыжок с максимальной скоростью).

18.12.2018 23:51:54
Scarlet

А только у меня вызывает вопрос, почему для движения в плоскости используются координаты x и z, а не стандартные x и y? Во всех конкурсах было 2D и использовались x и y, а тут добавили третье измерение и перевернули всё с ног на бок. Даже пример из быстрого старта уже вводит в ступор, тем что переводит из XZ в XY. Зачем эта эквилибристика, чтобы запутать?

19.12.2018 6:47:39
freeila

А только у меня вызывает вопрос, почему для движения в плоскости используются координаты x и z, а не стандартные x и y? Во всех конкурсах было 2D и использовались x и y, а тут добавили третье измерение и перевернули всё с ног на бок. Даже пример из быстрого старта уже вводит в ступор, тем что переводит из XZ в XY. Зачем эта эквилибристика, чтобы запутать?

Скорее всего это может быть связана с координатыми используемыми в 3D графике. Я где-то слышал, что в компьютерной график Y отвечает за высоту, а не привычное из математики Z.

19.12.2018 15:22:12
modemaizer

modemaizer

Архангельск

“Цель в*ы*шей команды” Глава 1. Пункт 1.1. Абзац 2.

23.12.2018 20:41:46
modemaizer

modemaizer

Архангельск

modemaizer

modemaizer

Архангельск

“Цель в*ы*шей команды” Глава 1. Пункт 1.1. Абзац 2.

“навыки управления управления роботами” Страница 3, абзац 5.

23.12.2018 20:45:17
modemaizer

modemaizer

Архангельск

modemaizer

modemaizer

Архангельск

“Цель в*ы*шей команды” Глава 1. Пункт 1.1. Абзац 2.

что ваша половина поля находиться Страница 4, абзац 6.

то его скорость будет стремится к желаемой Страница 8, абзац 3.

Объект, содержащий себе информацию Страница 19, абзац 8.

true, если это оъект вашего игрока Страница 20, абзац 4.

23.12.2018 21:55:46
GoodDalek

GoodDalek

АлтГУ

парралельно - в 1.2, опечатка

24.12.2018 19:51:51
Adhami

Adhami

Амман

How to get the start of the round tick? current_game_tick only returns the whole game. Any ideas?

24.12.2018 22:00:52
Adhami

Adhami

Амман

How to get the start of the round tick? current_game_tick only returns the whole game. Any ideas?

24.12.2018 22:00:52
mixei4

mixei4

КГУ

Adhami

Adhami

Амман

How to get the start of the round tick? current_game_tick only returns the whole game. Any ideas?

  1. Score changed.

  2. Your position changed unexpectedly.

  3. Ball is in the center.

24.12.2018 22:06:22
s-a--m

s-a--m

МГТУ им. Н.Э. Баумана

При попытке отослать стратегию ошибка верификации: stderr:

Exit code:0 Time used: 24722 ms Memory used: 234MB

При этом тик занял tick 0 id 1 time = 1723 ms. Куда я не уместилсяя?

31.12.2018 12:44:34
leloy

leloy

Ateneo de Manila

MrDindows

MrDindows

Snap Inc.

s-a--m

s-a--m

МГТУ им. Н.Э. Баумана

При попытке отослать стратегию ошибка верификации: stderr: Exit code:0 Time used: 24722 ms Memory used: 234MB При этом тик занял tick 0 id 1 time = 1723 ms. Куда я не уместилсяя?

Не уместился в 24 секунды, игры в верификации длятся по 200 тиков, и в них 24 сек ТЛ.

02.01.2019 4:53:27
bukazoid

bukazoid

Екатеринбург

хех, 2 меня 24 500 получилось

10.01.2019 19:04:25
azt-yur

azt-yur

ОГУ

а почему в правилах указано что длительность игры 20 тыс. тиков, а по факту игры сейчас 18 тыс. тиков?

13.01.2019 18:48:22