GA研究グループ研究報告(Jiro Kamiura:2002.07.17)


MOGADESにおける重み分散島と重み変化島の分離とその影響
2002.07.17

概要

多目的環境分散遺伝的アルゴリズム(Multi-Objective Genetic Algorithm with Distributed Environment Scheme : MOGADES)は,分割母集団(島)ごとに異なった重みパラメータを持ち,各島では単目的最適化を行いながら,全体では多目的最適化を行う.
各島に割り当てられる重みは,それぞれ異なり(重み分散), この重みは,移住操作の際に変化(重み変化)する.
本報告ではこのMOGADESの重み分散島と重み変化島を分離することにより,探索の効率化をはかる.

従来の重み分散と重み変化

従来の重み分散の方法

MOGADESの重み分散は従来,各目的に対して均等に分割するような設定した島数を越えない数に対して,均等に重みを分割したのち,余った島に対しては乱数によって重みを与えることによって行っていた.
Fig.1 は,3目的の場合を例にして,従来の重み分散の方法を示したものである.
図中,6島と10島の場合には,均等に重みが分割されるが, 7 から 9 島の場合には,6島を均等に分割したのち, 余りについてはランダムに重みが割り当てられている.
Fig1.従来の重み分散の方法
Fig1. 従来の重み分散の方法 eps

従来の重み変化の方法

近傍移住

MOGADESの重み変化は,近傍移住の際に行われる.
近傍移住の際には,移住の度に変化する,対象目的関数について島をソートを行う.
このソートは,エリートの目的関数値によってではなく, 島に割り当てられている重みによって行う.
(ただし,重みが同じ場合にはエリートの目的関数値を比較する.)
このソートによって,島は目的関数の数に関わらず,直線上に並ぶ.
Fig.2 は,3目的9島の場合を例として,F1について島をソートした様子を表したものである.
島1から6まではF1に対する重みでソートを行い, F1に対する重みが等しい島7から島9では目的関数値についてソートを行う.
目的関数値についてのソートは,F1,F2,F3の優先順位で行う.(F2に関してソートを行っている場合は,F2,F3,F1の順となる.)
ソート後にある島Aと隣接する2島B,CをAの近傍と定義し,Aは,B,Cの2島と移住を行う.
このとき,端にある2島(Fig2.での1と9)は近傍が1島しか存在しないため,その1島とのみ移住を行う.
Fig2.島のソート
Fig2. 島のソート eps

従来の重み変化

近傍移住を行った後,近傍島との間で重み変化を行う.
以下にある目的関数 Fj に関してソートを行った場合の, 重み変化の手順を示す.
島数                                      i_num
目的関数の数                              j_num
島iの重み変化前の目的関数jに対する重み    W(i,j)  i=1..i_num
島iの重み変化後の目的関数jに対する重み    W'(i,j) i=1..i_num
島iのエリートのFjの値                     F(i,j)  i=1..i_num, j=1..j_num

