TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #1084 · 9.04

В общем, была задача на оптимизацию плана работ: есть набор заказов, и в каждом N тасков. Таски могут зависеть друг от друга или нет, имеют длительность и тип. Ещё есть M работников, каждый из которых может выполнять таски только определённых типов, причём, у каждого своя скорость. Если все таски в заказе выполнены, фирма получает сколько-то денег. У заказа есть дедлайн, за просрочку штраф (за каждый день просрочки), который вычитается из цены заказа. И ещё фирма тратит деньги за каждый день своей работы независимо от того, как загружены её сотрудники (то есть просто платит зарплаты по сути). Ещё важен учёт праздников и выходных. Нужно заработать на определённом наборе заказов и работников как можно больше денег. Полный текст задачи и код программы проверки есть в репозитории. Эта задача является изменённым заказом, который мы с напарником решали в реальной жизни: оптимизация работы печатных станков для типографии. Правда, тогда и мы справились так себе, и заказчик в итоге сначала захотел всё вручную сам делать, а потом и вовсе похоронил проект при смене директора. !!! Не читайте дальше, если хотите сначала попробовать решить самостоятельно, потому что я сейчас опишу эффективные подходы и результаты. ________________________________________ Так вот. Мы с другим экспертом Андреем сразу сели и написали разные варианты, чтобы задать шкалу, по которой будем оценивать решения команд. За пару часов я собрал примитивный жадный алгоритм, который сортировал заказы по прибыльности и укладывал в сетку кое-как, это дало нам нижнюю оценку. Мой алгоритм заработал ~75 млн виртуальных рублей, мы решили для оценки поставить нижней границей 40 млн. То есть всё, что ещё ниже, оценивалось в ноль баллов за качество оптимизации. Затем Андрей закрылся дома на три дня и вышел на свет со сложным жадным алгоритмом, который очень хитро сортировал заказы и очень хитро укладывал их в сетку, попутно выбирая разные способы этой укладки в зависимости от конкретного заказа. Это позволило заработать ~275 млн рублей. Мы сделали верхней границей для оценки 280 млн. К сожалению, в итоге только две команды из десяти прошли нижнюю границу, заработав, соответственно, ~91 и ~105 млн. К верхней границе не приблизился никто. И у четырёх команд алгоритм вообще не смог уложить без нарушений задачи в сетку (то есть, например, произвольно менял длительности, накладывал задачи друг на друга, давал одному работнику две задачи в один момент и так далее). Важной ошибкой команд, на мой взгляд, являлся тот факт, что никто не воспользовался возможностью запустить алгоритм на несколько минут и дать ему поработать. По условиям задания, можно было тянуть до 5 минут на одну оптимизацию, но по факту решения команд отрабатывали за единицы и десятки секунд. На самом конкурсе, пока команды работали, я решил попробовать сделать быстрое (по времени написания) но эффективное решение. Сначала попробовал жадную сортировку + доведение до лучшего варианта методом имитации отжига. В качестве нового состояния я просто менял местами заказы целиком. Этот вариант работал пару минут и дал мне около ~200 млн дохода. К слову, команда-лидер использовала такой же подход, просто не докрутила число итераций и температуру. Ну и потом я взял готовую либу по реализации классической генетики с особями и скрещиванием. Особью был массив с приоритетами заказов (которые конечно же нужно было аккуратно уложить чистым алгоритмом). Тип скрещивания: scattered. Всего 15 поколений по 20 особей, и это за минуту-полторы давало ~230-240 млн. Считаю, что для конкурса это самый лучший выбор: пишется одним человеком за день и даёт почти максимум, при этом легко настраивается на нужную длительность работы, легко параллелится. Ну а потом уже дома я посидел и накодил свой вариант сложного жадного с плавающим окном перебора отсортированных заказов и плавающей же укладкой по работникам. Такая штука за две минуты зарабатывает ~281 млн. Но за три дня в условиях стресса я бы такое не сделал, скорее всего. #dev

Hashtags

Резултати

Намерени 38 подобни публикации

Търсене: #tdlib

当前筛选 #tdlib清除筛选
Telegram github commits and releases

@tgappsupdates · Post #19696 · 14.04.2026 г., 11:33

