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

h — параметр, который если имеет значение больше нуля, то решение сходится к точному по х, если же меньше нуля, то решение не сходится.

Результат:

х= 0.5000

-1.0000

f=5.1425e-010

h =1

Задача эффективна для неразрешенной функции. Но этот метод не эффективен, если больше двух переменных. В этом случае лучше использовать метод градиентного поиска.

2)  Метод градиентного поиска:

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

1)  Среднемасштабный алгоритм

Создаем встроенную функцию: function y=kate (x)

у=ехр(х( 1 ))*(4*(х( 1 ))^2+2*(х(2))^2+4*х( 1 )*х(2)+2*х(2)+1)

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

clc,clear% очистка окна х0=[-1;1] % вектор начальных значений

[x,f,h]=fminunc(' kate ',x0)

Результат: х = 0.5000

-1.0000

f= 1.3028e-010

h=l

2)  Крупномасштабный алгоритм:

Создаем встроенную функцию, где задаем частные производные по переменным x1 и х2:

function [y,h]=kate(x)

h=[exp(x(l))*(8*x(l)+4*x(2))+exp(x(l))*(4*(x(l))^2+2*(x(2))^2+4*x(l)*x(2)+2*x(2)+l);

exp(x(l))*(4*x(2)+4* х(1)+2)] % h- матрица, где заданы производные по x1 и х2

у=ехр(х(1))*(4*(х(1))^2+2*(х(2))^2+4*х(1)*х(2)+2*х(2)+1) % значение функции

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

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

options=optimset('GradObj','on')%задаем крупномасштабный алгоритм х0=[-1;1] %вектор начальных значений

[x,f]=fminunc('kate',xO,options)

Результат:

х= 0.5000

-1.0000

f= 1.3911е-014

3)  Поиск минимума функции  нескольких переменных с ограничениями.

Используются следующие системы ограничений:

Система ограничений для функции:

с(х)<0.

се(х)=0

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

а·хb

ае·х =be

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

lb <x<ub

с(х), се(х) — функции, а,ае — матрицы,

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

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

Пример1.:

Найти минимум функции: f(x) = -х1·х2 ·х3

Ограничения на переменную: -х1 - 2·х2 - 2·х3  0

х1 + 2·х2 + 2·х3  72

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

function p=kate(x)

р=-х(1 )*х(2)*х(3) %значение функции

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

clc,clear% очистка окна х0=[10;10;10]%вектор начальных значений а=[-1 -2 -2;1 2 2]%матрица коэффициентов при переменных в ограничениях

b=[0;72]%вектор свободных членов в ограничениях

[x,f,h]=fmincon('kate',xO,a,b)

Результат:

х= 24.0000

12.0000

12.0000

f=-3.4560e+003

h=l

Пример 2.:

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

Ограничения на функцию:

1.5 + х1·х2 - х1 - х2 < 0

- х1·х2 -10 < 0

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

-10  х1  0

1 < х2 < 2

т.е.

Ib=[-10 1]

ub=[0 2]

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

function y=kate(x)

у=ехр(х(1))*(4*(х(1))^2+2*(х(2))^2+4*х(1)*х(2)+2*х(2)+1) %значение функции

Создаем еще одну встроенную функцию, где заданы ограничения на функцию:

function [c,ce]=kathy(x) с(1)=1.5+х(1)*х(2)-х(1)-х(2)

с(2)=-х(1)*х(2)-10

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

В новом окне, используя команду fmincon, находим min функции:

clc,clear% очистка окна х0=[-1; 1 ] %вектор начальных значений а=[]% равно пустому множеству

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

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

Ib=[-10 1]%вектор ограничений на х

ub=[0 2] % вектор ограничений на х [x,f]=fmincon('kate',xO,a,b,ae,be,lb,ub,'kathy')

Результат: х= -9.5474

1.0474

f= 0.0236

4)  Решение задач линейного программирования.

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

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

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

a·xb

ae·x=be

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

Ib < x < ub

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

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

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

Пример 1.:

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

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

x1 - х2 + х3  20

+ 2·х+ 4·х 42

+ 2·х2   30

x1  0,х2  0,х3  0

clc,clear % очистка окна с=[-5;-4;-6] % вектор коэффициентов при переменных а=[1 -1 1;3 2 4;3 2 0] %матрица коэффициентов при переменных в ограничения