Skip to content

Phil-Kuo/Python-snippets

Repository files navigation

Python snippets for Data Science and problem-solving.

粒子群算法

粒子群算法(particle swarm optimization, PSO),是一种群体智能的优化算法,它是借鉴于群体的智慧来进行优化的过程。

1.1 PSO算法原理初窥

​ PSO算法在可行解空间初始化一群粒子,每个粒子一般通过位置、速度和适应度值3项指标来表征,每个粒子所处位置都可以看作问题的一个潜在最优解,通过粒子的速度来调整粒子移动的方向和大小,从而实现粒子个体在可行解空间的搜索过程。

​ 粒子速度的调整过程,也是借鉴了自身的和其他粒子的移动经验,即通过群体中个体之间的协作和信息共享来寻找问题的最优解。

​ 具体来说,迭代更新过程的2个公式为: $$ V_{id}^{k+1} = \omega V_{id}^{k} + c_1r_1(P_{id}^{k}-X_{id}^{k})+c_2r_2(P_{gd}^{k}-X_{id}^{k}) $$

$$ X_{id}^{k+1} = X_{id}^{k} + V_{id}^{k+1} $$

​ 其中为w惯性权重,D为搜索空间的维数,n为粒子数目,d=1,2,...D, i = 1,2,...,nk为当前迭代次数,Vid为粒子的速度,c1,c2为非负的常数,称为加速因子,r1,r2为分布于[0,1]区间的随机数。为防止盲目搜索,一般会将位置和速度限制在一定的区间内。

1.2 案例分析

1.2.1 寻找函数极值

​ 寻找下列非线性函数在[0, 2]区间内的极大值 $$ f(x,y) = \frac{(sin(\sqrt{(x^2+y^2)})}{\sqrt{(x^2+y^2)}}+e^{\frac{cos2\pi x+ cos 2\pi y}{2}}-2.71289 $$ ​ 还尝试了几种不同的惯性权重取值。

1.2.2 多目标优化模型

​ 在实际工程流程优化过程中,多数问题是多目标优化问题。而且往往多目标之间是相互冲突的,在满足其中一个目标最优时,其他的目标可能会受其影响表现很差。本案例利用PSO算法求解多目标的背包问题。

linear regression

从机器学习和统计学习两个角度来解决一个简单的例子,分析了数量与成本之间的关系。

logic regression

采用逻辑回归模型,对二元分类问题进行建模分析。

econometrics

讨论了定性变量与定量变量的处理方法。定性变量的处理的方法有两种:一是将定性变量转换为虚拟变量,二是转化为定量变量;定量变量的处理方法:将定量变量转换为定性变量,然后再转换为虚拟变量。

industrial steam forecast

天池新人赛,调包。

About

Something need to be storage

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published