Как стать автором
Обновить

Комментарии 15

Спасибо за статью!
Не знал что такие интересные конкурсы проводятся. Поэтому возникает вопрос, где можно отслеживать анонсы подобных мероприятий? Что бы потом самому поучаствовать

Раз вы были на награждении лично, то интересно узнать почему было три призовых места, но всего 2 победителя?

И к тому же очень громадный разрыв у вас со вторым номером по целевой ф-ции.

Добрый вечер! Это мой первый опыт участия в подобных мероприятиях. Я нашел его совершенно случайно, когда занимался поиском информации по схожей теме. Единственное, на что приходится надеяться, что таких конкурсов (связанных с математическим моделированием) в будущем будет намного больше. Или даже появится платформа, на которой можно было бы узнавать об анонсах.

Относительно призовых мест и разрыва в решении - я думаю, что задача оказалась слишком сложной для большинства уччастников.

Здравствуйте!

Подскажите это нормально что на схеме для большинства станков визуально 90%+ времени это переналадка?

В первом примере есть оцифрованный результат во втором нету :( И вообще не понятны критерии оптимальности если не читать задачу из репы

Добрый вечер!

1) Длительность переналадки и изготовления продукции является константой для каждой связки "оборудование -> полуфабрикат". Таковы были входные данные для конкурсного задания. В наборах данных, которые прилагались к конкурсному заданию, есть таблицы subproduct и switch_time. В таблице subproduct указана длительность изготовления полуфабрикатов на выбранном оборудовании, а в таблице switch_time - время переналадки оборудования перед началом изготовления полуфабриката.

2) Критерием оптимальности является максимизация выручки предприятия на фиксированом горизонте планирования. Чем больше мы выполним прибыльных заказов, тем лучше. При этом заказ может состоять из нескольких конечных продуктов. Частичное выполнение заказа к отчетной дате добавляет 0 ед. к выручке.

Да, я понимаю. Обычно производству партии деталей предшествует переналадка оборудования. Тут выглядит так как будто мы производим переналадку перед каждой штукой детали. Просто интересно действительно ли это может бы оптимально ведь это противоречит обыденному здравому смыслу? :)

Правильно понимаю, что надо было сделать 553 изделия? Сколько успел сделать ваш алгоритм? Сколько алгоритмы других участников?

Просьба не принимать за критику, мне действительно интересно :)

Согласен. Переналадка должна происходить не перед каждым отдельным изделием, а должна быть привязана к их типу. Для данного случая было бы целесообразно настроить алгоритм на минимизацию простоя оборудования, как дополнительного или альтернативного критерия. Сформировать несколько сценариев с различными целевыми функциями или с комбинированным критерием. Так же возникает сопутсвующая проблема со складскими помещениями и внутрицеховой логистикой. Ведь если мы производим изделия по типам, то значит они относятся к различным группам заказов, и некоторые изделия могут быть произведены намного раньше требуемого срока. Тогда задача будет еще на шаг ближе к реальности, но и сложность её возрастает существенно. Я думаю организаторы конкурса пощадили участников, и заведомо упростили условия:)

При полностью загруженном оборудовании у вас не будет максимизации выполненных заказов. Наоборот — будут срывы сроков поставки.
Реальная жизнь отличается от чистой математики. Нужен некоторый запас по производительности. И чем ближе к началу технологической цепочки — тем он должен быть больше. Чтобы была возможность догнать план.

Добрый день!

Если мы говрим о разработке полноценной системы, которая создает исполнимые планы операций, то разрабатывается комплекс мат моделей. Именно для учета всех сопутсвующих бизнес-ограничений. Обычно их называют интегрированные системы планирования. Например, в моем последнем проекте было разработано 8 сообщающихся мат моделей, объединенных в одну систему. Для каждого частного случая - свой подход.

А вы какие-нибудь инструменты кроме «Google OR-Tools» используете для задач линейного программирования?

Из условно бесплатных SCIP, COPT Cardinal. В основном работал с CPLEX, и немного с Gurobi.

