Опубликован: 06.11.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Новосибирский Государственный Университет
Лекция 7:

Прикладные задачи дискретного программирования

< Лекция 6 || Лекция 7: 123 || Лекция 8 >

Задача теории расписаний

Общая задача теории расписаний. В отечественной литературе эту задачу обычно называют задачей календарного планирования. Общую ее схему можно описать следующим образом. Имеется m станков и n деталей, каждая из которых должна пройти обработку на всех станках в определенном порядке. Этот порядок может быть одинаковым для всех деталей либо различным для разных их групп. При этом производственные операции считаются неделимыми (начав обработку детали j на станке i, мы должны довести эту обработку до конца, не имея права прервать ее).

Задана матрица A=||a_{ij}||, где a_{ij}\ge 0 — время, необходимое для обработки j -й детали на i -м станке (a_{ij}=0 для тех деталей j, которые не требуют обработки на станке i ). Требуется указать такой порядок запуска деталей в обработку, который минимизировал бы общее время выполнения всех работ (длину производственного цикла).

Непосредственному решению (путем перебора всех вариантов) эта задача не поддается, так как при этом уже в простейшем случае одинакового порядка прохождения деталей пришлось бы выбирать наименьшую из n! величин. При больших n это практически неосуществимо даже с использованием быстродействующих электронных машин. Несмотря на огромное прикладное значение этой задачи (описанная модель или ее варианты являются схемами основной массы задач по организации производства), пока удалось получить ее решение только для случая двух машин (алгоритм Джонсона, лекция №17) m=2. Вместе с тем случай m > 2 до сих пор доставлял весьма серьезные теоретические и вычислительные затруднения. Постановка задач этого класса в виде целочисленных задач линейного программирования является одним из перспективных путей продвижения в этом направлении.

Известно несколько формулировок задачи теории расписаний в виде целочисленных задач линейного программирования. Опишем одну из возможных постановок для которой является идея А. С. Мэн ( Мэн А.С. Задача календарного планирования для предприятий единичного и мелкосерийного производства. Сб. "Календарное планирование", М. , "Прогресс", 1966, гл.12.).

Одна из возможных постановок задачи теории расписаний.

Не умаляя общности, можно считать a_{ij} целыми числами. Составление графика обработки деталей будем связывать с "календарем", "дни" которого занумерованы целыми числами 0,1,...,T, где T настолько велико, чтобы заведомо обеспечить возможность обработки всей партии.

