2023年12月13日发(作者:小米最新款是哪一款)
工程最优化即最大(小)问题
关于工程最优化的求解,之前已有基因遗传算法、蚁群算法、凸优化。今天来介绍一种方法,是基于matlab自带函数
fminunc、fmaxunc来计算的,它的计算方式更加简洁高效,只需解一个目标函数。
一、无约束(无条件)的最优化
使用fminunc函数 (un-condition)
1) 可用于任意函数求最小值问题( 即只能求最小值 )。
如求最大值:
ˆ1dw
ˆuargmaxdHwRww(1)
取反,则等效为求最小值:
ˆ1dw
ˆuargmindHwRww(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,一般等于1exitflag0,函数不收敛
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);
用于线性约束不等式,即
Ax0b
其中:A为系数矩阵;b为常数项列向量;x0为初始向量
(4)
一定要变成
3) 代码格式2
都是小:求最小值,条件
[x,fval,exitflag] = fmincon(@func, x0,A,b,Aeq,beq);
用于线性不等式约束与线性等式约束,线性等式即Aeqx0beq
Aeqx0beq
其中:Aeq为系数矩阵;beq为列向量;x0为初始向量
A,b,Aeq,beq的形式类似于解线性方程组的形式
(5)
4) 代码格式3
[x,fval,exitflag] = fmincon(@func, x0,A,b,Aeq,beq,l,u); 其中:l为解的上限;u为解的下限;(即解的范围lxu)。
条件顺序:线性不等式线性等式上下线非线性条件
5) 代码格式4
[x,fval,exitflag] = fmincon(@func, x0,A,b,Aeq,beq,l,u,@func2);
其中:@func2是用于非线性约束,它的格式为:
cx0ceqx0 (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条)