Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры_сапр(оба сем)ГОТОВЫЕ.doc
Скачиваний:
7
Добавлен:
13.09.2019
Размер:
3.1 Mб
Скачать

Метод ветвей и границ для задачи целочисленного программирования.

Рассмотрим частично целочисленную задачу ЛП:

минимизировать

(10.23)

при условиях

; (10.24)

; (10.25)

- целые числа. (10.26)

Процесс поиска оптимального решения начинают с решения непрерывной задачи ЛП. Если полученный при этом оптимальный план не удовлетворяет условию (10.26), то значение целевой функции дает нижнюю оценку для искомого решения, т.е. .

27.Опишите процесс решения задач линейного программирования с использованием программного обеспечения matlab

В состав MATLAB входит Optimization Toolbox, предназначенный для решения линейных и нелинейных оптимизационных задач.

Задача линейного программирования состоит в нахождении вектора x, который минимизирует целевую линейную функцию

fTx при условии AX≤B ; X≥0,

где с=(с1, c2,…,cn) представляет собой n-мерный вектор, соствленный из коэффициентов целевой функции, причем cT – транспонированная вектор- строка; x=(x1 . xn) – n –мерный вектор переменных решений,

B=[b1

b2 m-мерный вектор свободных членов

bm]

Beq=[beq1

beqr] ограничения в виде равенств;

двусторонние покомпонентные ограничения в векторной форме

lb≤x≤ub

A=

Пример: задача состваления рациона питания

Имеются 3 продукта П1, П2 и П3 разной цены, каждый из которых содержит определенное количество питательных ингридиентов И1, И2, И3, И4.

Известно, что в день требуется : И1не менее 250, И2 не менее 60, И3 не менее 100 и И4 не менее 220. Требуется минимизировать затраты на приобретение продуктов. Очевидно, что количество приобретаемых процессов не может быть отрицательным..

Записываем целевую функцию, матрицу A, векторы b и lb в соответствии с требованиями Toolbox, обозначив искомые количества продуктов через x1, x2 и x3 соответственно. Поскольку линейные ограничения содержат «меньшк или равно», а количество ингредиентов в рационе не может быть менее заданных величин, то следует изменить знаки обеих частей системы.При вызове программы linprog вместо неиспользуемых ограничение (нет ограничений в виде равенств) задайте пустые массивы, обозначаемые в MATLAB пустыми скобками.

Программа ration

% задание матрицы и вектора правой части системы неравенств

A=[4 6 15

2 2 0

5 3 4

7 3 12]

A=-A; b=[250 60 100 220]; b=-b;

% Определение коэффициентов целеой функции f=[44; 35; 100];

% Задание ограничений снизу на переменные lb=[0; 0; 0];

% решение и вывод результата в командное окно x=linprog(f,A,b,[],[],lb)

31.Опишите алгоритм решения задач дискретного программирования методом ветвей и границ

Метод ветвей и границ для задачи целочисленного программирования.

Рассмотрим частично целочисленную задачу ЛП:

минимизировать

(10.23) при условиях

(10.24) ; (10.25)

- целые числа. (10.26)

Процесс поиска оптимального решения начинают с решения непрерывной задачи ЛП. Если полученный при этом оптимальный план не удовлетворяет условию (10.26), то значение целевой функции дает нижнюю оценку для искомого решения, т.е. . Пусть некоторая переменная хi0 (1≤ i0 т) не получила в плане целочисленного решения. В целочисленном плане значение хi0 следует либо уменьшить, по крайней мере до [хi0], либо увеличить, по крайней мере до [хi0]+ 1. Если границы изменения хi0 заранее не заданы, то их можно вычислить, решив для этого две вспомогательные задачи ЛП. Эти задачи состоят в максимизации и минимизации хi0 при условиях (10.24) и (10,25).

Теперь для каждого фиксированного целочисленного значения хi0 в найденном отрезке i0min, хi0max] находят min z, решая задачу ЛП с ограничениями (10.24), (10.25) и с дополнительным ограничением хi0ki0..

Таким образом, все указанные выше возможности можно представить в виде некоторого дерева, в котором вершина 0 отвечает плану , а каждая из соединенных с ней вершин отвечает оптимальному плану следующей задачи: минимизировать z при условиях (10.24), (10.25) и дополнительном условии, что переменной хi0 дано значение хi0 ≤ кi0, где кio - целое число. Каждой из таких вершин приписывают оценку , которая равна min z при указанных выше ограничениях. Очевидно, , для всех k. Если оптимальные планы полученных задач удовлетворяют условиям целочисленности, то план с минимальной оценкой и будет оптимальным планом исходной задачи. В противном случае возникает необходимость в продолжении ветвления. При этом каждый раз для очередного ветвления выбирают вершину с наименьшей оценкой. Любой маршрут в дереве от начальной вершины 0 до некоторой вершины определяет допустимую последовательность выбора целочисленных решений для переменных. Процесс продолжают до тех пор, пока продолжение ветвления становится невозможным. Каждая конечная вершина отвечает некоторому допустимому целочисленному плану. Вершина с минимальной оценкой дает оптимальный план. Рассмотрим алгоритм решения задачи целочисленного программирования.

На первом этапе необходимо задать множество G(0), определяемое условиями (10,24), (10.25). На втором этапе формируются множества задаваемые условиями (10.24), (10.25) и дополнительным условием xj≤[xj0] или xj≥[ xj0] +1 (10.27) где [xj0] - целая часть хj0. На третьем этапе осуществляется вычисление оценок. Для множества G(0) оценку определяют как =f( ), где - оптимальный план непрерывной задачи ЛП. Для множества оценку определяют аналогично: ,где -оптимальный план задачи с условиями (10.24), (10.25) и с дополнительным условием (10.27). Если множество оказывается пустым, ему приписывают оценку =∞. На четвертом этапе осуществляется нахождение планов. Если план удовлетворяет условию целочисленности (10.26), -оптимальный план задачи. Если удовлетворяет условию целочисленности (10.26), он яв-ся оптимальным планом задачи с условиями (10.24), (10.25), (10.27) и некоторым планом исходной задачи (10.23) - (10.26). На пятом этапе выполняют ветвление. Ветвление производят в том случае, когда план не удовлетворяет условию целочисленности (10.26). Пусть - одна из нецелочисленных компонент плана, где 1 ≤ρ≤n1, тогда множество разбивают на два подмножества:

.причем ; (10.28) (10.29)