tdlib/td/master • c4394fe • 4 files, +36/-0 Add and use MessagesManager::get_message_poll_id. tdlib/td/master • b0c75c1 • 7 files, +12/-82 Move set_poll_answer and get_poll_voters to PollManager. tdlib/td/master • 42ea83d • 7 files, +19/-50 Move stop_poll to PollManager. tdlib/td/master • ea683b2 • 7 files, +12/-55 Move add_poll_option and delete_poll_option to PollManager. tdlib/td/master • 3bde478 • 2 files, +2/-2 Make iOS build reproducible by @g000sha256. tdlib/td/master • f3713bb • 1 files, +3/-1 Add g000sha256/tdl-coroutines to the list of examples. tdlib/td/master • 8921c22 • 2 files, +13/-13 Fix handling of links to specific task and poll option. #tdlib

Hashtags

Telegram github commits and releases

@tgappsupdates · Post #19685 · 09.04.2026 г., 13:18

tdlib/td/master • 28e0d0d • 1 files, +20/-2 Add Op::random_value. tdlib/td/master • 00eedc5 • 1 files, +30/-14 New TlsInit algorithm for Darwin. tdlib/td/master • 6b82cc8 • 1 files, +4/-3 Encode key with base64. tdlib/td/master • aea46d7 • 11 files, +21/-21 Fix typos. tdlib/td/master • c3a6ece • 3 files, +47/-41 Add TranslationManager.InputText. tdlib/td/master • 3d38fb7 • 1 files, +2/-1 Remove early initialization of tz_offset. tdlib/td/master • a9fd1b5 • 1 files, +1/-1 fix: live photo file type description tdlib/td/master • a82128a • 1 files, +8/-0 Add more base64 proxy links tests (#3636) #tdlib

Hashtags

Telegram github commits and releases

@tgappsupdates · Post #19657 · 06.04.2026 г., 15:33

tdlib/td/master • a214d9c • 2 files, +18/-19 Improve names in get_messages_from_server. tdlib/td/master • 21327eb • 7 files, +46/-45 Improve MessageFullId variable names. tdlib/td/master • 44cd522 • 1 files, +14/-14 Improve CallFullId variable names. tdlib/td/master • 8ff05a0 • 1 files, +1/-1 Update description for deletePollOption method #tdlib

Hashtags

Telegram github commits and releases

@tgappsupdates · Post #19641 · 03.04.2026 г., 15:48

tdlib/td/master • d0de8a7 • 1 files, +2/-2 Fix TLS-init. tdlib/td/master • 05b710d • 2 files, +20/-1 Fix storing of min-channels for poll options. tdlib/td/master • 5f18d2a • 1 files, +5/-0 Don't store duplicate MinChannels. tdlib/td/master • d22d30f • 1 files, +5/-5 Expect reply in service messages about poll option changes. tdlib/td/master • 7c6f71f • 1 files, +2/-0 Expect reply in telegram_api::messageActionRequestedPeer. tdlib/td/master • c87123b • 3 files, +7/-0 Add td_api::pushMessageContentPollOptionAdded. tdlib/td/master • f06b0ba • 8 files, +9/-9 Update version to 1.8.63. #tdlib

Hashtags

Telegram github commits and releases

@tgappsupdates · Post #19640 · 03.04.2026 г., 15:48

tdlib/td/master • d2a8f82 • 4 files, +26/-15 Add separate InputPollType. tdlib/td/master • 76ee81d • 7 files, +59/-10 Add pollOption.media. tdlib/td/master • 325ee23 • 4 files, +18/-4 Improve poll dependencies. tdlib/td/master • e71643c • 5 files, +33/-2 Support polls in get_message_content_file_ids. tdlib/td/master • c959fa9 • 10 files, +101/-0 Add td_api::addPollOption. tdlib/td/master • af3ecdc • 10 files, +91/-2 Add td_api::deletePollOption. tdlib/td/master • 6fdfcd5 • 29 files, +37/-31 Various improvements. tdlib/td/master • f13fb01 • 2 files, +7/-3 Add messagePoll.can_add_option. tdlib/td/master • 4cdbf0d • 2 files, +6/-8 Remove messageProperties.can_add_poll_option. tdlib/td/master • 9b64325 • 1 files, +3/-0 tg_cli: support td_api::searchMessagesFilterPoll. tdlib/td/master • 25968c6 • 2 files, +2/-1 Disable getBotToken for users. tdlib/td/master • c2d3c72 • 1 files, +4/-4 Improve documentation. tdlib/td/master • 4960d19 • 1 files, +1/-1 Don't update recent option voters for bots. tdlib/td/master • 0cf6a1c • 1 files, +1/-1 Improve can_get_poll_voters for bots. tdlib/td/master • 3c8e78a • 1 files, +1/-1 Don't shuffle poll answers for bots. tdlib/td/master • 413c73f • 2 files, +3/-3 Improve update name. tdlib/td/master • 9850f4e • 1 files, +1/-1 Don't adjust vote count if it is unavailable. #tdlib

Hashtags

Telegram github commits and releases

@tgappsupdates · Post #19592 · 17.03.2026 г., 09:33

tdlib/td/master • 9dac11c • 2 files, +7/-13 Use keep_only_custom_emoji in PollManager. tdlib/td/master • 8bea6ac • 4 files, +4/-4 Remove unused context capture. tdlib/td/master • 338e4e5 • 6 files, +9/-9 Remove more unused context captures. tdlib/td/master • 0ae923c • 8 files, +237/-158 Add class ProxyChecker. #tdlib

Hashtags

Telegram github commits and releases

@tgappsupdates · Post #19508 · 03.03.2026 г., 12:18

tdlib/td/master • 9722906 • 1 files, +4/-1 Improve logging of invalid PhotoSizeSource. tdlib/td/master • 49990cc • 1 files, +1/-1 Improve logging in QuickReplyManager::on_external_update_message_content. tdlib/td/master • e87fe28 • 1 files, +14/-0 Improve reregister_message_content. tdlib/td/master • f47fb4e • 1 files, +1/-1 Fix typo for sender_tag and textEntityTypeDateTime in td_api.tl (#3593) Fix typo in textEntityTypeDateTime description #tdlib

Hashtags

Telegram github commits and releases

@tgappsupdates · Post #19484 · 01.03.2026 г., 10:03

tdlib/td/master • 865d963 • 11 files, +167/-73 Support sending of call rating and debug from messages. tdlib/td/master • b993969 • 2 files, +9/-4 Add messageCall.unique_id. tdlib/td/master • ce554f1 • 1 files, +3/-0 Fix is_has_protected_content_changed for loaded from database users. tdlib/td/master • 6d3ecbd • 2 files, +23/-23 Add linkPreviewTypeEmbeddedAnimationPlayer.animation. tdlib/td/master • 0ad0ec5 • 2 files, +26/-26 Add linkPreviewTypeEmbeddedAudioPlayer.audio. tdlib/td/master • 1c2a5bf • 2 files, +26/-30 Add linkPreviewTypeEmbeddedVideoPlayer.video. tdlib/td/master • 841776c • 1 files, +1/-1 Tg_cli: improve setChatMessageAutoDeleteTime. tdlib/td/master • 86dfd70 • 4 files, +22/-23 Send the whole message in updateChatReplyMarkup. tdlib/td/master • d22c842 • 1 files, +1/-1 Fix saving of need_restore_reply_markup. tdlib/td/master • 50c75a1 • 1 files, +5/-4 Fix setChatMemberTag. tdlib/td/master • 2ef2290 • 1 files, +6/-2 Add story rating debug. tdlib/td/master • 6fa0b5d • 8 files, +19/-14 Minor fixes. tdlib/td/master • dd25dd3 • 1 files, +1/-1 Fix constant type. tdlib/td/master • 05ad725 • 1 files, +1/-0 Ignore rank in the old status. tdlib/td/master • e597838 • 8 files, +9/-9 Update version to 1.8.62. #tdlib

Hashtags

Telegram github commits and releases

@tgappsupdates · Post #19410 · 07.02.2026 г., 08:33

tdlib/td/master • 6ebb3ec • 1 files, +2/-2 Don't log Clocks::system() twice. tdlib/td/master • f4ca2b5 • 1 files, +2/-2 Improve field name. tdlib/td/master • 9353079 • 2 files, +7/-3 Add call.unique_id. tdlib/td/master • 8206e97 • 3 files, +11/-4 Add groupCall.unique_id. tdlib/td/master • f64052c • 2 files, +4/-3 Add messageGroupCall.unique_id. tdlib/td/master • 676f35a • 2 files, +52/-0 Store recent call identifiers. tdlib/td/master • 1d3f112 • 3 files, +35/-7 Store access hash in MessageCall. tdlib/td/master • 559c053 • 2 files, +10/-0 Add CallActor::get_input_phone_call_to_promise. tdlib/td/master • 70f80c4 • 4 files, +136/-77 Move sendCallRating to CallManager. tdlib/td/master • 756a05d • 2 files, +46/-10 Add giftResaleResultOk.received_gift_id. tdlib/td/master • 6bcc2f8 • 3 files, +4/-3 Minor improvements. tdlib/td/master • 0c7d8be • 2 files, +9/-3 Cache forum topics for no more than 1 minute. tdlib/td/master • 11e254a • 8 files, +9/-9 Update version to 1.8.61. #tdlib

Hashtags

ПредишнаСтр. 1 от 4Следваща