Победитель первого чемпионата PlanetWars::1C - Роман Судак (rs514).
Финальные соревнования завершились!
Поздравляем Победителя: Roman Sudak!!!
Весь ход чемпионата и предварительные соревнования можно посмотреть здесь
PlanetWars - это стратегическая игра в космическом пространстве, основанная на игре Galcon.
Цель состоит в том, чтобы захватить все планеты на карте.
Ваша задача заключается в создании программы, которая играет в PlanetWars настолько разумно, насколько это возможно.

Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
О жизни Оперативный учет 7.7 1С:Торговля и склад 7.7 Россия Бесплатно (free)
Загадка от юзера: "накосячила в 1с, монопольно принудила провести накладную, с 16,01 покрылись синими крыжиками, а не красными"
28.01.2011 12897 via 5
О жизни Разработчик Бухгалтер 1С:Предприятие 8 Бухгалтерский учет 7.7 Россия Бухгалтерский учет Бесплатно (free)
Разговор с бухгалтером не о поэзии
12.10.2010 21182 Арчибальд 150
1.01
- добавлены русские синонимы математических функций:
КореньКвадратный(), АркТангенс(), Синус(), Косинус(), СлучайноеЧисло().
Пояснение по работе функции СлучайноеЧисло(МаксЗнач): функция возвращает случайные числа в диапазоне от 1 до МаксЗнач включительно.
Например, для СлучайноеЧисло(2) будет всегда возвращаться только 1 или 2.
- приведен в соответствие метод Вселенная.ДлинаПути(НачПланета, КонПланета). Теперь в качестве параметров можно передавать числовые идентификаторы планет.
Возможность передачи агрегатных объектов оставлена для совместимости.
- добавлен вывод текущего состояния игры: общее количество судов и общий темп роста для каждого бота.
1.02
В связи с тем, что операции по обработке строк в 1С выполняются очень медленно в этом обновлении изменен способ передачи боту состояния игры.
Дык это ж для затравки... ) Зато оперативно.
Там даже если поиграть коэффициентами, уже есть разница. Но, например, если выставить К1 = 2, К4 = 3, первоначальный вариант будет проигрывать почти на всех картах, а на карте №16 - выигрывать. Это уже повод для размышлений.
Идеи в изложенные в первой статье тоже очень интересны. Планировал идти от простого к сложному. Рассмотреть систему из трех планет и т.д. При этом ища общие закономерности. Поиски в этом направлении дали следующее.
Пусть у нас есть две наши планеты A и B. Пусть выполняется условие |A,P|<=|B,P|, где Pлюбая чужая планета (|A,P| - расстояние от планеты A до планеты P).
Тогда назвем планету A ведущей, а планету B подчиненной. Исходя из этого можно выстроить иерархию сових планет. Назовем нашу планету главной, если она не подчинена ни одной из наших планет.
Тогда вырисовывается очень простой алгоритм.
1) все ракеты на подчиненых планетах немедленно отправляем на ее ведущую планету. Маленькая сложность появляется если у планеты несколько ведущих планет. Тогда надо решить на какую из них и в какой пропрции отправлять ракеты.
2) Модель игры сводится к рассмотрению противостояния наших и вражеских главных планет. Просмотр игр в конкурсе гугла показывает, что главных планет всего одна, две. То есть задача имеет поразительно маленькую размерность. Да и вариантов решений при таком количестве главных планет немного.
Оба бота запускаются на одном компьютере и находятся в равных условиях, если один успевает ходить, а второй нет, то вывод очевиден.
Жесткое ограничение времени хода считаю одним из достоинств этого соревнования.
Нужно найти компромисс между быстродействием и эффективностью, оптимизировать алгоритмы, кэшировать данные. В общем есть над чем подумать.
Попробуй в условиях ограниченных ресурсов и времени выжать максимум. У кого это получится, тот и будет победителем.
Не существует файла: C:\Войнапланет\PlanetWars\ExtForms\bots\DualBot.ert для класса: Бот.4061437
Регистрация класса закончилась неудачно!
Ошибка инициализации Бота 1
При нажатии на эту ссылку. Демострация игры не работает.
Выдает сообщение:
Строка: 1
Символ: 547
Код: 0
URI-код:
Подскажите плиз, что у меня не так?
- Задача минимакса: максимизировать прирост на своих планетах, минимизировать прирост на планетах противника, до тех пор пока общая мощность твоих судов при атаке нейтральных/противника не уменьшится после N (где N оптимально) ходов, либо общая мощность твоих судов достаточна (опять же эксперемент в х2 никто не даст сделать, видел победы и при 10% перевеса) для решающего удара, по противнику.
- Задача сохранения: при атаке противника на свою планету, если планету не удается сохранить после N ходов (планету спамят), отвести войска на более удачную планету (к своим либо начать атаку на противника)
- Задача нападения: Захватывать планеты равноудаленные от планет противника, что позволит в перевесе совершить захват сразу нескольких планет.
Поэтому нужно расставлять приоритеты, насколько высокая опасность потерять планету, и насколько она нам нужна (можно ведь и выгодно обменять, на одну, а то и несколько).
Я пока что отказался от модуля защиты, слишком много нюансов.
Для себя решил, количество резерва на планете должно быть равно (! если после атаки на планете население = 0, планета не считается завоеванной),
if Ai.Temp >= Bi.Temp:
Ai.Reserv = L(Ai,Bi)*Ai.Temp - Bi.Count
else:
Ai.Reserv = L(Ai,Bi)*Ai.Temp - Bi.Count + (Ai.Temp - Bi.Temp)
Знаки возможно напутал.
А вообще если темп роста у противника выше, нам должно быть вкусно съесть ее до того как он накопит достаточное количество кораблей, чтобы нас запобедонить.
Это происходит из-за того, что в середине партии любой из соперников при остром желании может захватить любую из планет соперника.
Если в "Старте" захват планет был нацелен на равноудаленность от противника, в "Середине" при равных количествах кораблей, каждая планета защищена:
- Ближние (по отношению к противнику) планеты достаточно сильны для отражения атаки
- К дальним (те что питают сильные), лететь через ближние (по количеству шагов должно быть именно так), а они могут (и должны, если скорости регенерации планет находящихся рядом с проблемной не хватает, послать подмогу). Желательно чтобы к приходу врага на планете было именно то количество кораблей чтобы отбить атаку в 0 (мы не теряем планету если количество кораблей после осталось >= 0)
Еще обратил внимание:
- Нужно опираться на скорость регенерации. В случае если MyRep > ERep мы имеем шансы выиграть (если конечно MyPow <<< EPow).
- Выигрыш по мощности можно получить двумя способами:
- Увеличить регенерацию.
- Захватывать планеты с меньшим количеством кораблей. (Как правило сразу же после атаки противника, цена планеты Cost = abs(Ni.Count - F(Bi,Ni).Count) + F(Ai,Pi).TurnsToTarget*Ni.Temp
т.е. противник в любом случае потеряет F(Bi,Ni).Count флота, особенно планета интересна, когда (Ni.Count + F(Bi,Ni).Count)/2 + 1 < F(Bi,Ni).Count (противник собьет больше половины флота нейтральной планеты)
- Увеличить регенерацию.
Естественно при этом может потерять свои планеты.
Почему бы не дать ему это сделать? Видел несколько боев которые велись из-за одной единственной планеты, ценность ее никак не мог понять (регенерация ~2), в то время как потраченой мощности хватило бы на завоевание соседних планет (регенерация бы с лихвой закрыла потери).
Это происходит из-за того, что в середине партии любой из соперников при остром желании может захватить любую из планет соперника.
При равных силах и равномерном захвате планет (равноудаленные к противнику). Первые планеты будут достаточно защищены. А последним могут помочь те, что более сильны (говорю о ситуации, слив на передовую). Да и можно разрешить небольшой оправданный риск (захватить нейтральную планету на своей территории, для увеличения репродукции).
Кроме того обратил внимание на следующие вещи:
- До определенного момента нужно иметь лидерство в темпе роста.
- Если потерян темп (либо в ближайший момент будет потеряна), можно воспользоваться двумя способами:
- Захват планет, остаточной мощностью (то что позволит выровнять и увеличить темп роста)
- Захват нейтральных планет сразу после атаки противника.
- Захват планет, остаточной мощностью (то что позволит выровнять и увеличить темп роста)
Для участия необходимо заявку вида:
------------------------------------------
Заявка на участие в конкурсе "PlanetWars::1C"
Логин на Инфостарте: microsott
Эл.почта: microsott@gmail.com
Имя и фамилия: Билл Гейтс
Страна: США
Город: Вашингтон
Организация: Микрософт
------------------------------------------
отправить
Не забудьте заменить данные в заявке на свои.
Информацию о состоянии турнира смотрим пока
Требования к файлам ботов
1. Файл бота должен быть оформлен в виде внешнего отчета/обработки с расширением *.ert.
2. Текст модуля бота должен быть открыт, т.к. все боты будут проверяться перед участием в Чемпионате.
3. В программе бота не должно содержаться ничего, что могло бы повлиять на корректное проведение турнира.
4. Не допускается использование одного и того же бота несколькими участниками турнира.
В принципе, инфу о номере карты можно вывести в профиле - там есть место для колонки.
Если надо - сделаю.
Теперь каждый вечер буду вносить небольшие изменения и присваивать боту кодовое слово.
Боту, что играет сейчас присвоено кодовое слово "Лидер"
Сегодня буду делать бота "Экспресс"
В среду "Захватчик"
В четверг "Пионер"
В пятницу планирую сделать бота "Чемпион"
Финал чемпионата
Предварительные соревнования заканчиваются в 08:59 28 ноября 2010 г. по московскому времени.
В это время прием ботов прекратится и регулярные бои между участниками будут остановлены. Будет сброшен (обнулен) рейтинг всех участников.
Спустя 6 часов (это время необходимо для проверки ботов) после окончания предварительных соревнований стартует финал чемпионата.
Финальные схватки будут проводиться в режиме онлайн на каждой карте между всеми участниками.
Результаты будут публиковаться после розыгрыша каждой карты, начиная с первой.
"Не ждите до последней секунды, чтобы отправить своего финального бота. Оставьте себе несколько часов, чтобы убедиться, что ваш последний бот играет правильно и имеет лучшие показатели, чем предыдущие."
Но вот в пятницу и особенно в субботу подробная информация с тестового турнира может понадобится.
Срок сдачи финальной версии бота назначил себе в субботу утром. Суббота вечером - запасной срок.
Речь в (93) идет о схватке 28.11.10, 23:01:36, №010540
К этой игре rsergio подошел с рейтингом 325, у rs514 было 303.
rs514 выиграл.
Заносим эти данные в "калькулятор рейтинга ELO".
Проверяем результат.
Текущий рейтинг:
№ Участник Страна Город Побед Поражений ELO
1 rs514 Украина Киев 320 67 525
2 rsergio Россия Москва 309 87 498
3 Pavlovsky Россия Екатеринбург 307 90 412
4 alexk-is Россия Лысьва 258 140 370
5 ASDF2 Россия Пермь 227 173 331
6 venger Украина Одесса 131 269 128
7 Salimbek Россия Набережные Челны 132 260 33
8 qd-phantom Россия Первоуральск 68 324 0
9 dmitry_k7 Россия Москва 29 371 0
Показать№ Участник Страна Город Побед Поражений ELO
1 rs514 Украина Киев 393 74 620
2 rsergio Россия Москва 365 111 472
3 Pavlovsky Россия Екатеринбург 365 112 461
4 alexk-is Россия Лысьва 317 161 452
5 ASDF2 Россия Пермь 272 208 316
6 venger Украина Одесса 154 326 103
7 Salimbek Россия Набережные Челны 160 312 101
8 qd-phantom Россия Первоуральск 81 391 6
9 dmitry_k7 Россия Москва 34 446 0
По поводу нового конкурса поговорим попозже, а сейчас ...
Финальный турнир продолжается. Пройдено 70 из 100 карт.
№ Участник Страна Город Побед Поражений ELO
1 rs514 Украина Киев 462 85 646
2 rsergio Россия Москва 426 130 510
3 Pavlovsky Россия Екатеринбург 424 132 508
4 ASDF2 Россия Пермь 323 236 396
5 alexk-is Россия Лысьва 363 195 366
6 venger Украина Одесса 183 377 148
7 qd-phantom Россия Первоуральск 105 447 93
8 Salimbek Россия Набережные Челны 180 372 82
9 dmitry_k7 Россия Москва 34 526 0
Вплоть до того, чтобы остановить чемпионат.
Получается так, что (сразу говорю - я сейчас тебя не имею ввиду), если натренировать бота на выигрыш нескольких последних карт, то при текущей системе оценок становишься лидером.
Меня очень смущают эти постоянные перестановки в первой тройке игроков. Постоянные перестановки. На оф.чемпионате такого нет.
Вот такой он ЭЛО. Естественно надо было играть по сумме набранных очков. Ведь у нас все играют со всеми на всех картах.
А что делать решай.
PS Посмотрел статистику по последним 10 картам. Мой бот на них играет очень прилично. :D
На второй - достоверность результатов чемпионата.
---
Итак, на 88 карте я приостанавливаю финальные соревнования.
---
Если окажется, что на официальном чемпионате есть такая же вероятность "случайной" победы - значит оставшаяся часть турнира пройдет по этим же правилам.
Если же текущая система рейтинга не является объективной и не позволит выявить сильнейшего участника - в расчет рейинга будут внесены поправки, рейтинг пересчитан заново и оставшиеся бои пройдут с учетом этих поправок.
---
Обращаюсь за консультацией к Нефедову Сергею (NS). Он, во-первых, лицо не заинтересованное, в во-вторых имеет опыт в подобных соревнованиях.
У нас выбор есть. Естественно надо определять победителя по сумме набранных очков.
в каждой игре за победу дается 1 очко, за ничью - 0,5, проигрыш - 0.
В финальных соревнованиях побеждает тот, кто в итоге наберет наибольшее количество очков.
Всё получается просто и легко проверяемо.
P.S.: а разобраться как всё-таки должно было считаться ELO оставлю себе на десерт )
Трон это игра для двух игроков, где каждый игрок управляет своей змеей в ловушке внутри лабиринта. Когда игрок перемещает свою змею, она растет, оставляя за собой стену. Змея не должна пересекать свой хвост и не должна врезаться в стену. Побеждает тот игрок, чья змея проживет дольше.
Да уж. Всего 400 строк кода у победителья шокирует.
Еще раз подтвердилось правило: "Длинный и запутанный код означает ошибочность и не оптимальность алгоритма".
1)возможность захвата чужой планеты
2)безопасность захвата очередной нейтральной планеты
3)оценить качество и слабые места структуры наших и чужих планет.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 76982
Создание 17.10.10 15:38
Обновление 30.11.10 16:39
Просмотры 26362
Загрузки 0
Рейтинг
39
Комментарии 137
Код открыт Не указано
Рубрики О жизни
Кому Для всех
Тип файла Нет файла
Платформа 1С:Предприятие 7.7
Конфигурация Универсальные
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)