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 + x2 20
-x1 + x2 2
2x1 + x2 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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.