|
Порядок аппроксимирующей функции
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
|
|
|
|
|
|
|
|
Решение задачи линейного программирования средствами MatLab
Задача поиска условного экстремума функции многих переменных часто встречаются в экономических расчётах для минимизации затрат, максимализации прибыли и т. п. При этом экономическая задача описывается системами линейных уравнений и неравенств и относится к задачам линейного программирования. Типичным примером является так называемая задача производственного планирования, которая решает проблему оптимального выпуска товаров, дающего максимально возможный доход.
Пример. Рассмотрим производство столов и стульев. Сведения о затратах ресурсов на единицу продукции, их наличии и о доходе от производимой продукции отражены в таблице 2.2.1.
Таблица 2.2.1.
Затраты ресурсов
Наименование
ресурса
| Продукция
| Ограничения по ресурсу
| Стул
| Стол
| Древесина (кг/шт.)
|
|
|
| Кожа (м2/шт.)
| 0.5
|
|
| Клей (г/шт.)
|
|
|
| Трудозатраты (чел. час/шт.)
|
|
|
| Доход (руб./шт.)
|
|
|
|
Доход (обозначим его символом ), очевидно, равен , где и − искомые (вместе с ) значения количества стульев и столов соответственно. Математическая модель сформулированной задачи состоит в поиске максимума функции при наличии следующих ограничений:
,
,
,
,
.
Для решения задач линейного программирования в 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*x b − для нашего примера A=[5 25;0.5 0;100 250;10 10];
b − вектор свободных членов системы линейных неравенств A*x b − для нашего примера b=[500; 15; 7500; 400];
Aeq − матрица коэффициентов системы линейных равенств Aeq*x=beq − для нашего примера её нет (ставят пару пустых прямоугольных скобок []);
beq − вектор свободных членов системы линейных равенств A*x=b − для нашего примера её нет (ставят пару пустых прямоугольных скобок []);
lb и ub − вектора той же размерности, что и вектор x − ограничения на координаты lb x ub − для нашего примера 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
Варианты заданий
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|