Целочисленное программирование

Математически эта задача формулируется следующим образом, найти максимум или минимум

R(x)=R(x1,x2,…xn)=Enj=1cjxj (1)

При ограничениях

Eaijxj<bi i=1,m (2)

Xj=>0, i=1,n (3)

xj-цене, i=1,p, p<=n (4)

если в (4) p=n-> то имеет место полностью целочисленная задача линейного программирования

p<n -> то частична задача ЛП

рассматриваются также задачи с булевыми переменными, с несколькими целевыми функциями.

Условие (4) накладывают задача на (1-3) линейного программирования дополнительные ограничения. Поэтому в общем случае задача результат будет меньше чем ЛПР, где хцпр-оптимальное решение задачи (1-4), а хЛПР-оптимальное решение задачи (1-3).

Источником дискретности и целочисленности могут быть:

1)физическая неделимость факторов нельзя купить 2,3 самолета, построить полдома

2)комбинаторность

3)размер и партии (иногда нельзя выпускать партии размером меньше чем предельно допустимы

ЦПР ЛПР

Пример

R(x)=R(x1,x2)=21x1+11x2->max (5)

При

7x1+4x2<=13 (6)

X1=>0, x2=>0 (7)

X1,x2-целые (8)

Имеем задачу целочисленного линейного программирования

Вначале решим графически задачу ЛПР (5-7) и если ответ будет целочисленный то задача решена.

Если ответ нецелочисленный, округлим результат до ближайшего целого числа.

TO(0,0)=R0=0

TA(0,3(1/4))=R

TB(13/7,0),Rb=

Ra=21*0+11*3(1/4)=35,75

Rb=21*13/7+11*0=139

Оптимальное решение (1-3)задачи ЛПР.

Таким образом решение оптимальным решением задачи (5-7) является (х1*,х2*)=(13/7,0)

R(x1*,x2*)ЛПР=39

Округление х1* до 2 невозможно, потому что это значение не является допустимым, оно не принадлежит области х, значит округлим х1 до 1.

Х1*ЦПР=1

Х2*ЦПР=0

R(x1*,x2*)ЦПР=21*1+11*0=21

Рассмотрим задачу ДПР(5-8) и нанесем целочисленные точки в область Х.

Вычислим значение целевой функции R(x) в целочисленных точках.

(0,0)=R=0

(1,0)=21

(0,1)=11

(0,2)=22

(0,3)=33

(1,1)=32

Таким образом оптимальной точкой в задача (1-8) ЛПР является точка (0,3).

Таким образом, следовательно, что задача целочисленного программирования решается значительно сложнее.

Трудности решения задач ЦПР существенно возрастают с ростом размерности задач, то есть с ростом n и m.

Методы решения делятся на 2 группы:

1)методы отсечения

2)перебора

Методы отсечения.

Вначале отбрасываются условия целочисленности (4) и решается задача ЛПР (1-3). Если оптимальное решение получается целочисленным, то задача решена, в противном случае к ограничениям (2-3) добавляется еще одно дополнительное линейное ограничение, которому не удовлетворяет полученное только что оптимальное нецелочисленное решение задачи ЛПР, а все целочисленные решения удовлетворяют. Геометрически это означает что новые ограничения отсекает от многогранника нецелочисленную вершину. Затем решается новая задача ЛПР и процесс повторяется для пополненной системы. Решение достигается за конечное число шагов.

Метод частичного перебора

(самый известный метод ветвей и границ).

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

Объем вычисления растет по экспоненте с ростом n.

 

Динамическое программирование (ДПр)

Ричард Беллман

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

Для более простых задач используется используются изученные раннее методы оптимизации.

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

При постановке задачи на целевую функцию не накладывается таких ограничений как, линейность, выпуклость, непрерывность и другие.

Будем рассматривать случаи когда доход для всего процесса, равен сумме доходов на каждой стадии.

Многошаговые процессы

Рассмотрим цепочку аппаратов в которых последовательно проходят переработку исходное вещество и получается некоторое вещество.

Рисунок

на каждой стадии имеется некое управление Ui, на вход каждой стадии подается вещество Pi, на выходе I стадии получается Pi+1(i=1,n). Очевидно что вектор на выходе каждой стадии зависит от его входа и управления на этой стадии,

P2=T(P1,U1)...

P3=T(P2,U2)

… (1)

Pn=T(Pn-1, Un-1)

Pn+1=T(Pn,Un)

должны быть известны математические модели. Задача управления таким процессом заключается в том, чтобы найти такие управления U1,U2…Un чтобы максимизировать некоторые критерии F(P1,P2…Pn,U1,U2…Un)=G(P1,U1,U2…Un).

