問題タブ [differential-evolution]

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 投票する
0 に答える
347 参照

python - ヤコビアンを与えないScipyのDifferential_evolution

私はdifferential_evolutionアルゴリズムを使用してscipy、ガウス関数で畳み込まれたさまざまな指数関数でいくつかのデータを適合させています-これ自体は問題ではなく、関数はそれによく適合します。

scipy.optimize.minimizeただし、「ポリッシュ」を設定している(つまり、メソッドで使用しL-BFGS-Bて最適な母集団をポリッシュする)にもかかわらず、結果辞書にヤコビアンを与えていません(フィット定数のエラーを計算するために使用したい)末尾のメンバー) を True に設定するため、ドキュメントにはヤコビアンを指定する必要があると記載されています。私の関数は、ガウス幅と任意の数の指数を取り、次のように適合しています。

結果出力にヤコビアンが表示されない理由はありますか?

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

python - Scipy、差分進化

問題は、私の目的に合わせてフィッティング手順を設計しようとしており、scipy の微分進化アルゴリズムを初期値の一般的な推定量として使用したいということです。これは、より適切なフィッティングのために LM アルゴリズムで使用されます。DEで最小化したい関数は、分析的に定義された非線形関数といくつかの実験値の間の最小二乗です。こだわったポイントは機能設計です。scipy リファレンスで述べられているように: "関数はf(x, *args)の形式である必要があります。ここで、x は 1-D 配列の形式の引数であり、args は完全に指定するために必要な追加の固定パラメーターのタプルです。関数"

説明のために書いた醜いコードの例があります:

生データをタプルとして関数に提供したかったのですが、インタープリターが関数に満足していないため、想定どおりではないようです。問題は簡単に解決できるはずですが、本当にイライラしているので、アドバイスをいただければ幸いです。

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

r - DEoptim エラー: 目的関数の結果の長さがパラメーター行列と異なります

DEoptim コマンド (同名の R パッケージから) を使用して関数を最小化しようとしていますが、「目的関数の結果の長さがパラメーター行列とは異なります」という奇妙なエラーが発生します。読めない投稿されたCコードを除いて、この問題について何も見つかりません。

引数を介して関数に追加のパラメーターを渡そうとすると、エラーが発生し...ます。次の例では、Rosenbrock 関数 (DEoptim のドキュメントから取得) を修正して、2 番目の引数pow(ドキュメントに記載されている例と同じになるように 2 に設定) を指定します。これは機能します。次に、Rastrigin 関数で同じことを試みます (GenSA のドキュメントから)。ここでは同じトリックが失敗します (ただし、文書化されているケースのように、2 番目の引数をハードコーディングすると、オプティマイザーは正常に機能します)。

コード例は次のとおりです。

当然、この問題はより複雑な例で出てきましたが、この単純なケースの説明が助けになることを願っています。追加のヘルプである場合、最終的な目標はオブジェクトから関数を呼び出すことですdata.table。関数の最初の引数は最小化される (スカラー) パラメーターであり、残りの引数は から取得したデータdata.tableです。

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

algorithm - 分化進化と遺伝的アルゴリズムのパラメーター間隔

私は、遺伝的アルゴリズム (GA) の各パラメーターを、指定された間隔で実際の値にエンコードできるバイナリ文字列として表現できる方法に慣れています。

私は現在、差分進化 (DE) コードをコーディングしていますが、パラメーター間隔が GA のように制御されていることについては何も読んでいないため、この手順について少し混乱しています... ここに私の質問があります:

1) DE でパラメータの間隔を制御するものはありますか? 誰でも目的に合わせて DE を変更できることは理解していますが、DE が伝統的にどのように使用されているかについては興味があります。

2) 最初のランダム化された母集団の間隔を指定する方法はわかりましたが、突然変異操作と交差操作で間隔を制限するものはありますか?

3) パラメータに境界がない場合、突然変異とクロスオーバー操作は自由にすべての空間を探索できますか?

御時間ありがとうございます。

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

genetic-algorithm - 差分進化は、従属パラメーターの突然変異を必要とする問題を解決できますか?

差分進化 (DE) と遺伝的アルゴリズム (GA) の違いの 1 つは、DE は派生元の古い候補より適合しない限り新しい候補を破棄するのに対し、GA は「適合性の低い」候補がある程度の確率で生き残ることを許可することです。最初は DE のアプローチは良いアイデアのように思えますが、これが次のカテゴリの問題を解決するのを妨げていると私は信じています。

次のフィットネス スコアを最大化しようとしているとします。

A - [max(0, A - 50) * B] + [max(0, A - 75) * 2 * B]

パラメータの範囲は0100です。

  • A最初は、 に達するまで増やすのが有益50です。
  • 次に、Bゼロに設定すると効果的です。
  • A次に、 75に増やすことが有益です。
  • 次に、 と を同時に増やすBと効果的Aです。

この最後の点は重要です。AまたはBが互いに独立して増加すると、フィットネス スコアが低下します。

差分進化アルゴリズムに戻ると、最初は世代ごとに1つのパラメーターのみを変更したいが、最終的には世代ごとに複数のパラメーターを変更したいため、上記の問題をどのように解決できるかわかりません。世代ごとに複数のパラメーターを早期に変異させると、生存の確率が低下し、進化の速度が低下します。しかし、一度に 1 つのパラメーターを変更すると、グローバルな最大値を見つけることはできません。

私の質問は次のとおりです。

  • これは差分進化アルゴリズムの既知の問題ですか?
  • 既知の解決策はありますか?
  • 汎用アルゴリズムは同じ問題に悩まされていますか?

上記の特定の機能に対する解決策を求めているわけではありません。特定の時点でいくつのパラメーターを変更する必要があるかを前もって知らず、可能な限りグローバルな最大値に近づけたいという問題を差分進化で解決できるかどうかを尋ねています。