一、实验要求
已知某能量转换系统的功率函数为
用Matlab函数fmincon求u,v的最优解。
二、实验流程
2.1 函数介绍
Fmincon()函数是用于寻找约束非线性变量函数的最小值,是一个非线性规划求解器。
Fmincon()函数中,可以调用五种算法,分别是:
- ‘interior-point’:内点法
- ‘trust-region-reflective’:信赖域反射算法
- ‘sqp’:SQP算法
- ‘sqp-legacy’:(仅限于 optimoptions)
- ‘active-set’:活动集算法
一般情况下,默认采用的是内点法(interior-point)。本文将尝试五种不同的算法,寻找最优解。
*Fmincon()*函数有不同的使用形式,其中fun为目标函数,x0为初始值,其他的都为约束条件,具体选择哪种形式,取决于问题的约束条件类型。
x = fmincon(fun,x0,A,b)
x = fmincon(fun,x0,A,b,Aeq,be)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
本文中涉及到非线性约束,因此选择最后一种形式。fun是用 M文件定义的函数, fun代表了非线性目标函数,x0是 x的初始值 A ,b, Aeq, beq,定义了线性约束 ,如果没有线性约束,则 beq=[]。lb和 ub是变量 x的下界和上界,如果下界和上界没有约束,则也可以写成 lb的各分量都为 -inf, ub的各分量都为 inf。 nonlcon是用 M文件定义的非线性向量函数约束 options定义了优化参数,不填写表示使用 Matlab默认的参数设置 。
关于此函数的返回参数中,其中fval是解处的目标函数值,以实数形式返回,通常fval = fun(x);exitflag为fmincon 停止的原因,以整数形式返回。
2.2 实验结果
默认算法interior-point优化结果。
trust-region-reflective算法不能解决此约束问题。
Sqp算法优化结果:
sqp-legacy优化结果:
active-set算法超出了迭代限制。
综上所述,interior-point的优化效果是最好的,寻优找到的fval值最小,为118220。