基本知识
注意
练习
- 例1
- 定义函数
function f = fun1(x)
%UNTITLED2 此处显示有关此函数的摘要
% 此处显示详细说明
f = -x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2;
end
- 使用
fmincon
函数进行非线性规划的求解
%%
clc;clear;
x0 = [1; 1];
A=[2 3 ;1 4];
b=[6;5];
Aeq=[];beq=[];
VLB=[0;0]; VUB=[];
[x,fval]=fmincon('fun1',x0,A,b,Aeq,beq,VLB,VUB)
- 例2
目标函数
function f = fun2( x )
% 非线性约束的目标函数
f = exp(x(1))*(4*x(1)^2 + 2*x(2)^2 + 4*x(1)*x(2) + 2*x(1) + 1);
end
非线性约束函数
function [ g, ceq ] = con2( x )
% 定义非线性约束
% g表达式小于等于0
g = [1.5 + x(1)*x(2) - x(1) - x(2);-x(1)*x(2) - 10]; % 小于等于0的不等式条件
ceq = [];
end
求解
%%
% 例 2
clc; clear;
x0 = [-1; 1];
A = [];
b = [];
Aeq = [1 1]; beq = [0]; % x1 + x2 == 0的条件
vlb = [];
vub = [];
[x, fval] = fmincon('fun2', x0, A, b, Aeq, beq, vlb, vub, 'con2')
CONSOLE:
x =
-1.2247
1.2247
fval =
0.4556
- 例3
极小值目标函数
function f = fun3( x )
% 目标函数 min
f = -2*x(1) - x(2);
end
非线性约束
function [ g, ceq ] = con3( x )
% 小于等于非线性约束 g
g = [x(1)^2 + x(2)^2 - 25; x(1)^2 - x(2)^2 - 7];
ceq = [];
end
求解
%%
% 例 3
clear;clc;
x0 = [3; 2.5];
vlb = [0 0];
vub = [5 10];
[x, fval. exitflag, output] = fmincon('fun3', x0, [], [], [], [], vlb, vub, 'con3')
CONSOLE:
x =
4.0000
3.0000
fval =
包含以下字段的 struct:
exitflag: -11.0000
output =
1