MATLAB有约束最优化问题的求解
有约束最优化问题的一般描述为:其中x = [x1,x2,…,xn]T,该数学表示的含义亦即求取一组x,使得目标函数f(x)为最小,且满足约束条件G(x) ≤0。记号s.t.是英文subject to的缩写,表示x要满足后面的约束条件。约束条件可以进一步细化为:线性不等式约束:Ax≤b线性等式约束:Aeqx=beq非线性不等式约束:Cx≤0非线性等式约束:Ceq x =0...
![](https://csdnimg.cn/release/devpress/public/img/ic-book.4f347164.png)
一键AI生成摘要,助你高效阅读
问答
·
有约束最优化问题的一般描述为:
其中x = [x1,x2,…,xn]T,该数学表示的含义亦即求取一组x,使得目标函数f(x)为最小,且满足约束条件G(x) ≤0。记号s.t.是英文subject to的缩写,表示x要满足后面的约束条件。
约束条件可以进一步细化为:
- 线性不等式约束:Ax≤b
- 线性等式约束:Aeqx=beq
- 非线性不等式约束:Cx≤0
- 非线性等式约束:Ceq x =0
- x的下界和上界:Lbnd≤x≤Ubnd
MATLAB最优化工具箱提供了一个fmincon函数,专门用于求解各种约束下的最优化问题。该函数的调用格式为:
[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,Lbnd,Ubnd,NonF,options)
其中x、fval、filename、x0和option的含义分别为自变量、因变量、函数名、初值、优化参数。其余参数为约束条件,参数NonF为非线性约束函数的M文件名。如果某个约束不存在,则用空矩阵来表示。
例题:求解有约束最优化问题
首先编写目标函数M文件fop.m:
function f=fop(x)
f=0.4*x(2)+x(1)^2+x(2)^2-x(1)*x(2)+1/30*x(1)^3;
end
再设定约束条件,并调用fmincon函数求解此约束最优化问题:
x0=[0.5;0.5];
A=[-1,-0.5;-0.5,-1];
b=[-0.4;-0.5];
lb=[0;0];
option=optimset; option.LargeScale='off';option.Display='off';
[x,f]=fmincon('fop',x0,A,b,[],[],lb,[],[],option)
输出结果为:
x =
0.34
0.33
f =
0.25
作者:ChenBD
更多推荐
所有评论(0)