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

Раздел 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.

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

2. Далее реализуем примеры работ 1 (часть 1), 2 (с пятью и шестью видами продукции) в MatLab с контрольной проверкой по результатам моделирования в Excel.

3. Показать работу преподавателю и оформить отчет.

1. Титульный лист (пример приведен на следующей странице).

2. Введение (цель работы, основные положения).

3. Задание (задача).

4. Способ решения поставленной задачи (математические формулы).

5. Схема компьютерной модели.

6. Результаты решения (числовые результаты, экранные формы, графики).

7. Выводы по работе.

Литература

1. Дьяконов В. MatLad 6/6.1/6.5 SIMULINK 4/5 основы построения. М.: СОЛОН-Пресс, 2002. 768 с.

2. Черных И.В. SIMULINK среда создания инженерных приложений. Ь.: МИФИ, 2003. 496 с.

Лабораторная работа 5 (4 часа)

Цель: научиться решать задачи ДЛП (выражения (2.52) - (2/63) введения) и перехода на выпуск новой продукции в программном продукте MatLab.

ЗАДАНИЕ

Процесс планирования осуществляется обычно задолго до плана выполнения.

Будем разрабатывать оптимальный план с использованием задачи (статического) линейного программирования.

При переходе к рынку условия реализации плана могут меняться в процессе его выполнения:

при изменении спроса на выпускаемую продукцию;

при оперативном переходе на выпуск новой продукции.

Здесь используется аппарат динамического линейного программирования. Метод описания многоуровневой системы, базирующийся на этом аппарате, называется однородным.

А. Задача СЛП.

Взять программу lp13 примера 1 работы 4 и поставить в комментарии (% перед началом строки программы) строку f=…. Открыть файл моделирования (File-New-Model). Открыть SIMULNK (синий значок). В открывшееся окно поместить из пакета SIMULINK в горизонтальный ряд элементы Constant из набора Source, Matlab Fcn из User-Defined Function Display из Sinks и соединить их последовательно с помощью мыши (рис. 1).

1. «Кликнуть» компонент Constant и в установившемся заставке установить в окне Constant Value значение [-5 -4 -6], нажать кнопку Apply и закрыть заставку. В компоненте Matlab Fcn в окне в окне MatLab function установить lp13(u), нажать кнопку Apply и закрыть заставку.

В заставке untitled* запустить программу, нажав на панели инструментов «треугольник» или Simulation-Start.

В дисплее (растянуть его по вертикали) получится решение для статического плана.

Рис. 1. Решение задачи линейного программирования в Optimization Toolbox

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

Б. Задача ЖЛП.

2. Чтобы получить динамический план, следует вместо дисплея добавить динамическое звено. Пусть общий интервал моделирования t=10, а минимальный интервал t1=0,1.

Введем с помощью «размножителей» Mux и Demux три инерционных элемента первого порядка (рис 3 из Continuous – Nransfer Fcn).

Рис. 3. Линейное программирование и разомкнутая система управления

(вход-выход)

На выходе поставим осциллограф Sinks - Scope. Запустим схему, «кликнем» на элементе Scope и получим результат (рис. 4).

Рис. 4. Переходный процесс при планировании

3. Переставить элементы Transfer Fcn и MatLab Fcn и провести работы п.2. Сравнить результаты с п. 2.

4. Проделать п. 2 для части 1 работы 1.

5. В тех же примерах п. 2 и 4 заменить элементы Transfer Fcn на элемент Continuous – State Space и задайте матрицы A, B, C единичными, а матрицу D – нулевой и повторить примеры.

6. Оптимизационное звено должно содержать элемент Matlab Fcn с программой linprog из раздела Optimization Toolbox пакета Simulink, входящего в состав программного продукта MatLab.

Недостатком такого звена является многократное повторение операции в элементе Matlab Fcn. Чтобы повторения исключить, в элемент Constant вводят результаты выполнения программы оптимизации lp13, а элемент Matlab Fcn убирают (рис. 5).

Для этого в программе или рабочем пространстве выполняется команда

>> UU=lp13

Optimization terminated successfully.

Оптимизация осуществляется в функции lp13.

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)

Запустить схему и убедиться, что оптимизация проходит один раз.

В. Переход на выпуск новой продукции.

7. В самом общем случае модель процесса перехода на выпуск новой продукции может быть представлена рис. 5, а переходные процессы отражены на рис. 6 и рис. 7.

Рис 5. Качественное изменение плана (новая продукция)

Рис. 6. Изменение плана при появлении новой продукции

Рис. 7. Планирование при появлении новой продукции

На рис. 5 выделяются следующие составляющие: оптимизационное звено; переключатель; инерционная составляющая.

На рис. 5 в качестве функций Matlab Fcn выступают nlp2 (вверху) и nlp1.

function x= nlp2(f,A,b,lb);

f=[-5; -4; -6];

A=[1 1 1; 3 2 4; 3 2 0; 1 0 0; 0 1 0; 0 0 1];

b=[20; 42; 30; 3; 16; 4];

lb=zeros(3,1);

[x]=linprog(f,A,b,[],[],lb);

function x= nlp1(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);

UU1=nlp1

Optimization terminated successfully.

UU1 =

0.0000

15.0000

3.0000

>> UU2=nlp2

Optimization terminated successfully.

UU2 =

3.0000

10.5000

3.0000

Переключатель (рис. 5) может быть автоматическим или ручным. В первом случае (рис. 5) в элементе Source – Ramp установить наклон линейной функции (slope) равным 1, а в элементе Signal Routing - Switch - параметр threshold равным 5. При интервале времени моделирования в 10 единиц ключ Switch сработает при значении времени 5.

Инерционная составляющая может быть реализована с использованием пространства состояний, как на рис. 5.

8. Реализовать, как в п. 7, примеры работы 2 (с пятью и шестью видами продукции).

9. Показать работу преподавателю и оформить отчет.

1. Титульный лист (пример приведен на следующей странице).

2. Введение (цель работы, основные положения).

3. Задание (задача).

4. Способ решения поставленной задачи (математические формулы).

5. Схема компьютерной модели.

6. Результаты решения (числовые результаты, экранные формы, графики).

7. Выводы по работе.