3

いくつかの流体の混合比を最適化するために、遺伝的アルゴリズムを実装したいと考えています(言語/フレームワークについてはまだわかりませんが、おそらくWatchmakerです)。

各ミックスは最大 5 つの成分a, b, c, d, eで構成され、値が変化する遺伝子としてモデル化します。染色体は混合比を表すため、(少なくとも) 2 つの追加条件があります。

(1) a + b + c + d + e = 1
(2)    a, b, c, d, e >= 0

私はまだプロジェクトを計画している段階にあるため、サンプルコードを提供することはできませんが、ウォッチメーカーのようなフレームワークを使用して遺伝的アルゴリズムでこれらの条件を実装できるかどうか、およびどのように実装できるかを知りたいです。

[編集]
これは簡単なことではないように思われるので、いくつかの説明:

問題は条件 (1) です。各遺伝子a, b, c, d, eがランダムに独立して選択される場合、これが発生する確率は約 0 です。したがって、a, b, c, d, e相互に依存して選択される方法で突然変異を実装する必要があります (乱数を参照)。 100 に追加:例としてMatlab )。

ただし、これが可能かどうかはわかりません。可能であれば、一般的な進化的アルゴリズムに従っています。

4

1 に答える 1

2

最初の条件 ( ) は、染色体を短くa+b+c+d+e=1することで満たすことができます。値は、 (フィットネス関数で、または後で使用するために) で表すことができます。a,b,c,dee:=1-a-b-c-d

編集:
最初の条件を満たす別の方法は、値を正規化することです:

sum:= a+b+c+d+e
a:= a/sum;
b:= b/sum;
c:= c/sum;
d:= d/sum;
e:= e/sum;

新しい合計は 1 になります。

2 番目の条件 ( )については、新しい子孫染色体 (突然変異および/またはクロスオーバーによって生成されたもの)を遺伝子プールに投入する前(および繁殖を許可する前) に承認段階a,b,c,d,e>=0を追加し、条件を満たさないものを拒否することができます。 .

于 2013-09-12T13:29:44.700 に答える