問題タブ [particle-swarm]
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.
r - R で PSO を使用したニューラル ネットワークのトレーニング
R 環境で PSO アルゴリズムを使用してニューラル ネットワークをトレーニングする必要があります。ニューラル ネットワークに関するすべての R パッケージ (ニューラルネット、AMORE など) は既に知っていますが、PSO トレーニング (バックプロパゲーションのみ) を含むものはありません。
アイデア?助けてくれてありがとう。
c++ - C++ での粒子群最適化
C++ で PSO アルゴリズムを実装する必要があります。最初に使用できる C++ ライブラリはありますか?
c++ - 私の粒子群最適化コードは、C++ と MATLAB で異なる答えを生成します
C++ で粒子群最適化アルゴリズムのグローバル バージョンを作成しました。以前に書いた MATLAB PSO コードとまったく同じように記述しようとしましたが、このコードは異なる最悪の結果を生成します。MATLAB コードは次のとおりです。
ここで、testfunc1 は次のとおりです。
C++ コードは次のとおりです。
2 つのコードを何度もデバッグしましたが、答えが異なる原因となる違いを見つけることができません。それは私を夢中にさせています!助けてください。
アップデート:
関数meanは何らかの情報を報告するためにのみ使用され、最適化手順では使用されないことを考慮してください。
genetic-algorithm - 確率的最適化アルゴリズム
2つの確率的最適化アルゴリズム(遺伝的アルゴリズム、粒子群最適化、カッコウ探索など)、AとBがあり、関数のグローバル最大値を見つけたいとします。次に、アルゴリズムAが1次元探索空間で関数Fを最適化する際にアルゴリズムBよりも優れたパフォーマンスを発揮する場合、N次元探索空間で関数Fを最適化する際にもアルゴリズムAがBよりも優れたパフォーマンスを発揮しますか?
F_NDでN次元の関数Fを参照します。F_1DとF_NDは、次元数が異なることを除いて、同じ関数であることに注意してください。「風景」はまったく同じですが、次元が異なります。
例:DeJong関数の場合:
F_1DとF_5Dの「タイプ」/「アスペクト」は同じです
...別の言い方をすると:
general_performance(A、F_1D)> general_performance(B、F_1D)の場合、general_performance(A、F_ND)> general_performance(B、F_ND)(もちろん、より大きなNの場合)も成り立ちますか?
java - 反復ごとにシミュレーション データを保存するための最適な戦略は何ですか?
複雑な問題に対して多目的粒子群最適化アルゴリズムを使用しています。これは大きな母集団 (4000 個の粒子) を使用し、シミュレーションに時間がかかります (4 ~ 6 時間の実行)。
アルゴリズムは、これまでに見つかった最良のソリューションのリポジトリであるアーカイブを保持しているため、アルゴリズムの収束と動作を分析するために、このリポジトリからデータを保存する必要があり、場合によっては反復ごとに母集団全体からデータを保存する必要があります。
現在、各イテレーションで、(Java で言えば) パーティクルのオブジェクトから (リポジトリおよび/または集団から) いくつかの属性をコピーし、シミュレーションとは別のスレッドで実行されるメソッドで StringBuffer にフォーマットします。プログラムの実行が終了したら、テキスト ファイルに保存します。
これを行うことで、私のアルゴリズムはメモリを悪い方法で消費していると思います。しかし、パフォーマンスについても考えると、これらすべてのデータを保存する最善の方法がわかりません。同じロジックに従う必要がありますが、アルゴリズムの最後まで行うのではなく、反復ごとに .txt ファイルを保存する必要がありますか? または、データベースに保存する必要がありますか? もしそうなら、私はそれを各反復で、または最後または別の時に保存する必要がありますか? それとも、どういうわけか別の方法でアプローチする必要がありますか?
編集:リポジトリ データは多くの場合 [5 - 10] MB の範囲ですが、人口データは [100 - 200] MB のメモリを占有します。プログラムを実行するたびに、平均収束を分析するために約 20 回のシミュレーションが必要です。
nonlinear-optimization - 粒子群最適化慣性係数
私は現在「粒子群最適化」でソフトコンピューティングアルゴリズムを読んでいますが、一般的な手法は理解していますが、それがどのように機能するか、または飛行にどのように影響するかを想像または理解できない数学または物理学の部分に立ち寄りました。部分は、「不活性係数」と呼ばれる速度を更新する方程式の最初の部分です。
完全な更新速度方程式は次のとおりです。
セクション2.3「不活性係数」の1つの記事を読んでください。
「アルゴリズムのこのバリエーションは、既知のソリューションの周囲の領域を利用するか、検索スペースの新しい領域を探索するかの2つの可能なPSO傾向(パラメーター化に依存)のバランスをとることを目的としています。これを行うために、このバリエーションは粒子の運動量成分に焦点を当てます。速度方程式2。このコンポーネントを削除すると、粒子の動きには前の動きの方向の記憶がなく、常に見つかった解の近くを探索することに注意してください。一方、速度コンポーネントを使用する場合、またはaw(慣性重量、運動量成分の重要性のバランスをとる)係数を掛けても、粒子は最適な解に向かって速度を簡単に変更できないため、探索空間の新しい領域を探索する傾向があります。最初に運動量を「打ち消す」必要があります。得られた、そうすることで、前の運動量を打ち消す時間で新しい領域の探索が可能になります。この変動は、前の速度成分に重み値wを掛けることによって実現されます。
しかし、これが物理的または数値的にどのように発生し、この要因が探査レベルから搾取レベルへの移行にどのように影響するかを想像することもできません。したがって、数値例を使用して、それがどのように機能するかを確認し、どのように機能するかを想像する必要があります。
また、遺伝的アルゴリズムには、GAが最適な解を見つけることに成功した証拠であるスキーマ定理があります。PSOにはそのようなアトームがあります。
java - 人工ニューラル ネットワーク PSO トレーニング
PSO を使用してトレーニングしている FF ニューラル ネットワーク (分類問題に使用) に取り組んでいます。隠れ層は 1 つしかなく、その層のニューロンの量を変えることができます。
私の問題は、NN は線形分離可能な問題を非常に簡単に学習できるが、線形分離できない問題 (XOR など) を学習できるはずのように学習できないことです。
PSO が各粒子の誤差関数を最小化しようとしていることがわかるため (トレーニング セットの平均二乗誤差を使用)、私の PSO は正しく機能していると思います。
同様の(悪い)結果を持つシグモイドおよび線形活性化関数を使用してみました。バイアスユニットもあります(これもあまり役に立ちません)。
私が知りたいのは、この種の問題を引き起こす可能性のある間違ったことをしている可能性がある特定の何かがあるかどうか、またはエラーがどこにあるのかを調べる必要があるかどうかです。
現時点では少し迷っています
ありがとう
c# - 粒子群暗号解読における解の座標
Particle Swarm Algorithm を使用して Monoalphabetic Substitution Ciphers を解決する C# アプリケーションを作成しています。
基本的に私はプロセスを理解し、ベクトル ect を更新するために必要なすべてのアルゴリズムを見つけました。私がうまくいかないのは、問題空間で26文字のソリューションの位置/座標を計算する方法です。これにより、ここにあるアルゴリズムでそれを使用できます: http://www.codeproject.com/Articles/42258/Particle-swarm -関数最適化の最適化
位置は単にアルファベットの文字位置に関連する int の配列ですか?
どんな助けでも大歓迎です。
java - 二ベクトル誤差の交差関数
私の関数の目標は、2 つの Vector 間の 1 ポイント クロスオーバー関数を使用して、最初の Vector の要素と 2 番目の Vector の要素を持つ新しいハイブリッド「Son」 Vector を取得することです。
うまく動作することもあれば、「java.lang.ArrayIndexOutOfBoundsException」エラーが発生することもあります..いくつかのアイデアはありますか?