2014 dxdy logo

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

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


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


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



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


05/10/17
9
Подскажите, пожалуйста, как в Excel можно описать задачу оптимизации расписания.
В этой задачи есть 2 типа переменных:
1. время выполнения каждого задания на машине;
2. последовательность выполнения заданий,т.к. от последовательности зависят потери, влияющие на целевую функцию.
Если с первым типом нет проблем, то как реализовать второй тип в Excel никак не пойму. Как последовательность описать через систему уравнений? Задавать как переменные время начала или окончания каждой задачи? Как? Этих времен понятное число комбинаций, нужно выбрать нужную, но как ее прописать в системе уравнений?

Интересует принцип, не с т.з. практического применения, а с целью поиграться, поискать закономерности, поразбираться с подходами.

Заранее спасибо за помощь!

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение09.10.2017, 20:36 
Заслуженный участник


20/08/14
11151
Россия, Москва
Может неравенствами, время начала зависимого задания не меньше времени окончания предыдущего?

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение09.10.2017, 20:37 
Заслуженный участник
Аватара пользователя


23/07/08
10649
Crna Gora
Для каждого задания надо задать целое число — номер этого задания в последовательности заданий.

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


05/10/17
9
Dmitriy40 в сообщении #1254323 писал(а):
Может неравенствами, время начала зависимого задания не меньше времени окончания предыдущего?

Последовательность заданий и есть цель оптимизации, мы не можем jодновременно написать А>B и B>A

-- 09.10.2017, 20:46 --

svv в сообщении #1254325 писал(а):
Для каждого задания надо задать целое число — номер этого задания в последовательности заданий.

Я и пошел таким путем, сделав индекс последовательности переменной, вроде получилось. Но почитал теорию, решил попробовать, как рекомендуют через время начала или окончания задания, и зашел в тупик...

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение09.10.2017, 20:54 
Заслуженный участник


20/08/14
11151
Россия, Москва
Sturmer в сообщении #1254328 писал(а):
мы не можем jодновременно написать А>B и B>A
И не нужно, задания не могут зависеть друг от друга, значит одно из неравенств лишнее. Другое дело что задание может зависеть от нескольких, но это тоже выражается несложно: $t_a>t_b+\Delta_b,\;t_a>t_c+\Delta_c,\;t_a>t_d+\Delta_d,\;...$.

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение09.10.2017, 20:57 
Заслуженный участник
Аватара пользователя


23/07/08
10649
Crna Gora
По-моему, хранить целую переменную «номер задания в последовательности» гораздо удобнее, чем время начала.
Допустим, нужно задания переставить. В первом случае Вы просто переставляете значения их номеров. Во втором — требуется пересчитывать время начала для каждого задания, и это совсем не сводится к перестановке, потому что у них длительности выполнения разные.

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение09.10.2017, 21:03 
Заслуженный участник


20/08/14
11151
Россия, Москва
С целыми конечно удобнее, кто ж спорит.
Вот только для одного потока вся задача смысла не имеет, суммарное время выполнения в любом порядке будет одним и тем же.
В многопоточном варианте при любой перестановке придётся проверять допустимость перестановки, чтобы заданию не улететь раньше его зависимостей. И тут уж без разницы сравнивать целые числа номеров или времена (которые тоже можно привести к целым, хоть в фемтосекундах). И от длительности заданий тоже не уйти. Единственное что можно хранить времена окончания заданий, а не начала, тогда проверки чуть проще. В общем не вижу кардинального преимущества номеров перед временами.

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


05/10/17
9
Dmitriy40 в сообщении #1254331 писал(а):
Sturmer в сообщении #1254328 писал(а):
мы не можем jодновременно написать А>B и B>A
И не нужно, задания не могут зависеть друг от друга, значит одно из неравенств лишнее. Другое дело что задание может зависеть от нескольких, но это тоже выражается несложно: $t_a>t_b+\Delta_b,\;t_a>t_c+\Delta_c,\;t_a>t_d+\Delta_d,\;...$.


Не пойму только как это в Excel реализовать. Можете помочь подсказать?

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение09.10.2017, 21:19 
Заслуженный участник


20/08/14
11151
Россия, Москва
Вот как раз про Excel и не подскажу (потому даже сомневался стоит ли упоминать). Но вроде бы он позволяет решать не только уравнения, но и неравенства.

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


05/10/17
9
Dmitriy40 в сообщении #1254342 писал(а):
Вот как раз про Excel и не подскажу (потому даже сомневался стоит ли упоминать). Но вроде бы он позволяет решать не только уравнения, но и неравенства.

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

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение09.10.2017, 21:49 
Заслуженный участник


20/08/14
11151
Россия, Москва
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.$$

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение09.10.2017, 21:57 
Заслуженный участник
Аватара пользователя


23/07/08
10649
Crna Gora
Dmitriy40 в сообщении #1254337 писал(а):
В общем не вижу кардинального преимущества номеров перед временами.
Ну как же ж? Дело не в типе, пускай время — тоже целая переменная. Допустим, у нас есть 10 заданий с номерами $k$ от $1$ до $10$ (мы их не храним). Время начала первого задания $0$. В табличке хранится длительность $d_k$ и время окончания $f_k$ каждого задания:
$\begin{array}{ccc}k&d_k&f_k\\1&10&10\\2&5&15\\3&7&22\\4&5&27\\5&3&30\\6&4&34\\7&7&41\\8&5&46\\9&7&53\\10&2&55\end{array}$
Теперь я хочу только поменять местами первое и последнее задание. Результат: приходится пересчитывать весь правый столбец $f_k$. Там появляются числа, которых раньше не было в помине:
$\begin{array}{ccc}k&d_k&f_k\\1&2&2\\2&5&7\\3&7&14\\4&5&19\\5&3&22\\6&4&26\\7&7&33\\8&5&38\\9&7&45\\10&10&55\end{array}$
Вопрос: зачем это нужно?

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение09.10.2017, 23:21 
Заслуженный участник


20/08/14
11151
Россия, Москва
А смысл вообще иметь 3-ю колонку если при любых перестановках общее время (сумма второй колонки) не меняется и оптимизировать нечего? Или в задаче есть ещё какие-то не обозначенные условия, влияющие на время выполнения заданий. Без них случай с одним потоком выполнения заданий тривиален и не интересен: выполняй любое готовое к выполнению (т.е. уже выполнены все задания, от которых зависит это) задание, да и всё, автоматом получишь оптимальное решение.

Вот когда потоков выполнения больше одного и есть зависимости между заданиями, вот тогда и становится интересно. Пример (указаны длительности заданий):
Поток $1: 3, 6, 7, 5$.
Поток $2: 4, 2, 1, 8$.
Если зависимости заданы как $3 \to 2, 2 \to 1, 1 \wedge 6 \to 7$, то я посмотрю как Вы попытаетесь переставить задания $6 \leftrightarrow 3$. И что при этом придётся вычислять и проверять.

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение09.10.2017, 23:26 
Заслуженный участник
Аватара пользователя


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

 Профиль  
                  
 
 Re: Оптимизация расписания типа Job Shop
Сообщение09.10.2017, 23:33 
Заслуженный участник


20/08/14
11151
Россия, Москва
Ок. Меня сбило слово "расписания" в топике и тексте. Если задания можно переставлять без ограничений, то действительно с номерами удобнее.

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

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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