В общем, была задача на оптимизацию плана работ: есть набор заказов, и в каждом N тасков. Таски могут зависеть друг от друга или нет, имеют длительность и тип. Ещё есть M работников, каждый из которых может выполнять таски только определённых типов, причём, у каждого своя скорость.
Если все таски в заказе выполнены, фирма получает сколько-то денег. У заказа есть дедлайн, за просрочку штраф (за каждый день просрочки), который вычитается из цены заказа. И ещё фирма тратит деньги за каждый день своей работы независимо от того, как загружены её сотрудники (то есть просто платит зарплаты по сути). Ещё важен учёт праздников и выходных.
Нужно заработать на определённом наборе заказов и работников как можно больше денег. Полный текст задачи и код программы проверки есть в репозитории. Эта задача является изменённым заказом, который мы с напарником решали в реальной жизни: оптимизация работы печатных станков для типографии. Правда, тогда и мы справились так себе, и заказчик в итоге сначала захотел всё вручную сам делать, а потом и вовсе похоронил проект при смене директора.
!!! Не читайте дальше, если хотите сначала попробовать решить самостоятельно, потому что я сейчас опишу эффективные подходы и результаты.
________________________________________
Так вот. Мы с другим экспертом Андреем сразу сели и написали разные варианты, чтобы задать шкалу, по которой будем оценивать решения команд. За пару часов я собрал примитивный жадный алгоритм, который сортировал заказы по прибыльности и укладывал в сетку кое-как, это дало нам нижнюю оценку. Мой алгоритм заработал ~75 млн виртуальных рублей, мы решили для оценки поставить нижней границей 40 млн. То есть всё, что ещё ниже, оценивалось в ноль баллов за качество оптимизации.
Затем Андрей закрылся дома на три дня и вышел на свет со сложным жадным алгоритмом, который очень хитро сортировал заказы и очень хитро укладывал их в сетку, попутно выбирая разные способы этой укладки в зависимости от конкретного заказа. Это позволило заработать ~275 млн рублей. Мы сделали верхней границей для оценки 280 млн.
К сожалению, в итоге только две команды из десяти прошли нижнюю границу, заработав, соответственно, ~91 и ~105 млн. К верхней границе не приблизился никто. И у четырёх команд алгоритм вообще не смог уложить без нарушений задачи в сетку (то есть, например, произвольно менял длительности, накладывал задачи друг на друга, давал одному работнику две задачи в один момент и так далее). Важной ошибкой команд, на мой взгляд, являлся тот факт, что никто не воспользовался возможностью запустить алгоритм на несколько минут и дать ему поработать. По условиям задания, можно было тянуть до 5 минут на одну оптимизацию, но по факту решения команд отрабатывали за единицы и десятки секунд.
На самом конкурсе, пока команды работали, я решил попробовать сделать быстрое (по времени написания) но эффективное решение. Сначала попробовал жадную сортировку + доведение до лучшего варианта методом имитации отжига. В качестве нового состояния я просто менял местами заказы целиком. Этот вариант работал пару минут и дал мне около ~200 млн дохода. К слову, команда-лидер использовала такой же подход, просто не докрутила число итераций и температуру.
Ну и потом я взял готовую либу по реализации классической генетики с особями и скрещиванием. Особью был массив с приоритетами заказов (которые конечно же нужно было аккуратно уложить чистым алгоритмом). Тип скрещивания: scattered. Всего 15 поколений по 20 особей, и это за минуту-полторы давало ~230-240 млн. Считаю, что для конкурса это самый лучший выбор: пишется одним человеком за день и даёт почти максимум, при этом легко настраивается на нужную длительность работы, легко параллелится.
Ну а потом уже дома я посидел и накодил свой вариант сложного жадного с плавающим окном перебора отсортированных заказов и плавающей же укладкой по работникам. Такая штука за две минуты зарабатывает ~281 млн. Но за три дня в условиях стресса я бы такое не сделал, скорее всего.
#dev
Сегодня завтрак начался с бокала вина и день выдался ленивым и томным с дневным сном и сериалом от которого не оторваться
В музей Востока мы так и не доехали, зато по пути в салон я не удержалась и купила бутылочку красного уже обычного объема 0,75 литра. Так что толер как бы и не снизился хотя суммарно вышло не 4 стандартных бутылки на двоих за два дня, а три. Почему по пути в салон? Ну просто педикюр в 20:00 и был риск не успеть на обратном, а риск-менеджмент- наше всё
Еще в моей жизни сейчас много перемен. Ритм и прогресс точно в том темпе который необходим и вообще возможен учитывая все события трех минувших лет. На этот год у меня большие планы, пока я к ним иду медленно, но верно максимально нагрузив себя трудотерапией и работая над тем, чтобы вас удивлять много и часто пишу о том и делюсь с вами чем могу здесь и сейчас- это многочисленными историями о былых приключениях и искусстве, особенно кино
Знаете, я уже достаточно давно поняла, что суть жизни в ее непредсказуемости, но только сейчас осознаю, что начинать все с начала невероятно увлекательно и интересно не смотря на то, что это весьма не просто
На рейвы как-то пока не хочется хотя много интересных ивентов. Жду весны, чтобы встречать рассвет в курилке и разговаривать обо всем и ни о чем
В декабре два раза была на Секте на Синестезии и Китчен рейв и не пожалела. С самого начала его пути и до феноменального роста он был и остается одним из самых моих любимых артистов. Еще вспоминаю Черту и последнюю вечеринку команды почти год назад. Я даже дату запомнила- 22 февраля. Самый мой любимый рейв прошлого года. Еще был М див весной и предпоследняя вечеринка в Арме. Мы думали, что прощаемся с заводом и было как-то особенно лирично чтоли. Но не тут то было, клуб на Шарикоподшипниковской не так-то просто отправить в отставку хотя он навсегда лично для меня останется Мутабором в который я пришла в 2019 и загорелась идеей снимать на рейвах влюбившись отчаянно в техно. Много воды утекло с тех пор: стремительное начало в рейв-фотографии, три года работы с Мона, команда заботы, воспеты взлет и больное падение. Я даже на какое-то время разлюбила рейв, но и это прошло. Что остается неизменным- это любовь к техно. Прямая бочка она такая 🖤
#diary
Знаете, неожиданно для себя я вдруг поняла, что действительно слишком увлеклась этой идеей предстать идеальной ибо когда человек ( не важно кто он тебе отец или сосед) обесценивает любые твои достижения вне зависимости от сферы этих достижений
Грубо говоря, вот за последние пять лет ты волонтерил в приюте, стал фин куратором пяти животных, а это значит буквально 5 спасениях жизней, два года проработал в компании и зарабатывал деньги, но более ты там не работаешь, стал писать картины и даже провел выставку и тп. То есть буквально все на свете, но человек напротив обесценивает абсолютно все. Благотворительность- это вложения, а не доход. Если не работаешь больше в той компании, то какая разница сколько зарабатывал, а выставка без продаж работ не имеет никакого значение. И вдруг я осознала очень четко и ясно, что я так боялась разочаровать, что почти не заметила как разочаровалась сама. И я выбрала себя
Пусть я не образца 2017 когда я реально рубила бабки, и даже в 2022 шальные деньги на крипте были очень большими, просто пошли не туда. Тем не менее… миллион в месяц я зарабатывала. Было дело. И тратила тоже миллион в месяц. Тоже было дело. Пусть это и случалось эпизодично с высоты прожитых лет. Но это было и я знаю эти ощущения, и мне не жалко ни каких-то огромных трат в никуда в том же 2022-2023 или в том, что я вышла и крипто торговли на биржах в 2018 ( у меня были везде про аккаунты с достаточно большими депозитами). Рынок крипты хаотичен и создан теми кто им и манипулирует. Рынок тебя все равно вышибет сколько не спорь. Вопрос времени. Я вынырнула вовремя. Это тоже достижение. В плюсе
В общем, я настолько видимо нервничала, что мне прямо вот до талова несвойственно, что неведомый недуг свалил меня с ног перед встречей и аккурат после. Причем после аж на неделю. Это не была простуда, я чувствовала боль в тех местах где нет органов, спала сутками пока, наконец, не убедилась, что ее величество Психосоматика вошла в чат. И приняла это как данность
Сегодня первый день когда я прямо в боевой готовности все делать и решать и повторюсь, что я выбираю себя хотя люблю очень много людей. Это не эгоизм, а здоровое отношение к себе. Только уважая себя самого и трезво понимая текущие достижения и провалы ты можешь двигаться вперед, расти и отдавать любовь своим близким
Мне было прикольно погрузиться в воспоминания о 2010-х. Спасибо, блин, тренды в запрещеннограмме. Но прошлое есть прошлое. Круто, что есть, что вспомнить. И круто, что можно опираясь на прошлое быть планкой для самого себя
Пусть я сейчас возможно звучу смешно и неубедительно, с плохими охватами и практически не являюсь никаким примером и авторитетом, но я сегодня являюсь лучшей версией себя за последние 3 года. И это- достижение…
#diary
Мой год начался очень насыщенно. Точнее, еще в декабре я начала готовиться к встрече с близким мне человеком с которым не общалась порядка десяти лет. Я настолько в эту подготовку нырнула в омут с головой, что в какой то момент сделать все идеально стало навязчивой идеей
Параллельно со всем этим я начала работать с психологом и мы проговаривали о том, что никто ничего никому должен, быть собой и сохранять себя настоящего каким ты являешься в текущий период жизни намного важнее, чем соответствовать чужим ожиданиям. Я это все прекрасно понимала и до наших сессий и тем более все раскладывалась по полочкам с каждой нашей онлайн встречей. И, скажем так, мы сошлись на том, что предстоящая встреча стала тем самым волшебным пенделем и то, что я не могла никак наконец закончить: это сделать генеральную уборку, наконец разобраться с финансами, доходами и расходами, облагородить дом и вообще на энтузиазме можно достаточно долго лететь вперед решая все дела на своем пути. Следующий шаг- это тебя уже прет твоя продуктивность. Так что энтузиазм- это мощная энергия
Я поставила себе цели которые в данный момент моей жизни изначально казались невыполнимыми. Рассчитывая на себя ( хотя меня поддерживает морально и материально бывший супруг и с ним мы вообще сейчас абсолютно в прекрасных отношениях, научились соблюдать личные границы, не давать оценку действиям друг друг и вообще быть терпимее. И пусть работы еще предстоит много мы с ним проделали колоссальный путь). Тем не менее я расписала все, что хочу купить на подарки, в дом, сделать весьма серьезные бьюти-процедуры которые дают действительно явный эффект и, соответственно, стоят). Список оказался внушительным и так как я еще набираю былую форму к доходу который меня устраивает я еще не вернулась. Неожиданно я поймала себя на том, что в голове все ясно и я четко ставлю себе цели, подцели и, разумеется, мечты. У меня есть понимание как все это достичь. И пусть моя цель к 7 января когда, наконец, встреча случилась я выполнила все запланированное и даже больше, и несказанно этому рада. Я сама от себя не ожидала такой конкретики. Пусть и в былые времена я легко делала иксы от тех цифр, которые были для меня определяющими в этом году, но я выполнила все запланированное. Вообще все #diary
Продолжение 👇