Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы(для меня).doc
Скачиваний:
4
Добавлен:
24.09.2019
Размер:
1.05 Mб
Скачать

46.Рассмотрите пример решения задачи линейного программирования симплекс-методом

Пример решения задачи линейного программирования. Рассмотрим задачу линейного программирования в следующем виде: найти максимум линейной формы 4х1 + 2 при ограничениях

х14000, х26000, х1 +2/3х2 ≤6000, х1,х2 ≥ 0.

Каноническая форма задачи линейного программирования будет иметь вид

4x1 + 3x2 + 0x3 + 0x4 + 0x5 → max;

1 + 0х2 + 1х3 + 0x4 +0x5 = 4000;

0x1 +1х2 +0 х3 +1 x4+0 x5 = 6000;

Составим исходную симплекс-таблицу (табл. 10.2).

Таблица 10.2

Поскольку -4 < -3 < 0, то в качестве направляющего выбираем первый столбец. Составив отношение вида , определяем направляющую строку, Для этого находим минимальное отношение

Следовательно, направляющая строка - первая, направляющий элемент — а11=1. Применив первый шаг симплексного преобразования, получим новую таблицу (табл. 10.3).

Таблица 10.3

На данном этапе в качестве направляющего столбца выбираем второй, направляющая строка - третья, т.к.

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

Так как то направляющий столбец А3, направляющая строка - вторая, направляющий элемент а23= 3/2 • Выполним очередной шаг преобразования, получим еще одну таблицу (табл. 10.5).

Таблица 10.5

Поскольку в индексной строке все элементы положительны, это означает, что найдено оптимальное решение х10= 2000, х20 = 6000, х30 = 2000. Искомое значение целевой функции равно 4 х1 + Зх2= 26000.

47.Опишите процесс решения задач линейного программирования с использованием программного обеспечения 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)