Методы моделирования объектов и систем управления. Математическое описание тепловых процессов. Методы и алгоритмы идентификации динамических систем. Оптимизация химико-технологических с использованием математических моделей, страница 32

b=[20;42;30] %вектор свободных членов в ограничениях ае=[] % равно пустому множеству

be=[] % равно пустому множеству

Ib=[0;0;0] % вектор ограничений на х

ub=[] % равно пустому множеству

[x,f]=linprog(c,a,b,ae,be, lb)

Результат:

х = 0.0000

15.0000

3.0000

f = -78.0000

5)  Решение задач квадратичного программирования.

Минимизировать функцию:

c — вектор коэффициентов при переменных х.

Система ограничений для переменных:

a·x

ae·x=be

Система ограничений для х:

Ib < x<ub

а,ае — матрицы,

b,bе,Ib,ub — вектора.

Для нахождения min функции используем команду quadprog.

Пример 1.:Найти минимум функции:

Ограничения на переменную:

x1 + x 20

-x1 + x2  2

2x1 + x 3

x1  0, x2  0

clc,clear%очистка окна

h=[l  2;-l -1]

с=[-2;-6] % вектор коэффициентов при переменных х.

а=[1 1;-1 2;2 1] % матрица коэффициентов при переменных в ограничениях

b=[2;2;3] % вектор свободных членов в ограничениях ае=[] % равно пустому множеству

bе=[] % равно пустому множеству

Ib=[0;0] % вектор ограничений на х

ub=[] % равно пустому множеству

[x,f]=quadprog(h,c,a,b,ae,be,Ib)

х =0.6667

1.3333

f= -9.5556

9.5.5. Использование метода наименьших квадратов для решения задач оптимизации

Задания:

1)  Решение линейных задач с ограничениями.

2)  Решение неотрицательных задач.

3)  Решение нелинейной задачи (нелинейный подбор данных).

4)  Нелинейная аппроксимация данных общего вида.

Решение:

1)  Решение линейных задач с ограничениями методом наименьших квадратов.

Для нахождения min функции используем команду lsqlin.

Решим систему линейных уравнений:

1.5·х1 + 5.5-х2 + 10·х3 = 12

4.3·х1 + 6.5·х2 +1.2·х3 =8

12·х1 + 6·х2 +2·х3 =5

при условии, что х  0 .

Ограничения на переменную:

0.5х1 + 1.5х2  + х3 < 5

2.5х1 +3·х2 +1.5·х3  < 10

clc,clear % очистка окна с=[1.5 5.5 10;4.3 6.5 1.2; 12 6 2] % матрица коэффициентов при х

d=[12;8;5] % вектор-столбец свободных членов а=[0.5 1.5 1;2.5 3 1.5] % матрица коэффициентов при переменных в ограничениях

b=[5;10] % вектор свободных членов в ограничениях ае=[] % равно пустому множеству

bе=[] % равно пустому множеству

Ib=0

x=lsqlin(c,d,a,b,ae,be,lb)

Результат:

х = 0

0.8833

0.6974

2)  Решение не отрицательных задач методом наименьших квадратов.

Для нахождения min функции используем команду lsqnonneg.

Решим систему линейных уравнений:

1.5·х1+5.5·х2+10·х3 =12

4.3·х1+6.5·х2+1.2·х3 =8

12·х1 +6·х2 +2·х3 =5 при условии, что х  0.

clc,clear % очистка окна с=[1.5 5.5 10;4.3 6.5 1.2;12 6 2 ]% матрица коэффициентов при х

d=[10;8;5] % вектор-столбец свободных членов

x=lsqnonneg(c,d)

Результат:

х = 0

0.9408

0.4669

3)  Решение не линейной задачи (нелинейный подбор данных).

Функция имеет вид:

Ищется минимум функции пo .

Для нахождения min функции используем команду lsqnonlin.

Пример 1.:

Найти минимум функции:

где .

Создаем встроенную функцию:

function y=kat(x)

k=[l:10]

y=2+2*k-exp(k*x(l ))-exp(k*x(2))

В новом окне при помощи команды lsqnonlin находим min функции:

clc,clear % очистка окна

x0=[0.3;0.4] %вектор начальных значений

x=lsqnonlin(' kat ',xO)

Результат:

х = 0.2578

0.2578

4)  Нелинейная аппроксимация данных общего вида.

Функция имеет вид:

Найти коэффициенты а.

Для решения данной задачи используется команда Isqcurvefit.

Создаем встроенную функцию:

function y=kate(a,x)

у=а(1 )*х.^2+а(2)*со5(х)+а(3)*х%значение функции

В новом окне при помощи команды fminunc находим коэффициенты а: Задаем массив значений функции и массив значений аргумента в возрастающем порядке а0=[-0.06;-0.3;1] %вектор начальных значений для коэффициентов а х=[0;1;2;3;5;6;9;11;12;15] %вектор-столбец значений аргумента у=[0.6;2;2.8;3.5;4.2;4.6;4;3.2;2;4] %вектор-столбец значений фунекции a=lsqcurvefit('kate',aO,x,y)

z=[0;0.1;15] f=kate(a,z)

plot(x,y,'*',z,f)%cтроим график

Результат:

а =-0.0586

-0.3630

7

1.0241