<< Вернуться на главную ЧУДО ТРАКТОРКонкурс программистов сезона 2019-2020 закончен. И опять на очный этап пришло только 5 человек (причем трое - первокурсники и участники прошлогодних конкурсов). Пришлось провести турнир для номинации "школьники" и номинации "студенты" :-)
Условия конкурса и страничку заочного этапа можно скачать
тут. В этом сезоне нужно было оптимизировать вспашку участков трактором. Усложняли вспашку столбы, попадающиеся на участках.
На очный этап было предложено 3-и участка. Первый условно назван "монолит" (единое поле с отдельными отростками). Второй участок имел "регулярную структуру" (по сути шахматная доска) ну а третий участок был представлен "Нерегулярной структурой" (специально сконструированной генератором случайных чисел).
Задача чисто теоретически поддающаяся полной оптимизации. Однако дополнительное условие, на ограничение времени работы программы (5 минут) делало невозможной полную оптимизацию. Для того чтобы вспахать максимум полей и уложиться в отведенное время, необходимо было снабдить свою программу кучей "эвристик". Все это усложняло и без того сложную задачу. В общем все как в жизни, как оптимизировать вроде понятно но это невозможно :-). Таким образом, участникам нужно было за 3-а часа приготовить решение для всех вариантов. Победитель определялся по максимальному суммарному количеству вспаханных участков.
Если вы хотите попробовать свои силы, то скачиваете проект заочного этапа (в соотватствии с удобным для вас языком программирования). Распаковываете и пробуете!
Для пробы работы с версиями очного этапа нужно скачать соответствующую версию картинки (можно прямо с этой странички, переименовать картинку в "1.bmp" и заменить ее в вашем проекте. ВНИМАНИЕ! Для проекта на C++ BUILDER картинка помещается в папку "DEBUG" (впрочем, те кто работает на нем и так должны это знать). Как всегда кто-то заболел, кто-то справлял новый год в загородных лагерях Жаль, что никак не удается привлечь побольше народу. Не помогают ни письма по школам ни активная пропаганда.
здесь можно посмотреть, как проходил конкурс
Результаты финальной битвы:
Анализ. Очень порадовало обилие алгоритмов. Практически каждый участник работал со своими алгоритмами очень непохожими друг на друга. Выл тут и рекурсивный алгоритм подобный заливке картинки, и алгоритм подьема на гору, и векторный анализ и даже нейросеть! По результатам видно, что одни алгоритмы оказались оптимальнее для одних картинок а другие для других.
1) Нейросеть обучалась все три часа подряд и в итоге смогла вспахать аж 20 участков :-). На наш вгляд применение нейросети было неудачным (а сама нейросеть похоже получилась без сходимости обучения). Если уж применять такие алгоритмы, то скорее надо было использовать комбинированный способ управления (частично нейросеть - частично минимальное расстояние). Но правда автор алгоритма не стал на нее расчитывать и пока она там училась (непонятно чему :-) он реализовал рекурсивный алгоритм, который всех победил во втором задании Но в основном все алгоритмы дали приблизительно одинаковые результаты, просто в разных условиях они себя по разному ведут. В результате борьба получилась зрелищная и интересная. Всем участникам, зарегистрировавшимся на заочном этапе были вручены памятные сувениры (напечатанные на 3д принтере трактора ДТ75) и соответствующие грамоты. Победителям вручены малюсенькие подарки (что поделать, спонсоры так и не горят желанием посодействовать) Конкурс прошел в теплой, дружественной обстановке. С чаем, тортом и жаркими спорами по поводу чей алгоритм лучше и чем именно лучше. В конце третьего часа участники попросили продлить конкурс еще на 15 минут а организаторы радостно пошли настречу пожеланиям :-) Так как все участники оказались знакомы между собой, турнир был закончен рубиловом в квак-3 :-). В результате как всегда победила дружба!
Благодарим всех участников конкурса, которые пожертвовали последним днем каникул,
не испугались мороза и злых конкурентов :-). |