直觉 + 数学 + 代码,适用于实践者

人类喜欢模仿自然界的许多事物。
我们模仿青蛙游泳。我们通过在飞机上安装机翼来模仿鸟类以提供升力。我们在武术中模仿鹤/蛇/螳螂。我们模仿白蚁以建造具有高效温度控制的结构(参见东门中心)。
这也扩展到数学算法,您可能听说过人工蜜蜂群体、蚁群优化、布谷鸟搜索和萤火虫算法。之前我也提到过进化算法,其遵循自然选择的原理。
今天,我将介绍一下PSO——粒子群优化。在本文结束时,您将得到用于实现解决方案并生成gif以可视化搜索过程的代码。
用例
在高维空间中寻找最佳解决方案是困难的。学习机器学习的学生在第一周可能就听过“维度诅咒”这个术语。
高维空间不仅仅是一个抽象的数学概念。以供应链问题为例。一家公司必须决定其生产厂、仓库、分销中心和零售店的位置。为简单起见,假设每个位置只有一个。这已经使我们要寻找的解决方案的维度为8 – (x₁,y₁,x₂,y₂,x₃,y₃,x₄,y₄)。

绝对位置(x₁,y₁,x₂,y₂,x₃,y₃,x₄,y₄)影响每个设施之间的相对位置。绝对位置和相对位置都会影响运营成本以及预期收益,从而影响利润。虽然不是完美的,但我们可以近似说搜索空间和目标函数的影响是连续的。
问题的表述
实际上,将输入(候选解决方案)映射到输出(目标)的底层函数是一个黑匣子,无法用数学表示。