問題タブ [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.

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

optimization - 粒子群最適化のために可変長染色体を使用できますか?

粒子の長さは異なりますか。たとえば、10個の遺伝子を持つ人もいれば、20個の遺伝子を持つ人もいますか?

もしそうなら、グローバルビースト、ローカルベスト、カレントはすべて異なる長さになる可能性があるため、速度を更新するにはどうすればよいでしょうか?

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

matlab - MatlabでCPUをフル活用する方法【反復的で時間のかかるプログラムのパフォーマンス向上】

私は、さまざまな照明条件の下で適応型の全自動セグメンテーション アルゴリズムに取り組んでいます。このアルゴリズムのコアは、粒子群最適化 (PSO) を使用してファジー システムを調整し、非常に時間がかかると信じています :| たった 5 個のパーティクルと 100 回の反復で、2 ~ 3 時間待たなければなりません。100 枚以上の写真を含むデータ セットから 1 つの画像を処理しているだけです。

Intel coer i7-2670Qm @ 2.2GHz //8.00GB RAM//64ビットオペレーティングシステムを搭載したmatlab R2013を使用しています

問題は次のとおりです。プログラムを開始すると、CPU の 12% ~ 16% しか使用されず、コアが 1 つしか機能しません!!

私はたくさん検索して matlabpool に入ったので、この行をコードに追加しました:

プログラムを開始すると、タスク マネージャーは 98% の CPU 使用率を示しますが、それはほんの数秒間です。その後、CPU 使用率は 12 ~ 13% に戻りました :|

このコードをより速く実行する方法を知っていますか?!

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

java - 粒子群最適化を使用した魔方陣

n の範囲が 3 ~ 5 の anxn 行列が与えられます。行列には、1 ~ n^2 のランダムな値が割り当てられます。行列が与えられたら、魔方陣の解に到達するようにボードを最適化します。

ランダムボードの例: n = 3

私は PSO について少し知識がありますが、少なくとも次のことは知っています。

PSOなどのアルゴリズムには向かない問題だとも言われましたが、必要なアルゴリズムなのでこの問題に使わざるを得ません。

粒子は配列に割り当てられた数字だと思いますが、その位置を評価して粒子の位置を更新するにはどうすればよいですか?

ありがとうございました!

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

algorithm - 粒子群最適化を使用した最短経路

inShortest Pathを使用して問題を解決したいと考えています。優先度エンコーディング [ 1 ] を使用してパスをエンコードし、狭窄と速度クランプ [ 2 ] を使用しています。PSOMATLAB

私が直面している問題は、コードが に比べて非常に遅いことDijkstraです。Dijkstraまず、ベンチマーク時間を取得するためにを使用してテストし、次に実行PSOして、その時間内に達成できる最小コストを見つけます。の結果PSOは常にはるかに高くなります。

Intel Core i3-2120各反復の終了速度を確認すると、プロセッサ 上に 1000 以上のノードがあるパスの場合、数秒かかることがわかります。

以下のコードでは、data.m最初に実行してコスト マトリックスを初期化し、次に Dijkstra を実行して時間ベンチマークを取得する必要があります。その後、秒単位でallowedTime変数を変更しますpso.m

パラメーター:

  • data.m
    • 寸法: いいえ。ノードの
  • pso.m
    • allowedTime: swarm の実行に許可された時間 (秒単位)
    • swarm_size: いいえ。粒子の
    • startNode: いいえ。パスの開始位置を表す (dimensions範囲内)
    • endNode: いいえ。パスの終了位置を表す (dimensions範囲内)
  • dijkstra.m
    • 受け入れます ( costMatrix, <start_node_id>, <end_node_id>)

乱雑なコードと関数を使用していないことは申し訳ありませんがinline、コードが完了した後、または中断したときに、すべてを作成してすべての値を確認する必要がありました。

データ.m

pso.m

dijkstra.m

(1) SPルーティング問題に対する非優性ソート遺伝的アルゴリズム
(2) 制約因子とパラメータ

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

neural-network - 人工ニューラル ネットワークに PSO を適用する方法

Particle Swarm Algorithm の概念を理解するのに問題があります。コードを書くために、いくつかの記事を私たちのスペースに散らばって、場所を見つけようとしています(for example min of a function or desire target)。位置、速度などに基づいて、すべての粒子が最終的に目的の場所に到達します。このコードを ANN 設計に適用するにはどうすればよいですか?

ニューラル ネットワークにどのように役立つのでしょうか? (PSO にはグローバルな楽観的な結果を見つける強力な能力があり、逆伝播にはローカルな結果を見つける能力があるようですよね?)

分かりやすい情報があれば教えていただけると幸いです。前もって感謝します

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

neural-network - matlab での粒子群最適化を使用したニューラル ネットワークのトレーニング

粒子群最適化アルゴリズムを使用してニューラル ネットワークをトレーニングしたいのですが、matlab ツールボックスにはこのアルゴリズムを使用してネットワークをトレーニングする機能がありません。いくつかの PSO ツールボックスを検索して作成しましたが、機能しませんでした。誰でも私を助けてもらえますか?ありがとう

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

java - 暗号解読の粒子群最適化における速度とは?

単純な置換暗号の鍵を見つけるために、暗号解読ローカル検索用の粒子群最適化アルゴリズムを実装しようとしています。

この方法がどのように機能するかの理論は理解しており、ほとんどのアルゴリズムを実装しましたが、速度を計算する方法がわかりません。

粒子クラス:

スワームクラス:

パーティクルは、私が別のアルゴリズム用に作成したアルファベット クラスの拡張であり、基本的にはスクランブル可能な 26 文字のアルファベット文字の char 配列です。粒子の「位置」(私が知る限り、それは単なるアルファベットまたは数値表現です)。

swarm クラスは自明ですが、キーが生成する英語テキストの量を表す 0 から 1 (1 が最高) のスコアでパーティクルをスコアリングするフィットネス クラスが含まれています。

このアルゴリズムの実装に出くわしました(コードはありませんが)、これらの手順を提案するvigenere暗号の鍵を見つけます:

実際の鍵を見つけるための提案されたアルゴリズム

  1. PSO 検索アルゴリズム パラメータの初期化

PSO パラメーターは、最初のステップで設定されます。これらのパラメーターは、粒子の数 (Np)、キーのサイズ (Nd)、反復の最大数 (Nt)、自己信頼係数 (C1)、群信頼係数 (C2)、および慣性の重み (w) で構成されます。

  1. 個別の鳥または個体群の初期化

a) vigenere 暗号の暗号解読の場合: 粒子の初期位置は、整数 0 から 25 までランダムに一様にサンプリングされたサイズ Nd の順列をランダムに選択することによって決定されます。 b) 以下を使用して各粒子の速度を初期化します。