Введем неотрицательные целочисленные переменные , принимающие значения 0,1,...,T. Здесь x_{ij} указывает "дату" начала обработки i -м станком j -й детали. Рассмотрим условия, которым должны удовлетворять x_{ij}.

  1. Прежде всего нужно наложить ограничение, не допускающее одновременной обработки на одном станке двух деталей. Для этого моменты начала обработки любых двух деталей j,k должны отстоять по "календарю" не менее чем на длительность обработки той из них, которая запускается первой, то есть

    x_{ij}-x_{ik} \ge a_{ik}\  или\ x_{ik}-x_{ij}\ge a_{ij} ( 7.25)

    В обычную задачу линейного программирования альтернативное условие типа (7.25.) ввести нельзя. Определим целочисленные переменные y_{ijk}, принимающие значения 0 или 1. Тогда (7.25.) можно переписать в виде

    (T+a_{ik})y_{ijk} + (x_{ij} - x_{ik}) \ge a_{ik} ( 7.26)
    ,

    (T+a_{ij})(1-y_{ijk}) + (x_{ik} - x_{ij}) \ge a_{ij} ( 7.27)

    Отметим очевидное неравенство |x_{ij}-x_{ik}|\le T, вытекающее из определения T. Ясно, что случай x_{ij} - x_{ik}=0 невозможен, то есть обработка двух разных деталей не может начаться на одном станке одновременно, ибо в этом случае неравенства (7.26.) удовлетворялись бы только при y_{ij}=1, а неравенства (7.27.) – только при y_{ijk}=0. Если x_{ij}-x_{ik} > 0, то y_{ijk} в (7.26.) может быть равен нулю или единице, а в (7.27 ) – только нулю, так что единственным возможным значением здесь будет y_{ijk}=0. Если же x_{ij}-x_{ik} > 0, то y_{ijk} в (7.26.) может быть равен только единице, а в (7.27.) и нулю и единице, так что в этом случае возможно лишь y_{ijk}=1.

    Отсюда ясно, что y_{ijk}=0, если на i -м станке обработка k -й детали предшествует обработке j -й детали, и y_{ijk}=1 в противном случае.

  2. Теперь следует отразить условия на заданный технологический порядок прохождения деталями обработки на станках. В данной формулировке в принципе безразлично, является ли этот порядок одинаковым для всех деталей или нет. Именно, если деталь должна быть обработана сначала на станке i, затем на станке l, то мы должны иметь

    x_{lj}-x_{ij}\ge a_{ij} ( 7.28)
    .

    Отсюда ясно, что случай x_{lj}-x_{ij}=0, то есть одновременное начало обработки одной детали на двух станках, возможен лишь при a_{ij}=0, то есть тогда, когда данная деталь на одном из этих станков вообще не должна обрабатываться.

    Для некоторых деталей условие упорядочения может налагаться лишь в следующей ослабленной форме: деталь j должна пройти обработку на станках i_1 и i_2, в любом порядке, затем на станке l. Тогда условие (7.29.) заменится следующими двумя условиями:

    x_{lj}-x_{i_1j} \ge a_{i_1 j}, x_{lj}-x_{i_2j}\ge a_{i_2j} ( 7.29)

    Можно дать еще вариант условий этого типа, считая что деталь j между обработкой на станках i и l должна пролежать время \tau_{il}^{t} (целое число) . В этом случае

    x_{lj}-x_{ij}=a_{ij}+\tau_{il}^{j} ( 7.30)
    .

  3. Могут быть наложены дополнительные условия "на отправку" (то есть на сроки окончания отдельных работ). Так, если обработка детали j на станке i должна быть закончена к сроку d_{ij}, то

    x_{ij}+a_{ij}\le d_{ij} ( 7.31)
    .

  4. В качестве критерия оптимальности принимается минимизация общего времени обработки партии. Пусть t(\le T) — дата полного завершения работ. Нужно минимизировать t при условиях

    x_{ij}+a_{ij}\le t, i=1,2,...,m;j=1,2,...,n ( 7.32)

    и при условиях (7.26.), (7.27.), (7.28.) или его вариантах и, возможно, еще при условиях (7.31.).

Всего в этой модели приходится вводить p=mn+mC_n^2=mn(1+\frac{n-1}{2}) переменных (не считая t и свободных переменных). Эти переменные, кроме того, должны быть целочисленными. Для реальных задач даже самых скромных размеров это приводит к весьма громоздким моделям (так, при m=5

и n=10 мы получаем p=275 ).

Однако описанная модель, по-видимому, является одной из наиболее экономных в смысле размеров получающейся целочисленной задачи. Интересующийся теорией расписаний может посмотреть книгу Шурба В.В., Подчасова Т.П., Пшичук А.Н., Тур Л.П. , Задачи календарного планирования и методы их решения. (Киев, "Наукова думка", 1966.).

Задача о наилучшем распределении памяти вычислительной машины

Рассмотрим следующую упрощенную задачу о наилучшем распределении памяти вычислительной машины. Пусть П_{ij}j -я стандартная подпрограмма для вычисления функции i в библиотеке подпрограмм (i=1,2,...,m;j=1,2,...,n). Подпрограмма П_{ij} занимает p_{ij} ячеек памяти и требует для счета t_{ij} секунд. Требуется составить "программу" П, которая определяется заданием некоторого набора I индексов i, то есть функций, подлежащих вычислению (наличием иных команд пренебрегаем). При этом следует для составления программы П указать такой набор подпрограмм П_{ij}, чтобы длина всей программы не превосходила M ячеек, а время счета по ней было минимальным.

