附录-Note10:matlab 中fminunc、fmaxunc的用法

附录-Note10:matlab 中fminunc、fmaxunc的用法


2023年12月13日发(作者:小米最新款是哪一款)

工程最优化即最大(小)问题

关于工程最优化的求解,之前已有基因遗传算法、蚁群算法、凸优化。今天来介绍一种方法,是基于matlab自带函数

fminunc、fmaxunc来计算的,它的计算方式更加简洁高效,只需解一个目标函数。

 一、无约束(无条件)的最优化

使用fminunc函数 (un-condition)

1) 可用于任意函数求最小值问题( 即只能求最小值 )。

如求最大值:

ˆ1dw

ˆuargmaxdHwRww(1)

取反,则等效为求最小值:

ˆ1dw

ˆuargmindHwRww(2)

这个过程不影响自变量w.

2) 代码格式

x = fminunc(@func, x0);

[x,fval] = fminunc(@func, x0);

[x,fval,exitflag] = fminunc(@func, x0);

必须预先把函数存入到一个程序中 ,(所编的程序一定是只有个参数,则

当为多元函数时,则x(1),x(2), x(3) … 分别代表每个自变)。

其中:fval为函数的最小值;x0为自变量初始向量,一般不影响结果;exitflag为退出标志,当它大于0时表示函数收敛于x,当它

0,函数收敛于x,一般等于1exitflag0,函数不收敛

0,函数不收敛

以决定结果的正误/有效性)最好返回三个结果

(所以解完题后还必须判断exitflag的值是否 > 0, (3)

函数存在最值的条件:在闭区间连续,存在导数等(说明有很多函数不存在最值:有大、有小、有大小、都无) 可以是任意函数、任意n元函数求最小值最后一定要看看exitflag的值(判断结果是否有效 -- 所以结果最好返回三个结果*^函数可以用内联函数inline('expression')(程序中的...可要可不要,一般还是不要吧)

 二、fminbnd(‘@func’, x1, xn) 求函数在区间[x1, xn]的最小值

 三、有约束条件的最优化问题

使用fmincon函数 (condition)

1) 可用于任意函数求最小值问题( 即只能求最小值 )。

2) 代码格式1

x = fmincon(@func, x0,A,b);

[x,fval] = fmincon(@func, x0,A,b);

[x,fval,exitflag] = fmincon(@func, x0,A,b);

用于线性约束不等式,即

Ax0b

其中:A为系数矩阵;b为常数项列向量;x0为初始向量

(4)

一定要变成

3) 代码格式2

都是小:求最小值,条件

[x,fval,exitflag] = fmincon(@func, x0,A,b,Aeq,beq);

用于线性不等式约束与线性等式约束,线性等式即Aeqx0beq

Aeqx0beq

其中:Aeq为系数矩阵;beq为列向量;x0为初始向量

A,b,Aeq,beq的形式类似于解线性方程组的形式

(5)

4) 代码格式3

[x,fval,exitflag] = fmincon(@func, x0,A,b,Aeq,beq,l,u); 其中:l为解的上限;u为解的下限;(即解的范围lxu)。

条件顺序:线性不等式线性等式上下线非线性条件

5) 代码格式4

[x,fval,exitflag] = fmincon(@func, x0,A,b,Aeq,beq,l,u,@func2);

其中:@func2是用于非线性约束,它的格式为:

cx0ceqx0 (6)

程序形式为:

function[c,ceq] = fxx(x0);

c=……;

ceq=……;

如果有多个非线性条件——见下面的例3

法一:可以返回2/4/6/8…个结果,结果分别为不1、等1、不2、等2、不3、等3……,没有的则用[]或0

法二:把c,ceq视作数组,即c = [不1,不2,不3,…]; ceq=[等式1,等式2,等式3,…];

注意:前面的各向量(矩阵)如不使用,必须使用空的向量(后面的如不使用,则可以不管)(即每个参数的意义是由他们的位置来决定的,不是由变量决定的,变量名可以任意。)

任意函数、任意n元函数都可用

fmincon --- 万能的6) 函数的形式

Function f = zha(r); (一定是只有一个形参)

r(1)=x;

r(2)=y;

r(3)=z;

……

f = @func 如求最大值:则前后两次取反

都是求最小值:解完题后还必须判断exitflag的值是否>0,以决定结果的正误所以最好返回3个结果

看一下exitflag,如无效则换一个初始向量x07) 手把手做

先做好各种准备(目标函数表达式-codes;线性条件(不等式、等式) 非线性条件另编一个程序)最后coding fmincon条件分为:线性不等式、线性等式、上下限、非线性条件(不等式, 等式) -- 程序返回两个结果一般是不等式居多(再多都不要紧),一般不会有太多的等式条件 (否则都可以解方程了)


发布者:admin,转转请注明出处:http://www.yc00.com/num/1702462563a1221640.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信