vi は粒子 i の速度 vmax は最大速度、vmin は最小速度、rand は 0 から 1 の間の乱数です。

  1. リスト項目

各粒子の適合度関数値を計算する

a) 粒子の位置を鍵として暗号文を復号化します。b) ステップ 3 (a) で得られたテキストの適合度関数の値を見つけます。

  1. パーティクルの速度と位置を更新する

手順 3 で説明したように、各粒子の適合度関数の値を計算します。

数式をここに貼り付けられないようですが、426 ページで見ることができます: http://www.enggjournals.com/ijcse/doc/IJCSE13-05-05-064.pdf

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

matlab - 粒子群最適化によるニューラル ネットワークのトレーニングに関する概念上の問題

MATLAB が提供する IRIS データベースを使用して、フィットネス関数として平均二乗誤差 (MSE) を使用して粒子群最適化 (PSO) によってトレーニングされた 4 入力および 3 出力のニューラル ネットワークがあります。フィットネス関数は 50 回評価されます。実験は特徴を分類することです。いくつか疑問があります

(1) PSO 反復/世代 = 適合度関数が評価される回数ですか?

(2) 多くの論文トレーニング曲線で、MSE 対世代のトレーニング曲線がプロットされているのを見てきました。写真の左側のグラフ(a)はNNに似たモデルです。4 入力 0 隠れ層 3 出力認知マップです。グラフ (b) は、同じ PSO によってトレーニングされた NN です。この論文の目的は、(a) の新しいモデルが NN に対して有効であることを示すことでした。

しかし、彼らは実験が行われていると述べており、世代 = 300 でサイクル = 100 回と言っています。その場合、(a) と (b) のトレーニング曲線は、MSE 対 PSO 世代ではなく、MSE 対サイクルである必要があります。たとえば、Cycle1 : PSO 反復 1-50 --> Result(Weights_1,Bias_1, MSE_1, Classification Rate_1)。サイクル 2: PSO 反復 1 ~ 50 --> 結果 (重み_2、バイアス_2、MSE_2、分類率_2) など、100 サイクル。(a)、(b) の X 軸が異なるのはなぜですか? また、それらは何を意味するのでしょうか?

(3) 最後に、プログラムを個別に実行するたびに (m ファイルをコンソールから個別に数回実行する)、同じ分類率 (CR) または同じ重みのセットを取得することはありません。具体的には、最初にプログラムを実行すると、W (重み) 値と CR = 100% が得られます。Matlab コード プログラムを再度実行すると、CR = 50% と別の重みのセットが得られる場合があります!! 以下に例を示します。

正しい方法は何ですか?では、最終的にどの重みセットを使用する必要があり、ネットワークがトレーニングされたとどのように言えますか? ランダム性による進化的アルゴリズムが同じ答えを与えることはないことは承知していますが、ネットワークがトレーニングされていることを確認するにはどうすればよいですか? 明確にする義務がある。