#MATLAB# 全局优化求解器
为了数模,整理下MATLAB中常见的全局优化求解器。
算法 | Matlab求解器 | 作用 |
---|---|---|
全局搜索 | GlobalSearch | 寻找全局最小值 |
多起点搜索 | MultiStart | 寻找多个局部最小值(也可以得到全局最优) |
模式搜索 | patternsearch | 用模式搜索方式寻找函数的最小值 |
遗传算法 | ga | 用遗传算法寻找函数的最小值 |
粒子群算法 | particleswarm | 用粒子群算法寻找函数的最小值 |
模拟退火 | simulannealbnd | 用模拟退火算法寻找函数的最小值 |
1. 全局搜索
官方文档中的demo
运行结果为
注:
- optimoptions的第一参数指定求解器,如果只输入求解器名字,其他参数将按默认的配置。这里采用的是fmincon,其为求解非线性多元函数最小值的matlab函数。算法采用内点法,其他可选的算法参数有’active-set’,‘sqp’,‘sqp-legacy’,‘trust-region-reflective’。除此之外,常见的配置属性有(其余详见MATLAB官方文档):
参数名 | 作用 |
---|---|
‘MaxIterations’ | 指定最大迭代次数 |
‘ConstraintTolerance’ | 约束容忍度,默认为 1 0 ? 6 10^{-6} 10?6 |
‘MaxFunctionEvalutions’ | 函数评估的最大次数 |
2. 多起点搜索
与GlobalSearch的用法基本相同,需要注意的是在使用MultiStart时,run函数需要有三个参数:求解器,优化问题,求解器个数n。如此才能够从多个起点同时进行运算。
运行结果为
与GlobalSearch的结果一致。
3. 模式搜索
模式搜索pattersearch,全是小写字母,说明其是一个函数。而上面的GlobalSearch,MultiStart为类。因此用法上自然也有所不同。其可求解如下形式的问题:
min F ( x ) s.t. A ? X < = B , A e q ? X = B e q ( 线 性 约 束 ) C ( X ) < = 0 , C e q ( X ) = 0 ( 非 线 性 约 束 ) L B < = X < = U B \begin{array}{rl} extrm{min}\quad &F(x)\\ extrm{s.t.}\quad& A*X <= B,Aeq*X = Beq(线性约束) \\ &C(X) <= 0, Ceq(X) = 0 (非线性约束)\\ & LB <= X <= UB \end{array} mins.t.?F(x)A?X<=B,Aeq?X=Beq(线性约束)C(X)<=0,Ceq(X)=0(非线性约束)LB<=X<=UB?
函数调用方式如下(更多形式见官方文档)
下面还是给几个MATLAB官方文档中的demo。
- 求解无约束优化问题
运行结果为
- 求解带线性不等式约束的优化问题
运行结果为
- 求解带box约束的优化问题
4. 遗传算法
可求解如下形式的问题:
min F ( x ) s.t. A ? X < = B , A e q ? X = B e q ( 线 性 约 束 ) C ( X ) < = 0 , C e q ( X ) = 0 ( 非 线 性 约 束 ) L B < = X < = U B X ( i ) integer vector INTCON \begin{array}{rl} extrm{min}\quad &F(x)\\ extrm{s.t.}\quad& A*X <= B,Aeq*X = Beq(线性约束) \\ &C(X) <= 0, Ceq(X) = 0 (非线性约束)\\ & LB <= X <= UB\\ & X(i)\quad extrm{integer}\\ & extrm{vector\; INTCON} \end{array} mins.t.?F(x)A?X<=B,Aeq?X=Beq(线性约束)C(X)<=0,Ceq(X)=0(非线性约束)LB<=X<=UBX(i)integervectorINTCON?
注:
nvar: Number of design variables
nonlcon: Nonlinear constraint function
intcon : Index vector for integer variables
若
X
(
i
)
X(i)
X(i)为整数,则
intcon
=
i
extrm{intcon} = i
intcon=i
若nonlcon非空,则A,b为空
Demo
运行结果为:
5. 粒子群算法
可求解如下形式的问题:
min F ( x ) L B < = X < = U B \begin{array}{rl} extrm{min}\quad &F(x)\\ & LB <= X <= UB \end{array} min?F(x)LB<=X<=UB?
调用形式
Demo
运行结果如下
6. 模拟退火
可求解如下形式的问题:
min F ( x ) L B < = X < = U B \begin{array}{rl} extrm{min}\quad &F(x)\\ & LB <= X <= UB \end{array} min?F(x)LB<=X<=UB?
调用形式
Demo
运行结果为