記事「母集団最適化アルゴリズム:2進数遺伝的アルゴリズム(BGA)(第1回)」についてのディスカッション

 

新しい記事「母集団最適化アルゴリズム:2進数遺伝的アルゴリズム(BGA)(第1回)」はパブリッシュされました:

この記事では、2進数遺伝的アルゴリズムやその他の集団アルゴリズムで使用されるさまざまな手法を探ります。選択、交叉、突然変異といったアルゴリズムの主な構成要素と、それらが最適化に与える影響について見ていきます。さらに、データの表示手法と、それが最適化結果に与える影響についても研究します。

最適化問題の入力はしばしば「特徴量」と呼ばれ、最適化アルゴリズムのロジックで使用するためには、一定の方法で表現する必要があります。遺伝学では、これらの特徴は表現型と遺伝子型に分けられます。表現型は最適化されるパラメータの外見であり、遺伝子型はアルゴリズムにおける表現方法です。ほとんどの最適化アルゴリズムでは、表現型は遺伝子型と同じで実数で表されます。遺伝子は最適化されたパラメータであり、染色体は遺伝子の集合、すなわち最適化されたパラメータの集合です。

分数を表現するために実数データ表現が使用されます。実数には小数部と分数部があり、小数点で区切られています。例えば、3.14と0.5は実数です。

一方、データの2進表現は、2つの記号を使用して数値を表現する2進数システムを使用します。0と1で、各桁はビット(2進数)と呼ばれます。例えば、数字5を2進数で表すと101となります。


データの実数表現と2進表現の主な違いは、数値の符号化方法です。実数は通常、浮動小数点数を表現するための形式を定義したIEEE 754などの標準規格を使用してエンコードされます。MQL5言語では、doubleデータ型は実数に使用され、数字の有効数字16桁を表すことができます。つまり、合計桁数は16を超えることはできません。例えば、「9 999 999 999 999 999.0」、「9 999 999.999 999 99」、「0.999 999 999 999 999 9」では、小数点の前後に合計16桁の「9」が存在します。なぜこれが重要なのかは、もう少し後で説明します。

実数はプログラムを書いたり日常生活で使用するのに便利で、2進数は計算機システムや論理演算、ビット演算などの低レベルの演算をおこなうときに使用されます。

作者: Andrey Dik

 
fxsaber #:
刺さった。
ありがとう。
 
読んでください。不足しているのは、最適化アルゴリズムの一般的な表現を示す図である。
 
fxsaber #:
読む。不足しているのは、最適化アルゴリズムの一般的な表現を示す図である。

GAに限らず、例外なくすべての最適化アルゴリズムにおいて、演算子(メソッド)の順序は常に同じで、目次のような順序になっている:

1.選択。

2.交叉

3.突然変異

各アルゴには1つまたは2つの演算子が欠けているかもしれないが、順序は常にそうである。この順序は論理的に正当化され、確率に関係することは間違いなく、最適化アルゴリズムの目標は、問題を解決するのに有利な確率の組み合わせを足し合わせることである。

第4の方法として、新しい個体を母集団に入れる方法もあるが、通常は独立した方法として認識されることはない。

そうだ、「最適化アルゴリズム」の構造図を描くのは意味があるのかもしれない、考えてみよう。

 
Andrey Dik #:

GAに限らず、すべての最適化アルゴリズムにおいて、演算子(メソッド)の順序は常に同じである。

入力なしで動くアルゴリズムもあれば、入力ありで動くアルゴリズムもある。
for (uint i = epochCount; (bool)i--;)
{
  AO.Moving() // 移動(i)

  for (uint set = ArraySize(AO.aName); (bool)set--;)
    AO.aName[set].f = FF(AO.aName[set].c);
                                                                     
  AO.Revision();
}
 
fxsaber #:
ムービング・アルゴリズムの中に、入力なしのムービングと入力ありのムービングがある理由がわからなかった。

これは、アルゴリズムの式の1つで現在のエポック数を考慮する必要がある場合である。他のアルゴリズムでは、エポックカウンターはそれ自身の内部である。