-1

n の範囲が 3 ~ 5 の anxn 行列が与えられます。行列には、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()、速度をその解に向ける必要があります。値が増加した場合は、別の場所に行って調べる必要があります。

利用探索の 2 種類の操作が必要です。

解決策を求めて近所を探して、メナを搾取します。suqare の値が変更された場合、その値の行と列を自分の値に近づけるなどの解決策を探しますtargetSum

探検とは、全体像を変えることを意味します。このステップを適用した後、(通常はボード全体をランダム化した後に) 搾取を行います。

まず、定義する必要があります

  • 問題のモデル
  • 解決策とは?ソリューションをどのように定義しますか?
  • 目的関数
  • フィットネス機能
  • 速度
  • ポイジトン
  • 近所
  • 探検

しかし、私のアドバイスは、最適化問題ではない問題には PSO を使用しないことです。PSO は、ランダム検索と同じパフォーマンスで動作する可能性があります。

于 2014-05-31T21:00:08.023 に答える