В данной работе используем первую группу методов: веса заданы априорною
В условиях части 1 решить задачу, используя в качестве критерия цену (критерий 2 – кр.2).
Решить задачу при следующих соотношениях критериев: 1, 1; 0.5, 1; 1, 0.5.
Результаты свести в таблицу
Соотношение критериев | И1 | И2 | И3 | И4 | И5 |
1, 0 | |||||
0, 1 б | |||||
1, 1 | |||||
0.5, 1 | |||||
1, 0.5 |
Сделать выводы.
ЧАСТЬ 4. Увеличение размерности задачи.
Шесть видов продукции.
6. На основе задачи части 1 решить задачу с шестью видами изделий при ограничениях на выпуск. Данные для шестого вида ресурсов взять из таблиц Варианты заданий и Новое изделие. Определить оптимальное значение целевой функции выпуска шести изделия.
Новое изделие
Ресурсы и ограничения | Изделие И6 |
Фрезерное | |
Токарное | |
Штамповочное | 0,16 |
Сборка | 1,5 |
Комплектующие | |
Цена (руб.) | |
Себестоимость (руб.) | |
Минимум | |
Максимум |
Критерий | И1 | И2 | И3 | И4 | И5 | И6 |
Кр. 2 |
Запомнить решение задачи, поскольку оно потребуется позднее.
7. Показать работу преподавателю и оформить отчет.
1. Титульный лист (пример приведен на следующей странице).
2. Введение (цель работы, основные положения).
3. Задание (задача).
4. Способ решения поставленной задачи (математические формулы).
5. Схема компьютерной модели.
6. Результаты решения (числовые результаты, экранные формы, графики).
7. Выводы по работе.
Лабораторная работа 3 (4 часа)
Цель: решение задачи ЛКО в Excel. Задача описывается выражениями (2.51), (2.35) - (2.37) Введения.
ЗАДАНИЕ
Реализовать модель оптимального квадратичного управления в пакете Excel, вычислив K(t) и построив его график..
Объект управления имеет описание
.
zk(t) = Akzk(t) + Bkuk(t),
zk(0) = zk0, k = 1, K,
yk(t) = Ckzk(t), (3.1)
где zk, uk,, yk — вектор-столбцы cостояния, управления, выхода; Ak, Bk,, Ck — матрицы подходящей размерности; t — принятый масштаб времени, k = 1, K – номер цеха.
Для управляющей части возможна следующая запись.
ek(t) = pk(t) — yk(t), k = fixe,
T
Jkl(T) = 1/2 ò{ekт(t)Qklek(t) + ukт(t)Rkluk(t)}dt à min, (3.4)
0
где ek, pk —вектор-столбцы отклонения и плана; Qkl, Rkl — неотрицательно и положительно определенные матрицы; l = 1, L; L — количество целевых функций в векторном критерии; т — символ транспонирования.
Оптимальное управление с квадратичным критерием рассчитывается численными методами. Возникает необходимость в решении трех нелинейных дифференциальных уравнений, при этом два из них решаются от конца интервала времени к его началу, а одно – от начала к концу.
Аналитическое решение нелинейного уравнения Риккати имеет место для частных случаев даже для одномерного варианта. В многомерном варианте аналитическое решение, как правило, отсутствует и прибегают к численным методам решения.
Существует множество методов, из которых чаще всего используют метод Рунге-Кутта. В нем выделяют порядок m. Случаи m = 1 и m = 2 соответствуют вариантам численного метода Эйлера. Алгоритмы достаточно просты, однако характеризуются большой ошибкой вычислений.
В случаях, когда m > 4, достигается высокая точность, однако алгоритмы становятся настолько сложными, что их используют очень редко. Наибольшее распространение получили случаи m = 3и m = 4. Случай m = 4 занимает промежуточное положение по точности вычислений и сложности алгоритмов. В силу этого он получил широкое распространение. Заметим, что при фиксированном m возможны различные варианты расчетов. Воспользуемся при m = 4 одним из вариантов, иллюстрируемом на следующем примере.
.
K(t) + K(t)A + ATK(t) - K(t)BR-1BTK(t) + CTQC, (П29)
K(T) = CTSC, (П30)
Запишем выражение (П29) в виде
.
K(t) = F(t, K(t)),(П31)
где F – функция, определяемая правой частью выражения (П29).
Разделим интервал [T] на отрезки [ti] = [(ti) – (ti - 1)], i = 1, I, где в квадратных и круглых скобках указаны интервалы и моменты времени. Считаем [ti] = [t] = const.
Тогда
K((ti + 1) = K((ti) + (k1 + 2k2 + 2k3 + k4)/6, (П32)
где kr, r = 1, 4 – некоторые численные функции, вычисляемые следующим образом.
k1 = [t]* F(K(ti)), (П33)
k2 = [t]* F(K(ti) + k1/2), (П34)
k3 = [t]* F(K(ti) + k2/2), (П35)
k4 = [t]* F(K(ti) + k3), (П36)
По оценкам ошибка вычисления при m = 4 составляет [t]m + 1.
Вычисления ведутся итеративно. В каждой итерации сначала последовательно вычисляются выражения (П33) – (П36) при заданном значении K(ti), а затем считается (П32).
Работа численного алгоритма проверить на описании одномерной системы вида.
.
z(t) = az(t0 + u(t),
y(t) = z(t),
T
J = ½*fe2(T) + ò[q (t) + ru2(t)]dt à min.
0
Очевидно
u(t) = – r -1*(K(t)z(t) – g(t)),
.
K(t) = –2aK(t) + r -1*K(t)2 – q (П37), K(T) = f,
.
g(t) = – [a - r -1*K(t)]g(t) – qp(t),
g(T) = fp(T),
.
z(t) = az(t) – r –1*(K(t)z(t) – g(t)), z(0) = 0.
Рассмотреть пример для величин f = 0, T = 1, a = – 1, q = 1, r = 0.01, 0.1, 1. План p(t) - единичный скачок. Построить переходный процесс (графики) для K(t).
По окончании работы представить отчет.
1. Титульный лист (пример приведен на следующей странице).
2. Введение (цель работы, основные положения).
3. Задание (задача).
4. Способ решения поставленной задачи (математические формулы).
5. Схема компьютерной модели.
6. Результаты решения (числовые результаты, экранные формы, графики).
7. Выводы по работе.
РАЗДЕЛ 2. Решение задач с помощью MatLab.
Лабораторная работа 4 (2 часа)
Цель: научиться решать задачи СЛП в программном продукте MatLab.
ЗАДАНИЕ
Смоделируем перечисленные в работах 1 – 4 варианты выработки плана с применением программного продукта MatLab. Используем составляющие Optimization Toolbox, SIMULINK.
1. Оптимальный план рассчитывается в рамках составляющей Optimization Toolbox. Для этого используется программа linprog.
Математически она записывается следующим образом.
f = cx à min
Ax ≤ b
Aeq = beq
xl ≤ x ≤ xu,
где x – искомый вектор-столбец плана; f - целевая функция; c – вектор-строка стоимости; A, Aeq – матрицы норм расхода ресурсов; b, beq – вектор-столбцы наличного количества ресурсов; xl , xu – вектор-столбцы нижнего и верхнего значений плана.
Программа linprog записывается в виде linprog(f,A,b,Aeq,beq,lb,ub), где lb, ub – нижнее и верхнее ограничения плана. Если равенства отсутствуют, то запись программы имеет вид linprog(f,A,b,[],[], lb, ub).
Приведем числовой пример
F = 5 p1 + 4 p2 + 6 p3 à max
p1 + p2 + p3 £ 20
3 p1 + 2 p2 + 4 p3 £ 42
3 p1 + 2 p2 £ 30
P = {pj}, pj ³ 0, j = 1, 3.
Программа с использованием linprog имеет вид
function x= lp13(f,A,b,lb);
f=[-5; -4; -6];
A=[1 -1 1; 3 2 4; 3 2 0];
b=[20; 42; 30];
lb=zeros(3,1);
[x]=linprog(f,A,b,[],[],lb);
Значения в квадратных скобках разделяются пробелом, знак ; означает переход к новой строке. Поскольку выполняется задача максимизации, значения целевой функции получили знаки минус.
Откройте MatLab и в меню File-New выберите М-файл. Вписать в него ранее записанную программу. Запомнить и запустить программу: Debug-Run. Результаты получаются в правом окне MatLab.
Решим задачу статического линейного программирования.