В общем, была задача на оптимизацию плана работ: есть набор заказов, и в каждом N тасков. Таски могут зависеть друг от друга или нет, имеют длительность и тип. Ещё есть M работников, каждый из которых может выполнять таски только определённых типов, причём, у каждого своя скорость.
Если все таски в заказе выполнены, фирма получает сколько-то денег. У заказа есть дедлайн, за просрочку штраф (за каждый день просрочки), который вычитается из цены заказа. И ещё фирма тратит деньги за каждый день своей работы независимо от того, как загружены её сотрудники (то есть просто платит зарплаты по сути). Ещё важен учёт праздников и выходных.
Нужно заработать на определённом наборе заказов и работников как можно больше денег. Полный текст задачи и код программы проверки есть в репозитории. Эта задача является изменённым заказом, который мы с напарником решали в реальной жизни: оптимизация работы печатных станков для типографии. Правда, тогда и мы справились так себе, и заказчик в итоге сначала захотел всё вручную сам делать, а потом и вовсе похоронил проект при смене директора.
!!! Не читайте дальше, если хотите сначала попробовать решить самостоятельно, потому что я сейчас опишу эффективные подходы и результаты.
________________________________________
Так вот. Мы с другим экспертом Андреем сразу сели и написали разные варианты, чтобы задать шкалу, по которой будем оценивать решения команд. За пару часов я собрал примитивный жадный алгоритм, который сортировал заказы по прибыльности и укладывал в сетку кое-как, это дало нам нижнюю оценку. Мой алгоритм заработал ~75 млн виртуальных рублей, мы решили для оценки поставить нижней границей 40 млн. То есть всё, что ещё ниже, оценивалось в ноль баллов за качество оптимизации.
Затем Андрей закрылся дома на три дня и вышел на свет со сложным жадным алгоритмом, который очень хитро сортировал заказы и очень хитро укладывал их в сетку, попутно выбирая разные способы этой укладки в зависимости от конкретного заказа. Это позволило заработать ~275 млн рублей. Мы сделали верхней границей для оценки 280 млн.
К сожалению, в итоге только две команды из десяти прошли нижнюю границу, заработав, соответственно, ~91 и ~105 млн. К верхней границе не приблизился никто. И у четырёх команд алгоритм вообще не смог уложить без нарушений задачи в сетку (то есть, например, произвольно менял длительности, накладывал задачи друг на друга, давал одному работнику две задачи в один момент и так далее). Важной ошибкой команд, на мой взгляд, являлся тот факт, что никто не воспользовался возможностью запустить алгоритм на несколько минут и дать ему поработать. По условиям задания, можно было тянуть до 5 минут на одну оптимизацию, но по факту решения команд отрабатывали за единицы и десятки секунд.
На самом конкурсе, пока команды работали, я решил попробовать сделать быстрое (по времени написания) но эффективное решение. Сначала попробовал жадную сортировку + доведение до лучшего варианта методом имитации отжига. В качестве нового состояния я просто менял местами заказы целиком. Этот вариант работал пару минут и дал мне около ~200 млн дохода. К слову, команда-лидер использовала такой же подход, просто не докрутила число итераций и температуру.
Ну и потом я взял готовую либу по реализации классической генетики с особями и скрещиванием. Особью был массив с приоритетами заказов (которые конечно же нужно было аккуратно уложить чистым алгоритмом). Тип скрещивания: scattered. Всего 15 поколений по 20 особей, и это за минуту-полторы давало ~230-240 млн. Считаю, что для конкурса это самый лучший выбор: пишется одним человеком за день и даёт почти максимум, при этом легко настраивается на нужную длительность работы, легко параллелится.
Ну а потом уже дома я посидел и накодил свой вариант сложного жадного с плавающим окном перебора отсортированных заказов и плавающей же укладкой по работникам. Такая штука за две минуты зарабатывает ~281 млн. Но за три дня в условиях стресса я бы такое не сделал, скорее всего.
#dev
#gerb#davlat_ramzi
2-iyul - O‘zbekiston Respublikasi Davlat Gerbi qabul qilingan kun.
Davlat gerbi haqida ma'lumot
📣Bizni ijtimoiy tarmoqlarda kuzating!
Web-sayt | Telegram | Facebook | You Tube
#Europa
La #Bulgaria si è opposta alle trattative in corso per l’ingresso della #MacedoniaDelNord nell'#UE, bloccando di fatto l’inizio dei colloqui per l’adesione del piccolo paese balcanico. La ministra degli Esteri Ekaterina #Zaharieva (🇧🇬#GERB🇧🇬|EPP) ha detto che la Bulgaria non può sostenere per ora l’inizio dei negoziati di adesione del paese balcanico a causa di controversie aperte sulla storia e sulla lingua dei due paesi.
@NewsDalMondoo
#Sondaggi
#Bulgaria🇧🇬
#Parlamentari
Sondaggio di Alpha Research.
Data: 19-26 marzo 2026.
Campione: 1.000 persone.
🟩 Bulgaria Progressista (#PB|Centro-sinistra populista): 30,8%
🟦 Cittadini per lo sviluppo europeo - Unione delle forze democratiche (#GERB|PPE; #SDS|PPE): 21,2%
🟦 Continuiamo il cambiamento - Bulgaria Democratica (#PP|RE; #DB|PPE): 11,1%
🟦 Movimento per i diritti e le libertà (#DPS|RE): 9,8%
🟧 Rinascita (#Vazrazhdane|ESN): 6,9%
🟥 Partito Socialista Bulgaro - Sinistra Unita (#BSP|S&D): 3,9%
⬛️ Morale, Unità, Onore (#MECh|Estrema destra): 3,0%
Altri: 13,3%
@TuttoElezioni
#Sondaggi
#Bulgaria🇧🇬
#Parlamentari
Sondaggio di MarketLinks.
Data: 17-21 marzo 2026.
Campione: 1.008 persone.
🟩 Bulgaria Progressista (#PB|Centro-sinistra populista): 29,1%
🟦 Cittadini per lo sviluppo europeo - Unione delle forze democratiche (#GERB|PPE; #SDS|PPE): 22,2%
🟦 Continuiamo il cambiamento - Bulgaria Democratica (#PP|RE; #DB|PPE): 13,3%
🟦 Movimento per i diritti e le libertà (#DPS|RE): 10,5%
🟧 Rinascita (#Vazrazhdane|ESN): 5,5%
🟥 Partito Socialista Bulgaro - Sinistra Unita (#BSP|S&D): 3,7%
⬛️ Morale, Unità, Onore (#MECh|Estrema destra): 3,2%
Altri: 12,5%
@TuttoElezioni
#Sondaggi
#Bulgaria🇧🇬
#Parlamentari
Sondaggio di Trend.
Data: 13-16 aprile 2026.
Campione: 1.004 persone.
Margine di errore: ±3,1%.
🟩 Bulgaria Progressista (#PB|Centro-sinistra populista): 33,2%
🟦 Cittadini per lo sviluppo europeo - Unione delle forze democratiche (#GERB|PPE; #SDS|PPE): 19,1%
🟦 Continuiamo il cambiamento - Bulgaria Democratica (#PP|RE; #DB|PPE): 11,2%
🟦 Movimento per i diritti e le libertà (#DPS|RE): 10,2%
🟧 Rinascita (#Vazrazhdane|ESN): 7,1%
🟥 Partito Socialista Bulgaro - Sinistra Unita (#BSP|S&D): 4,0%
🟦 Splendore (#Siyanie|Anti-corruzione): 3,9%
⬛️ Morale, Unità, Onore (#MECh|Estrema destra): 3,7%
🟦 C'è un Popolo come Questo (#ITN|ECR): 2,1%
Altri: 5,5%
@TuttoElezioni
#Sondaggi
#Bulgaria🇧🇬
#Parlamentari
Sondaggio di Gallup.
Data: 20-30 marzo 2026.
Campione: 820 persone.
Margine di errore: ±3,5%.
🟩 Bulgaria Progressista (#PB|Centro-sinistra populista): 28,4%
🟦 Cittadini per lo sviluppo europeo - Unione delle forze democratiche (#GERB|PPE; #SDS|PPE): 23,4%
🟦 Continuiamo il cambiamento - Bulgaria Democratica (#PP|RE; #DB|PPE): 10,9%
🟦 Movimento per i diritti e le libertà (#DPS|RE): 10,7%
🟧 Rinascita (#Vazrazhdane|ESN): 6,5%
🟥 Partito Socialista Bulgaro - Sinistra Unita (#BSP|S&D): 3,0%
🟦 Splendore (#Siyanie|Anti-corruzione): 3,0%
🟦 C'è un popolo come questo (#ITN|ECR): 2,9%
⬛️ Morale, Unità, Onore (#MECh|Estrema destra): 2,8%
Altri: 8,4%
@TuttoElezioni
#Sondaggi
#Bulgaria🇧🇬
#Parlamentari
Sondaggio di Gallup.
Data: 8-16 aprile 2026.
Campione: 803 persone.
🟩 Bulgaria Progressista (#PB|Centro-sinistra populista): 31,6%
🟦 Cittadini per lo sviluppo europeo - Unione delle forze democratiche (#GERB|PPE; #SDS|PPE): 21,0%
🟦 Continuiamo il cambiamento - Bulgaria Democratica (#PP|RE; #DB|PPE): 10,7%
🟦 Movimento per i diritti e le libertà (#DPS|RE): 10,5%
🟧 Rinascita (#Vazrazhdane|ESN): 6,8%
🟥 Partito Socialista Bulgaro - Sinistra Unita (#BSP|S&D): 4,0%
🟦 Splendore (#Siyanie|Anti-corruzione): 3,2%
🟦 C'è un Popolo come Questo (#ITN|ECR): 3,0%
⬛️ Morale, Unità, Onore (#MECh|Estrema destra): 2,8%
🟥 Grandezza (#Velichie|Estrema destra): 2,0%
Altri: 4,4%
@TuttoElezioni