При P1=const и известных математических моделях получается такая задача

F(P1,P2…Pn,U1,U2…Un)=G(P1,U1,U2…Un).-надо максимизировать (2)

При максимизации (2) выполняются математические модели 1, то есть имеет место задача уравнения связи и имеет место задача условной оптимизации.

В нашем случае надо найти n переменных, U1,U2,…Un. Использовать изученные методы нельзя:

А)по сколько чаще всего нет выражения G то нельзя дифференцировать, найти производные и прировнять к нулю. кроме решение часто находится на границах области изменения управления (основная трудность).

б)применяя не линейное программирование мы получаем лишь локальный экстремум, если использовать перебор то число вычислений огромно.

Критерий оптимизации в данном случае адъективный, то есть G зависит от P1, есть сумма gi, на отдельный стадиях от 1 до n, и каждая эта величина есть на входе, и что есть управление.

Есть сумма g1(P1,U1)+g2(P2,U2)+…gn(Pn,Un) так как число состояний на каждой стадии велико, число стадий также значительно то решение этой задачи крайне затруднитульно.

Идея метода ДПр

Основана на приеме которой в физике называется погружением.

Вместо исходной задачи с заданным начальным состоянием P1 и известным числом стадий n, рассматривается совокупность задач или некоторые множества задач с произвольным начальным состояние Р1 и различным числом стадий n, то есть рассматривается целый класс задач.

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

Проведя подобные рассуждения можно получить уравнение связи в виде

Fn(P1)=max[g1(P1,U1)+f(T(P1,U1))]

Где fn(p2) это максимальный доход полученный на n стадиях при известном начальном состоянии P1.

Fn-1(T(P1U1)) максимальный доход полученный на n-1 стадиях начиная со второй. Это уравнение связывает результаты оптимизации то есть функции fn, fn-1.

В основе динамического программирования лежит принцип оптимальности Беллмана. Характеризующий оптимальную политику.

Политика – это последовательность допустимых решений на отдельных стадиях.

Оптимальная политика – это последовательность управлений на отдельных стадиях которая максимизирует критерий оптимальности g.

Именно оптимальная политика обладает свойством:

1)каковы бы не было начальное состояние и первое решение, последующее решение должны составлять оптимальную политику по отношению к состоянию полученному в результате первого решения.

Рассматривая все стадии последовательно, начиная с последней, то есть решая задачу с конца:

1)последняя стадия

2)две последние и т.д.

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

Результатом является следующая система функциональных уравнений Беллмана.

 

Динамическое программирование

u1*, …, un*

результатом является следующая система Беллмана.

F2(Pn)=max gn(Pn, Un)

F2(Pn-1)=max [gn(Pn-1, Un-1)+f1(T(Pn-1,Un-1))]

Fn(P1)=max[g1(P1,U1)+fn-1(T(P2,U2))]

Эти уравнения лежат в основе алгоритма ДПр.

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

Пример:

Пусть существует N стадийный процесс, на каждой стадии которого может быть n состояний.

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

Рузельтат перехода из какого то состояния на предыдущей стадии оценивается числом.

r1(qi-1,qn)

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

Таким образом чтобы результат перехода из 1 стадии на последнюю n стадию был бы максимальный.

RN=sum ri(qi-1,qn)->max

Рисунок (перерисовать)

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

Для этого рассмотрим последнюю N стадию, для нее входными состояниями являются состояния 1,2,3 n-1 стадии.

Рассмотрим состояние n-1 стадии при этом мы перебрали 3 варианта, если мы оказались во втором состоянии предыдущей стадии.

Решением являются числа

q1N=3

q2N=1

q3N=3

всего мы перебрали 9 вариантов, и из них выбрали 3 варианта.

Рассмотрим n-1 стадию и выберем управление с учетом выбора первой стадии.

Рисунок

У нее также 3 состояния на входе 1,2,3. Рассмотрим состояние 1 N-2 стадии.

q1N-2=1

q2N-2=1

q3N-2=2

рассмотрим далее стадию N-2. И так далее вплоть до первой стадии, в итоге получим N*n2

просмотренных вариантов.

N=20

n=3

M=20*32=180 вариантов

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

Задача:

Дан сетевой график (график)

Найти путь при перемещение по которому от узла 1 к узлу 6 затрачивается минимальное время. Двигаться можно только в направление увеличения узлов.

рам путь время рам Путь Время
2а 2б 1,2,5,6 1,2,5,6 1,2,3,5,6 1,2,4,5 4а 4б 4в 4г 1,2,3,4,5,6 1,2,3,4,6 1,3,4,5,6 1,3,4,6

Метод перебора функции