Matlab函数fminunc/fminbnd/fmincon求解工程优化问题

使用matlab函数求解工程优化问题

一、无约束优化问题: 

fminunc可用于求解任意无约束优化问题的最值

(求最大值可通过取目标函数的相反数转化成求最小值问题)

 调用方法:[x,fval,exitflag]= fminunc(FUN,X0)

输入:

— FUN:待优化目标函数

— X0:初值

输出:

— x:最优解

–fval:目标函数最小值

–exitflag:退出标志;

 

exitflag表示含义

exit  flag含义
1梯度足够小,即收敛
2最优解x变化很小
3目标函数变化很小
5目标函数值沿着搜索方向无法减小
0评估或者迭代次数过大
-1输出函数或者画图函数造成的终止


例1:求函数y=x^2+4*x+5的最小值(已知最优解x*= -2,最小值1)

function f1 = f1(x)
      f1 = x^2+4*x+5;

>>[x,fVal,exitflag] = fminunc(@f1,2)

>>x =-2;fVal=1;exitFlag=1;


例2:多变量:求f(x,y)=e2x(x+y2+2y)的最小值

function f2 = f2(r)

x=r(1);y=r(2);

f=exp(2*x)*(x+y^2+2*y);

>>[x,fVal,exitflag] = fminunc(@f2,[2,1]) 

>>x = [0.5 -1]

fVal = -1.3591

exitflag = 1

二、目标函数在区间[x1,x2]上的最小值,使用fminbnd
 [X,FVAL,EXITFLAG] = FMINBND(…)


例3:求目标函数y=sinx在[1,3]上的最大值

>> [x,f,e]=fminbnd(‘-sin(x)’,1,3)

>>x=1.5708,f=-1;e=1

三、有约束优化问题,使用fmincon——万能函数

[x,favl,exitflag]=fmincon(fun1,x0,A,B,Aeq,Beq,l,u,fun2)

   fun1:目标函数

   x0:初始点

   A*x<=B(不等式约束)

   Aeq*x=Beq(等式约束)

   l<=x<=u(上下界约束)

   fun2:用于非线性约束

           fun2的格式为:C(x)<=0;Ceq(x)=0

        function [C,Ceq]=fun2(x)

               C = …;

               Ceq = …;

       end












  

    原文作者:道路修建问题
    原文地址: https://blog.csdn.net/iampuzhao/article/details/17271931
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