procedure 重み変化
// i = 1 と i = i_num は端島なので対象外
for(i = 2; i < i_num ; i++) {

    // 島i-1よりも島i+1に近い → 島i-1に近づける
    if( |F(i-1,j)-F(i,j)| > |F(i+1,j)-F(i,j)| ) {
      // 変化後の重みが変化前の2倍を越える
      if( (W(i-1,j) + W(i,j))/2 > W(i,j) * 2 ) {
        W'(i,j) = W(i,j) * 2;
      // 変化後の重みが変化前の1/2倍を下回る
      } else if( (W(i-1,j) + W(i,j))/2 < W(i,j) / 2 ) {
        W'(i,j) = W(i,j) / 2;
      // 変化後の重みは変化前の1/2倍から2倍の間
      } else {
        W'(i,j) = (W(i-1,j) + W(i,j))/2;
      }
    }
    // 島i+1よりも島i-1に近い → 島i+1に近づける
    else if( |F(i-1,j)-F(i,j)| < |F(i+1,j)-F(i,j)| ) {
      // 変化後の重みが変化前の2倍を越える
      if( (W(i+1,j) + W(i,j))/2 > W(i,j) * 2 ) {
        W'(i,j) = W(i,j) * 2;
      // 変化後の重みが変化前の1/2倍を下回る
      } else if( (W(i+1,j) + W(i,j))/2 < W(i,j) / 2 ) {
        W'(i,j) = W(i,j) / 2;
      // 変化後の重みは変化前の1/2倍から2倍の間
      } else {
        W'(i,j) = (W(i+1,j) + W(i,j))/2;
      }
    }
    // 島i+1からも島i-1からも同距離
    else {
      W'(i,j) = W(i,j);
    }

   // W(i,j)以外の重み W(i,k) の比は重み変化の前後で変わらないようにする
    var_1 = 1.0 - W(i,j);
    var_2 = 1.0 - W'(i,j);
    if( W(i,j) != 1 ){ // == (var_1 != 0) {
      for( k = 1; k < j_num; k++) {
        if( k != j ) {
          W'(i,k) = W(i,k)*var_2/var_1;
        }
      }
    } else {
      for( k = 1; k < j_num; k++) {
        if( k != j ) {
          W'(i,k) = 0;
        }
      }
    }

}

従来手法の問題点と対処法

問題点

従来は,島数を出来る限り均等に重み分散し, すべての島に対して重み変化を適用していた.
重み変化の直後は探索の方向が変化するため, 重み変化の回数や,変化前後の重みの差分が大きくなると, 効率的な探索を行うことが出来ない.

対処法

対処法として,重み分散を適用する島と重み変化を適用する島を分離することが考えられる.
これにより,均等に重みを分散させた島は常に固定した重みで探索を行う. このため,探索効率の低下を防ぐことが出来るものと予想される.
また,重み変化を適用する島が限定されることにより, 重み変化が適用される島においても重みの変化量が減少するために, いろいろな部分を,効率よく,探索することが可能となると思われる.

重み分散島と重み変化島の分離

島数の半分(小数点以下繰り上げ)の島を重み分散島(fixed islands)とし,残りを重み変化島(free islands)とする. 重み分散島に対して,重みを均等に割り当てる.
余った島に対しては各目的関数に対して等しい重みを与える.
重み変化島に対しては,乱数によって重みを与える. Fig.1 は,3目的の場合を例にして,新しい重み分散の方法を示したものである.
重み変化は,重み変化島に対してのみ起こるようにする.
Fig3.重み分散島と重み変化島の分離
Fig3. 重み分散島と重み変化島の分離 eps

性能の検証

複数の多目的最適化問題に重み分散島と重み変化島を分離したMOGADESを適用し,その性能を調べる.
対象問題を以下に示す.

対象問題

ZDT4



Eq1. ZDT4

ZDT6



Eq2. ZDT6

KUR



Eq3. KUR

Zero-One Knapsack Problem (750items 3knapsacks)

以降,KP750-3と表記する.


Eq4. KP750_3

数値実験

ZDT4, ZDT6 は100個体,250世代,で30試行, KUR は100個体,1000世代,で30試行, KP750-3 は300個体,1000000評価計算,で10試行の実験を行った.
Fig.4 , Fig.5 , Fig.6, Fig.7 は,それぞれ各試行で得られたすべての非劣解集合をプロットしたものである.
パラメータ等,実験の詳細については,別紙を参照されたい.


Fig4. ZDT4の結果 eps : 得られた非劣解集合(csv)


Fig5. ZDT6の結果 eps : 得られた非劣解集合(csv)


Fig6. KURの結果 eps : 得られた非劣解集合(csv)


Fig7. KP750-3の結果 eps : 得られた非劣解集合(csv)

結論

重み分散島と重み変化島を分離したMOGADESは,いずれの問題においても良好な結果を示している.


: TOP PAGE :
(1) 2002.07.17