前面两篇博客介绍了双层优化的基本原理和使用
KKT
条件求解双层优化的
方法,以及使用
yalmip
工具箱求解双层优化的方法:
双层优化入门
(1)—
基本原理与求解方法
除了数学规划方法之外,还可采用智能优化算法求解双层优化问题,一般在
上层优化中采用智能优化算法,下层优化使用数学规划方法;也可以在上下层优
化中都采用智能优化算法,这篇博客将进行详细介绍。
算例依旧使用上面两篇博客中的线性双层优化问题,由于这个优化问题比较
简单,我们采用最基础的粒子群算法进行求解。
1.
粒子群算法
1995
年,受到鸟群觅食行为的规律性启发,
James Kennedy
和
Russell Eberhar
建立了一个简化算法模型,经过多年改进最终形成了粒子群优化算法
(Particle
Swarm Optimization, PSO)
,也可称为粒子群算法。
关于算法的原理及步骤可以参考这篇博客:
粒子群优化算法(Particle Swarm Optimization, PSO)的详细解读 - 知乎
(zhihu.com)
我们假设目标函数是平方和最小,也就是:
2
, 10,10f x x x
假设种群数为
200
,问题维度为
10
,最大迭代次数为
200
,位置上下限分别
为
10
,
-10
,速度上下限为
5
,
-5
,惯性权重取固定值
0.9
,自我学习因子以及群
体学习因子都取
1.5
,
Matlab
代码如下:
%%
清除变量
clc