-1

我得到一个 nxn 矩阵,其中 n 的范围从 3 到 5。然后为该矩阵分配 1-n^2 的随机值。给定矩阵,我将优化电路板,以便得到幻方解。

随机棋盘示例:n = 3

    3 5 6
    1 7 8
    2 4 9

我对 PSO 有一点了解,但我至少知道这一点:

1. Randomly initialize a set of particles at random positions in the search space;
2. Evaluate all positions and update the global best position and the personal best positions;
3. Update each velocity based on the relative position of the global best position, the current velocity of the particle, the personal best position of the particle and some random vector;
4. goto 2.

我还被告知该问题不适用于 PSO 等算法,但我别无选择,只能将其用于此问题,因为它是所需的算法。

我在想粒子是数组中分配的数字,但是如何评估它的位置并更新粒子位置?

谢谢!

4

1 回答 1

0

您需要有一个优化问题才能应用 PSO。如果您可以定义适应度函数,则可以执行以下操作:

例如,你的目标总和是20,你的适应度函数是f(currentSum) = |20 - currentSum|针对每一行、每一列和对角线的。

你改变一个正方形的值。之后,如果更改该值会降低 的值f(),这意味着您的速度应该指向该解决方案。如果它增加了价值,你应该去其他地方看看。

您需要两种类型的操作,即开发探索

开发menas,在附近寻找解决方案。当 suqare 的值发生变化时,寻找解决方案,使该值的行和列更接近您的targetSum.

探索意味着,改变全局。应用此步骤后,您可以进行开发(通常在整个棋盘随机化之后)。

对于初学者,您需要定义

  • 问题模型
  • 什么是解决方案?您如何定义解决方案
  • 目标函数
  • 健身功能
  • 速度
  • 毒物
  • 邻里
  • 勘探

但我的建议是不要将 PSO 用于不是优化问题的问题。PSO 很可能会以与随机搜索相同的性能工作。

于 2014-05-31T21:00:08.023 回答