問題タブ [evolutionary-algorithm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1204 参照

matlab - 個々のステップサイズによる進化戦略

30次元の最小化問題の進化戦略で良い解決策を見つけようとしています. これで、単純な (1,1) ES と、1 ステップ サイズの自己適応型 (1,lambda) ES の開発に成功しました。

次のステップは、次元ごとに個別のステップサイズを持つ (1,lambda) ES を作成することです。問題は、MATLAB コードがまだ機能しないことです。私は球の目的関数をテストしています:

1 つのステップ サイズの ES と個々のステップ サイズの ES のプロットされた結果:

結果

青い線は個々のステップ サイズでの ES のパフォーマンスで、赤い線は 1 つのステップ サイズでの ES のパフォーマンスです。

複数のステップサイズを持つ (1,lambda) ES のコード:

誰も問題を見ませんか?

0 投票する
14 に答える
8832 参照

algorithm - 遺伝的プログラミングを妨げているのは何ですか?

私は遺伝的アルゴリズムを使ってかなりの量の仕事を成功させてきましたが、これまでのところ遺伝的プログラミングを無視しています。私の知る限り、ほとんどのプログラムはプログラマーによって書かれたままですが、遺伝的プログラミングを妨げているものを知りたいのですが。

私が考えたいくつかの可能な説明は次のとおりです。

  1. 検索スペースが大きすぎて、ノイズの中から有用なプログラムを見つけることができません
  2. ほとんどの実際のアプリケーションは、そのようなスペースの適合性評価を可能にするのに十分なデータを提供できません。
  3. 多くの実際のアプリケーションの有効性を単一のフィットネス指標にまで減らすことは困難です。言い換えれば、適切な適応度関数を作成するには、実際のプログラムを作成するのと同じ量の作業が必要になる可能性があります。

何か案は?

0 投票する
1 に答える
2812 参照

c# - 配車ルート問題におけるグラフ理論の使用

私は単一のデポで配車ルートの問題に取り組んでいます。問題の定義は次のとおりです。m個のサイトに移動する必要のある車両はn個あります。各サイトには、特定の容量の車両のみがサイトにサービスを提供できるなど、特定の制約があります。一部のサイトは、1日の特定の時間にサービスを提供する必要があります。また、車両の容量は異なり、開始時間と終了時間も異なります。

アイデアは、デポからの車両の移動時間を最小限に抑えることです。

私は問題のコストマトリックスを作成しているところです。グラフ理論の専門家ではありませんが、古典的な巡回セールスマン問題に陥った場合、ハミルトン閉路を使用して問題を解決できることを私は知っています。しかし、それは複数の巡回セールスマン問題に該当するため、ハミルトンサイクルを使用して問題に対処する方法を知りたいのですが、それとも、そのような問題を対象とするように特別に設計された別のプロセスがあるのでしょうか。

どんな助けでも大歓迎です。

0 投票する
5 に答える
1478 参照

algorithm - 遺伝的アルゴリズム:「サブセット」問題でクロスオーバーを行う方法は?

遺伝的アルゴリズムで解決しようとしている問題があります。問題は、100個の整数のサブセット(たとえば4)を選択することです(これらの整数は、他の何かを表す単なるIDです)。順序は重要ではありません。問題の解決策は、順序付きリストではなく整数のセットです。適応度関数は良いのですが、クロスオーバー関数に問題があります。

次の2つの染色体を交配できるようにしたいと思います。

[1 234]と[3456]を何か便利なものに。明らかに、通常のクロスオーバー関数を使用できません。これは、無効なソリューションを表す重複が子供に発生する可能性があるためです。この場合の最良のクロスオーバー方法は何ですか。

0 投票する
3 に答える
13923 参照

java - 遺伝的アルゴリズムトーナメントの選択

私は遺伝的アルゴリズムを書いていて、ルーレットホイールの選択からトーナメントの選択に移行する予定ですが、私の理解に欠陥があるのではないかと思います。

母集団の中でn/2の最良のソリューションのみを選択している場合、確かに私は母集団をすぐに使い果たしますか?

アルゴリズムについての私の理解は次のとおりです。

私はこれを正しく理解していますか?

0 投票する
2 に答える
2727 参照

haskell - Haskell: 遺伝的アルゴリズムの抽象化

私は Haskell プログラミングの世界に不慣れで、巡回セールスマン問題の適切な解決策を見つけるための単純な遺伝的アルゴリズムに歯を食いしばっています。私はソリューションを整数の順列として表現しているので、このタイプのシノニムがあります

アルゴリズム自体は、解を操作する一連の関数です。

私のコードが私の質問にどの程度関連しているかわかりませんので、詳細が必要かどうか尋ねてください。言及する価値があるかもしれないことの 1 つは、上記の型シグネチャが実際には単純化されていることです。実際、私は State モナドを使用して を持ち歩いているStdGenため、これらすべての関数は実際にステートフルな計算を返します。

これでやりたいことがいくつかありますが、頭を悩ませることはできません。ソリューションにさまざまな表現を選択できるようにしたいのですが、これは型クラスを使用するのに自然な場所であると思われるためGenome、型クラスと[Int]this の特定のインスタンスになりますGenome

今、私は実装を実験できるようになりたいと思っています。また、他のプロジェクトでコードを使用できるようにしたいと考えています。このような型クラスを使用すると、新しいアルゴリズムを作成するたびに の別のインスタンスを作成する必要がありますがGenome、これはライブラリを作成する良い方法ですか?

おまけの質問の 1 つですが、私を悩ませているのは、関数の型シノニムのようなものを作成して、関数を引数として受け取る関数を作成する場合に、型全体ではなくシノニムを作成できるようにする方法はありますか?関数の署名、つまり次のようなものが機能するようにします。

そうです、うまくいけば、それが問題の十分に明快な説明です。私は本当に明白な答えを見逃したように感じますが、それは私に飛びつきませんでした. 乾杯

0 投票する
1 に答える
256 参照

heuristics - 興味深いメタヒューリスティックアルゴリズム、学習が容易、実際のアプリケーションでの多くの使用法

私は最適化に興味を持ったことはありません。私の教授のほとんどすべてがその中にいますが。それで、私は私の論文で使用されるいくつかの主題を与えられました(それは良い言葉ですか?)。それらの中の一つ。結果はアプリケーションになるはずです。ですから、私は興味深いメタヒューリスティックで進化的なアルゴリズムを探しています...、それは理解するのがそれほど難しくなく、さまざまな使用法があります。多分誰かが何らかの経験を持っていますか?

トピックは次のとおりです。

  1. 差分進化アルゴリズム

  2. メタヒューリスティック
    アルゴリズムの共進化

  3. マルチオブジェクティブ進化的アルゴリズム..。

0 投票する
3 に答える
240 参照

java - 従業員の最終候補リスト

キューにn個あるものがあり、オープン基準カテゴリC {X、YZ)(ここではX、Y、ZはCバリアント)に対して可能な限り最良のものを見つける必要があります。最小の時間計算量で最もよく提案される遺伝的アルゴリズムは何でしょうか?

例えば:

会社がC++、C、銀行ドメイン、STL、5〜10年などで仕事を投稿するとします。100人が同じポジションに応募しました。いくつかはCで、いくつかはC ++、Javaでexpを持っています。いくつかはC、C ++、テレコムドメインなどを持っています。ここでの私の質問は:最高の従業員を見つける方法は?それらをランク付けする方法は?

0 投票する
3 に答える
702 参照

genetic-algorithm - 定常状態の遺伝的アルゴリズムに突然変異を適用する

シンボリック回帰を実行するために、定常状態の遺伝的アルゴリズムを実装しています。

私の質問は、突然変異とクロスオーバー演算子の関係についてです。

私は常に突然変異確率(Pm)を調べてから、突然変異とトーナメントの選択を適用して、エラーに基づいて親を選択します。

  • 最初の質問:

突然変異は、交叉(または別の遺伝的演算子)の後に得られた子供にのみ適用する必要がありますか、それとも1人の親に直接適用して、新しい個体を生成することができますか?

  • 2番目の質問:

クロスオーバー手術後に得られた子供は常に突然変異を試みなければなりません(もちろんPmで)?

よろしくお願いします。

0 投票する
8 に答える
11972 参照

algorithm - 遺伝的アルゴリズムによるコード生成

進化的プログラミングは、多くの最適化問題を解決する優れた方法のようです。アイデアは非常に簡単で、実装に問題はありません。

ruby/python スクリプト (または他の言語) でプログラムを進化的に作成する方法があるかどうか疑問に思っていました。

アイデアは簡単です:

  1. プログラムの母集団を作成する
  2. 遺伝子操作 (ルーレット ホイールの選択またはその他の選択) を実行したり、最高のプログラムから継承した新しいプログラムを作成したりします。
  3. 条件を満たすプログラムが見つかるまでポイント 2 をループします。

しかし、まだいくつかの問題があります。

  1. 染色体はどのように表されますか? たとえば、染色体の 1 つのセルを 1 行のコードにする必要がありますか?
  2. 染色体はどのように生成されますか? それらがコード行である場合、それらが構文的に正しいことを保証するためにどのように生成しますか?

生成できるプログラムの例:

N 個の数値を入力として取り、それらの平均を出力として返すスクリプトを作成します。

そのようなアルゴリズムを作成しようとする試みがあった場合は、リンク/ソースを見て喜んでいます.