2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Оптимизация расписания типа Job Shop
Сообщение09.10.2017, 23:39 


05/10/17
9
svv в сообщении #1254364 писал(а):
Dmitriy40 в сообщении #1254363 писал(а):
А смысл вообще иметь 3-ю колонку
Так а я о чём? :-)
Dmitriy40 в сообщении #1254363 писал(а):
общее время (сумма второй колонки) не меняется и оптимизировать нечего
Оптимизируется целевая функция (см. стартовое сообщение). Помимо общей продолжительности выполнения (не зависящей от порядка), она включает всякие «хорошо–нехорошо», зависящие от порядка выполнения.

Все верно. Я не стал сразу писать это усложнение, чтобы не запутывать. Но задача будет усложнена тем, что при смене заданий, появляется время на переналадку, которое зависит от матрицы переходов. Без наличия такого условия оптимизировать по последовательности выполнения не имеет смысла. Эти дополнительные временные интервалы между заданиями, как мне кажется проще вычислять используя индекс последовательности, а не время начала или окончания.
ПыСы Поток пока один.

-- 09.10.2017, 23:44 --

Dmitriy40 в сообщении #1254348 писал(а):
Sturmer в сообщении #1254345 писал(а):
А не моли бы вы написать полный набор неравенств для случая из 3-х заданий? А то я что-то, не пойму и туплю.
Ну ... А я туплю с заданием перестановок заданий и запретом одновременного выполнения ... Условия же на зависимость заданий несложно. Предположим что 2-е задание зависит от 1-го, третье - тоже только от первого. Обозначим время начала задания как $t_i$, длительность задания как $\Delta_i$.$$\left\{
\begin{array}{rcl}
t_1 &\ge& 0 \\
t_2 &\ge& t_1+\Delta_1 \\
t_3 &\ge& t_1+\Delta_1 \\
\end{array}
\right.$$

Здесь задана жесткая последовательность выполнения. Мы не можем Т3 поставить раньше Т1, а это, например, может быть оптимальным решением.

-- 09.10.2017, 23:50 --

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

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение10.10.2017, 17:31 


17/10/08

1313
В виде уравнений записать непересекаемость задач на одной машине можно с помощью псевдобулевых переменных. Это нужно сделать для каждой пары задач.
Для любой пары задач должно выполняться одно из условий:
$t_i \ge t_j+d_j$ или
$t_j \ge t_i+d_i$
Пусть $b_ij$ - переменная, которая принимает значение 0 при выполнении первого неравенства, и 1 - при выполнении второго. Тогда
$t_i \ge t_j+d_j - b_{ij}M$ и
$t_j \ge t_i+d_i - (1-b_{ij})M$
Где $M$ - достаточно большое число.

Это приводит к частично-целочисленным задачам. Решаются пакетами (линейного программирования) очень плохо.
Гораздо лучше результаты по технике а-ля "программирование в ограничениях"

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение10.10.2017, 18:46 


05/10/17
9
mserg в сообщении #1254542 писал(а):
В виде уравнений записать непересекаемость задач на одной машине можно с помощью псевдобулевых переменных. Это нужно сделать для каждой пары задач.
Для любой пары задач должно выполняться одно из условий:
$t_i \ge t_j+d_j$ или
$t_j \ge t_i+d_i$
Пусть $b_ij$ - переменная, которая принимает значение 0 при выполнении первого неравенства, и 1 - при выполнении второго. Тогда
$t_i \ge t_j+d_j - b_{ij}M$ и
$t_j \ge t_i+d_i - (1-b_{ij})M$
Где $M$ - достаточно большое число.

Это приводит к частично-целочисленным задачам. Решаются пакетами (линейного программирования) очень плохо.
Гораздо лучше результаты по технике а-ля "программирование в ограничениях"

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

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение12.10.2017, 02:31 


17/10/08

1313
Простые методы, к сожалению, не эффективны для качественного решения таких задач.

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

Такого, чтобы прочитать и запрограммировать, - не знаю.
К тому же эффективность сильно зависит от критерия. А если ресурс не бинарный, то все становится еще хуже.

Сложные методы сочетают в себя множество техник
* Эвристический поиск допустимых решений
* Локальная оптимизация
* Поиск а-ля метод "ветвей, границ и отсечений"
* Сжатие интервалов переменных начала/окончания работ
И т.д. и т.п., и все это управляется сложной системой, которая оттачивается на (тестовом) множестве задач (реальных или сгенерированных).

Есть коммерческие пакеты типа ILOG Scheduler, можно поискать руководство по фразе:
ilog scheduler manual
Довольно полезная штука в плане понимания техники описания подобных задач и терминологии.
Может быть есть возможность бесплатного использования для учебных заведений, но раньше даже за это просили деньги.

В свое время игрался с ILOG Scheduler. Задачи с критерием минимума окончания последней задачи решались довольно быстро. Но стоило задать кумулятивный критерий, как "решатель" завис.

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение24.10.2017, 18:38 


05/10/17
9
mserg в сообщении #1255017 писал(а):
Есть коммерческие пакеты типа ILOG Scheduler, можно поискать руководство по фразе:

ILOG Scheduler больше не существует, теперь он называется IBM Decision Optimization Center и стоит сумасшедших денег, а самое -
неприятное, что его нельзя попробовать не купив.
Хочется найти ему альтернативу. Задачи бывают разные по размеру. Нередко в бизнесе встречаются довольно небольшие задачи, хочется попробовать решить их с помощью например SolverStudiо + cолвер в зависимости от размера задачи и бюджета.
Возможности SolverStudiо по переменным и ограничениям более или менее понятны, хочется определиться с алгоритмами, т.к. от них напрямую зависит возможность решения, а также производительность.

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение24.10.2017, 22:34 


17/10/08

1313
Как и предполагалось, попробовать/скачать встречным/поперечным ILOG Scheduler, которого теперь "больше не существует", нельзя. Припоминаю, это случилось после покупки ILOG компанией IBM.

А вот в компании, в которой я работаю, почему-то можно :-). По-крайней мере, CPLEX я скачивал и пробовал 1-2 года назад. Цена меня, конечно, потрясла...