Матерь божья… По этому ещё конкурсы проводят? Это же типичная задача для любого завода, которая уже запрограммирована лет 30 назад. Там ещё до кучи трудоёмкость, стоимость деталей в незавершёнке, полная себестоимость изделия, разузлование, учёт МБП, движение деталей по складам и прочая и прочая и прочая… Без фигм и ангуларов.

Конкурс, на сколько я знаю, был предназначен для широкого круга заинтересованных людей, разного уровня знаний и подготовки. Поэтому проводить конкурсы по данной тематике я считаю не просто важным, а необходимым.

На большинстве заводов в Российской Федерации не реализованы системы пооперационного планирования, и планирование ведется на бумажках, в головах и в лучшем случае - в экселе. Если вы поделитесь примером реализации, то я думаю всем будет интересно об этом почитать.

На большинстве заводов в Российской Федерации не реализованы системы пооперационного планирования, и планирование ведется на бумажках, в головах и в лучшем случае — в экселе.

Вы это сейчас серьёзно сказали? Нифига себе…

Мы это делали в 90-е годы. Писали ещё на Clipper-e под DOS-ом.

Основа всего — технологическая карта, где расписаны все операции, затраты времени, расходных и покупных материалов. Расходные и покупные напрямую идут в стоимость, затраты времени — через стоимость нормочаса для данного типа операций. Плюс наворачиваются общезаводские расходы и амортизация оборудования. Добавляется прибыль — получаем цену. Нам всё это надо было учитывать, т.к. изделия от заказа к заказу различались, а состояли из десятков тысяч деталей.

Кстати, из этого выплывает ещё один момент — стоимость деталей в незавершённом производстве. То есть, деталей, на изготовление которых уже потрачены ресурсы, но они ещё не проданы покупателю в составе готовых изделий. Этот параметр надо минимизировать, т.к. это вынутые из оборота средства, а иногда ещё и банковский кредит под это взят.

Ну и, зная, какой будет план и зная, какие нужны будут материалы, формируется список для отдела снабжения, чтобы всё необходимое для производства было заранее закуплено.

Эм-м-м… Что-то мне кажется, что я пересказываю учебник «Технико-экономическое планирование производства» ? Представьте себе, в Советском Союзе оно было и даже преподавалось программистам. Программист ведь должен приносить пользу народному хозяйству. Поэтому нас натаскивали досконально, знали предметную область от и до.

Я, честно говоря, офигел, когда пошла мода на Machine Learning. Мы-то, дурачьё, даже и не догадывались, что предмет «Математическое моделирование и оптимизация» можно раскрутить с эдаким размахом! Целевые функции, градиенты, линейное программирование… Я это уже и забыть всё успел, а оно вона как вышло.
Вы это сейчас серьёзно сказали? Нифига себе

Расскажите о своем опыте, будет интересно
Да у меня память-то не электронная. Это был где-то 97-98 год. Забылось уже всё. Единственно могу сказать, что никаких сложностей с программированием не было. Да, задачка была немаленькая. Год неспешной работы двух человек на техпроцессы и ещё год, чтобы ко всему этому деньги прикрутить. Может и быстрее справились-бы, но в те времена работали по ватерфолу, планы писались сразу на год, не было смысла спешить.

А через несколько работ после того завода я работал ещё на одном заводе. И там тоже были заведены в комп все техпроцессы и на основе этого всё считалось.

Поэтому я и удивился — работал на двух заводах, на двух заводах оно было. Маленький провинциальный городок, маленькие зарплаты, программисты — не какие-то звёзды разработки, обычные работяги, которые были в наличии. Спокойно, без напряга всё написали. То есть, это отнюдь не какой-то рокет сайнс.

Основная сложность во всём этом деле — заставить технологов ввести данные в компьютер. На втором заводе реально до слёз доходило (технологи — женщины). Помогло только то, что их таблицы перестали в Эксель влезать. Да, я видел людей, которые дошли до последней ячейки экселя ?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории