Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab2010-Zadanija.doc
Скачиваний:
6
Добавлен:
27.03.2015
Размер:
2.12 Mб
Скачать

Порядок аппроксимирующей функции

2-я цифра варианта

0, 5

1, 6

2, 7

3, 8

4, 9

a, f

b, e

c, d

Значения m

1, 3, 5

2, 4, 5

1, 2, 4

3, 4, 5

2, 4, 5

1, 3, 4

2, 3, 5

1, 3, 4

Таблица 2.1.3

Таблица «невязок»

m

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

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

Пример. Рассмотрим производство столов и стульев. Сведения о затратах ресурсов на единицу продукции, их наличии и о доходе от производимой продукции отражены в таблице 2.2.1.

Таблица 2.2.1.

Затраты ресурсов

Наименование

ресурса

Продукция

Ограничения по ресурсу

Стул

Стол

Древесина (кг/шт.)

5

25

500

Кожа (м2/шт.)

0.5

0

15

Клей (г/шт.)

100

250

7500

Трудозатраты (чел. час/шт.)

10

10

400

Доход (руб./шт.)

10

20

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

,

,

,

,

.

Для решения задач линейного программирования в MatLab используется функция linprog, которая ищет минимум для целевой функции при наличии ограничений

,

,

.

Простейшие две формы обращения к ней состоят в следующем:

x = linprog(f,A,b),

x = linprog(f,A,b,Aeq,beq,lb,ub),

[x,fv] = linprog(f,A,b,Aeq,beq,lb,ub),

где

f − вектор коэффициентов целевой функции − для нашего примера f=[10; 20];

A − матрица коэффициентов системы линейных неравенств A*xb − для нашего примера A=[5 25;0.5 0;100 250;10 10];

b − вектор свободных членов системы линейных неравенств A*xb − для нашего примера b=[500; 15; 7500; 400];

Aeq − матрица коэффициентов системы линейных равенств Aeq*x=beq − для нашего примера её нет (ставят пару пустых прямоугольных скобок []);

beq − вектор свободных членов системы линейных равенств A*x=b − для нашего примера её нет (ставят пару пустых прямоугольных скобок []);

lb и ub − вектора той же размерности, что и вектор x − ограничения на координаты lbxub − для нашего примера lb=[0; 0], а вместо ub ставят пару пустых скобок [];

x − искомый вектор оптимальных значений параметров;

fv − значение целевой функции при оптимальном векторе параметров.

Командное окно для решения нашей задачи имеет вид

>> f=[10; 20];

>> A=[5 25;0.5 0;100 250;10 10];

>> b=[500; 15; 7500; 400];

>> lb=[0; 0];

>> [x,fv]=linprog(-f,A,b,[],[],lb)

Optimization terminated.

x =

25.0000

15.0000

fv =

-550.0000

>>

Так как функция linprog находит минимум, а нам необходимо найти максимум, то перед символом f в вызове функции поставлен знак минус.

Таким образом, оптимальнее всего изготовить 25 стульев и 15 столов, при этом доход составит 550 руб.

Задание. В соответствии с заданным вариантом (см. таблицу 2.2.2) найти оптимальное решение задачи производственного планирования.

Таблица 2.2.2

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]