В общем-то, я зачем давал ссылку... Описываются такие задачи с помощью специального языка, который включает в себя Работы, Отношения между ними, Ресурсы, Резервуары и т.д. Где-то была у этих "врагов" ссылка со сборником алгоритмов по scheduling ... но это было лет 5-10 назад... имеет смысл еще поискать.
В SolverStudiо, кстати, не заметил поддержку некоммерческих продуктов с scheduling - может невнимательно смотрел.

Припоминаю, я находил статьи тут:
http://citeseerx.ist.psu.edu
Что-нибудь типа jobshop, scheduling и т.п. Неплохо бы знать "основы" "Constraint Programming"...

При чтении статей "моск" может сломаться - будьте осторожнее. Сейчас вспомнил, что один француз в статье написал, что у другого француза в алгоритме ошибка (в научной статье!). И точно ведь, ошибка была - потратив часов 5 на изучение алгоритма в 20-30 строк, понял где эта ошибка была.

Запрограммировать общий алгоритм - это несколько лет жизни ...
Вас, как я понимаю, это не остановит.

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение25.10.2017, 01:06 


05/10/17
9
mserg в сообщении #1258730 писал(а):
Как и предполагалось, попробовать/
А вот в компании, в которой я работаю, почему-то можно :-). По-крайней мере, CPLEX я скачивал и пробовал 1-2 года назад. Цена меня, конечно, потрясла...

CPLEX можно найти, но он не поддерживает "специальный язык", как Sheduler, я так понимаю sheduler\IBM ILOG Optimazer center как раз и переводит со специального языка расписаний в язык солвера CPLEX.
mserg в сообщении #1258730 писал(а):
В общем-то, я зачем давал ссылку... Описываются такие задачи с помощью специального языка, который включает в себя Работы, Отношения между ними, Ресурсы, Резервуары и т.д. Где-то была у этих "врагов" ссылка со сборником алгоритмов по scheduling ... но это было лет 5-10 назад... имеет смысл еще поискать.

Я почитал по вашей наводке мануал к ILOG SCHEDULER 2005, там как раз и описан используемый там язык моделирования. Спасибо! Многое прояснил для себя.
mserg в сообщении #1258730 писал(а):
В SolverStudiо, кстати, не заметил поддержку некоммерческих продуктов с scheduling - может невнимательно смотрел.

Тоже не заметил, пойду спрошу у них. Во всяком случае, я задавал им вопрос об использовании SolverStudio под 300K переменных. Ответ - используй Julia. Надо бы порыться в библиотеках для джулии,может что-нибудь уже написали специально под расписания.
mserg в сообщении #1258730 писал(а):
Припоминаю, я находил статьи тут:
http://citeseerx.ist.psu.edu
Что-нибудь типа jobshop, scheduling и т.п. Неплохо бы знать "основы" "Constraint Programming"...

Спасибо, поковыряюсь.
mserg в сообщении #1258730 писал(а):
Запрограммировать общий алгоритм - это несколько лет жизни ...

Поэтому, видимо, ILOG и GUROBI столько стоят.
mserg в сообщении #1258730 писал(а):
Вас, как я понимаю, это не остановит.

Я не псих, хочу понять и выработать оптимальный подход к этой проблеме. Хочется нащупать границу до куда будет работать эксель +открытые солверы, где нужно сразу ориентироваться на ILOG или GUROBI. Больше всего мне понравился на сайте IBM пример задачки для CPLEXa по оптимизации выпуска продукции исходя из имеющегося сырья. Я использовал решения таких задач для металозавалки 18 лет назад в экселе, конечно наверное многое зависит от количества сырья и продукции, но не думаю, чтобы их было так много, чтобы эксель сегодня не справился. А вот календарное планирование ресурсы жрет...

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение25.10.2017, 02:00 


17/10/08

1313
На счет солверов ILOG все не совсем так...
* CPLEX - решение задач (в том числе частично целочисленных) линейного и квадратичного программирования
* CP (Contstraint Programming) - решение задач, сформулированных в ограничениях (типа любые (целочисленные) алгебраические задачи небольшой размерности).
* Scheduler - это, можно сказать, подвид CP, в котором учитываются специфические ограничения, и за счет чего достигается эффективность.

Поэтому нужно сформулировать задачу на языке OPL и (как правило) выбрать солвер. Более того, за CPLEX кроется несколько солверов. В частности, есть солвер решения задач методом внутренней точки (у них он назывался кажется "барьерный" метод) - эта штуковина решает задачи с миллионами переменных/ограничений.

Поэтому, OPL не транслирует в CPLEX, если это это задача с ресурсами/резервуарами, а не линейная/квадратичная.

300К переменных, если они целочисленные, это только коммерческие солверы. И не факт, что что-то можно решить. Кроме CPLEX и Gorobi еще можно посмотреть LocalSolver.

Из некоммерческих - единственный вариант - CBC Solver - остальное практически не работает.
Из полукоммерческих - SCIP Solver.
http://scip.zib.de/

Если будут практические негигантские задачи, можете обращаться.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group