Как обычно в подобных случая, вводим переменные

x_{ij}=
\left\langle
\begin{array}{ccc}
\text{1, если }П_{ij}\text{ включается в П}\\ 
\text{0 в противном случае.}
\end{array}
\right ( 7.33)

Тогда наша задача сведется к минимизации

\sum\limits_{i=I}\sum\limits_{j=1}^{n} t_{ij}x_{ij} ( 7.34)

при условиях

\sum\limits_{i=1}^{n}x_{ij},i \in I; \sum\limits_{i \in I}\sum\limits_{j=1}^{n} p_{ij}x_{ij} \le M ( 7.35)
.

Задача финансирования исследовательских проектов

Рассмотрим финансирование исследовательских проектов. Пусть на протяжении T лет возможно осуществление исследовательских проектов. Ожидаемый эффект проекта j, выраженный в "сегодняшних" единицах полезности, составляет c_j,j=1,2,...n. Затраты в год i на осуществление проекта j составляют a_{ij}, а общий лимит капиталовложений на исследования в году i равен b_i, i=1,2,...,T. Требуется указать максимально эффективный набор проектов, не выводящий за пределы отпускаемых вложений.

Формализация этой задачи очевидна: если обычным образом ввест переменные

x_j	
\left\langle
\begin{array}{ccc}
\text{1, если проект j осуществляется,}\\ 
\text{0 в противном случае,}
\end{array}
\right ( 7.36)

то мы придем к задаче максимизации

\sum\limits_{j=1}^{n} c_jx_j

при условиях

i=1\sum\limits^{n} a_{ij}x_j\le b_i, i=1,2,...,T ( 7.37)
.

Задача из области экономики сельского хозяйства

Рассмотрим следующую упрощенную статическую модель распределения тракторных работ (Корбут А.А. Целочисленные задачи линейного программирования. В сб. "Эконом.-матем. методы", вып. 2, М., "Наука", 1965, 141-186.).

Имеется n типов сельскохозяйственных машин и m видов работ, подлежащих выполнению в объемах b_i, i=1,2,...,m (будем считать, что все эти объемы выражены в гектарах). Заданы производительность j -й машины на i -й работе a_{ij}, а также себестоимость d_{ij} обработки одного гектара работы i машиной j. Себестоимость самих машин (скажем, стоимость их покупки или аренды, взятая с некоторым коэффициентом приведения) составляет c_j? j =1,2,...,n. Следует найти оптимальный машинный парк для данного комплекса работ и указать его распределение по работам. Чтобы выполнить задание и добиться минимальной суммарной себестоимости, обозначим через x_{ij} количество машин каждого типа, а через y_{ij} — количество машин типа j, которое будет выделено на работу i. Тогда наша задача сведется к минимизации

\sum c_jx_j + \sum\limits_{i=1}^{m}b_i\sum\limits_{j=1}^{n}d_{ij}y_{ij} ( 7.38)

при условиях

x_j\ge 0, x_j\text{ — целые; }y_{ij}\ge 0,y_{ij}\text{ — целые,} ( 7.39)

x_j - \sum\limits_{i=1}^{m} y_{ij} \ge 0, j=1,2,...,n;\\ \sum\limits_{i=1}^{n} a_{ij}y_{ij}=b_i,i=1,2,...,m ( 7.40)

Отметим, что накладывать условие целочисленности на y_{ij} не обязательно, так как нецелые y_{ij} здесь вполне поддаются разумной интерпретации.

Таким образом, перед нами еще один пример задачи с неделимостями. Модель эта существенно усложнится, если дополнительно потребовать выполнения каждой работы в отведенные для нее агротехнические сроки; здесь мы не будем на этом останавливаться.

< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Данил Комардин
Данил Комардин

мне задали дистанционное задание на сертификат,но я не могу его найти

Илья Шаров
Илья Шаров
Россия
Андрей Савельев
Андрей Савельев
Россия, Магнитогорск