問題タブ [hill-climbing]

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

genetic-algorithm - 検索空間データ

GAをテストするための2Dモデル検索スペースを提供するソースを誰かが知っているかどうか疑問に思っていました. これらのタイプのアルゴリズムを評価するときに通常使用される標準的な検索スペースがたくさんあることを少し前に読んだと思います。

そうでない場合、毎回このデータを自分でランダムに生成するだけですか?

追記:上からも横からも。

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

algorithm - Hill Climbing Algorithm の時間計算量はどれくらいですか?

具体的には、最急上昇ヒル クライミング、ストキャスティクス ヒル クライミング、シミュレーテッド アニーリングです。一般化された時間の複雑さも問題ありません。ありがとう。

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

java - N-Queen Hill Climbing のネイバーを生成する方法

ヒル クライミング アルゴリズムを実装するためのネイバーの生成に問題があります。

ここに私が現在取り組んでいるコードがあります。

私が抱えている問題は、生成する新しいボードごとに最後の移動が保存されることです。隣接する各ボードのステップ サイズを 1 にしたいと考えています。(間違った)出力は次のとおりです。

これが私が望む出力です。

ご覧のとおり、前のステップからの移動が保存されています。誰でも助けることができますか?

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

python - Pythonでヒューリスティックとしてレーベンシュタイン距離を使用して文字列を生成する山登りアルゴリズム?

私はこの電子ブックをフォローしてきましたが、次のようなセルフ チェックの質問の 1 つに行き詰まっています。

セルフチェック

これまでのすべてを本当にカバーするセルフチェックです。無限猿の定理について聞いたことがあるかもしれません。この定理は、サルがタイプライターのキーボードで無作為にキーを無限に打てば、ほぼ確実に特定のテキスト (ウィリアム シェイクスピアの全作品など) をタイプすることを示しています。さて、サルを Python 関数に置き換えたとします。Python 関数がシェイクスピアの 1 文だけを生成するのにどれくらいの時間がかかると思いますか? 狙う文は「イタチのようだと思う」</p>

これをブラウザで実行したくないので、お気に入りの Python IDE を起動してください。これをシミュレートする方法は、アルファベット 26 文字とスペースからランダムな文字を選択して、27 文字の長さの文字列を生成する関数を作成することです。ランダムに生成された文字列を目標と比較して、生成された各文字列をスコアリングする別の関数を作成します。

3 番目の関数は generate と score を繰り返し呼び出し、文字が 100% 正しければ完了です。文字が正しくない場合は、まったく新しい文字列を生成します。プログラムの進行状況を追跡しやすくするために、この 3 番目の関数は、これまでに生成された最良の文字列と 1000 回の試行ごとのスコアを出力する必要があります。

セルフチェックチャレンジ

正しい文字を維持し、これまでのところ最適な文字列の 1 文字のみを変更することで、セルフ チェックでプログラムを改善できるかどうかを確認します。これは、「山登り」アルゴリズムのクラスのアルゴリズムの一種です。つまり、前の結果よりも優れている場合にのみ結果を保持します。

生成された文字列と必要な文字列の間のレーベンシュタイン距離を使用して、この課題の最初の部分を実行するコードをいくつか書きました。

TODOで、その反復と指定されたメソッドまで最適な文字列を使用して、より良い文字列を生成する方法がわかりません。

tl;dr: 特定の文字列を生成するまで、レーベンシュタイン距離をヒューリスティックとして使用するヒル クライミング アルゴリズムを作成するにはどうすればよいですか? プロセスを概説してください。

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

matlab - 7D空間でのヒルクライム

私は 7D 空間 (x=(x1,x2,x3,x4,x5,x6,x7) を意味する) で以下の関数を持っており、matlab で山登りを使用してこの関数の最小点を見つけたいと考えています。

このリンクは便利ですが、Matlab で関数を実装する方法がわかりません。

ここに画像の説明を入力

アップデート:

以下のコードを実装していますが、それが正しいかどうかはよくわかりません。

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

python - プレイフェア ヒルクライム クラック

私は暗号文だけでプレイフェア暗号を解読するためのPythonスクリプトを書いています。まず、約 30 ~ 100 個の復号化キーを生成し、それらを暗号文で実行して、それぞれを有向グラフの頻度でランク付けします。次の「世代」/反復に、最高のスコアを持つものをコピーします。次に、それらは変更され (5x5 グリッド内の文字が入れ替わる)、次の反復に再び追加され、再びランク付けされます。

私は、スクリプトが局所的な最大値を見つけることが多いことに気付きました。これは、同様の分布を与えるキーですが、本当のことではありません。この問題の解決策は、キーの母集団にさらにバリエーションを導入することだと思います (スクリプトの終わりまでに、それらはすべてほぼ同じになります)。

各世代にいくつかの完全にランダムなキーを追加して実装しようとしましたが、ほとんどすぐに削除されます。それを行うより良い方法は何ですか?シミュレートされたアニーリングのような戦術も考えましたが、どれだけ役立つかわかりません。

編集: 要求された暗号文のサンプル (キー: プレイフェアの例)

as el ir ul vi ne uz qk dm kz qe ca qe tb qc pv zb md nv om lo gv qo er qc zg pv vk ov または iw zg ro nz ge ro af yp qe zi lo rk pr ad xl dl ix cl qr rk dq vu sa zb xv qe ho dm dn ok eb xe do bm iz kd de as kv ef kc rd lv om dm vy km ur et xe aq zb xe tx om rt gh rk hc fg mk py dr qo af zs xv nv ac df ad dl yr do bm ef pm zs lo ce yl ai can nv ca fy wi dm ov net tx zb bm kn ul bn ar km uz fo ka ro do gp lo kv dm ml qe zi lo rk prad xl tx zb le nv oc py dr lo cale dx xa mo pr oi yp end dy oc dk zb as kv ix ol pr dr oq pb dr gb eo ak vg xe do df re zb pv nl cr do ya an adiu dm re dm eo qm dm am pu ad xl nl er nv kz qn oq yg df pb uz fo ya ay dk vu lo gd ex ip ya bp up xv yf nv vk pz dm vq vo vk pr kz ro

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

java - for ループの実行後にスタックが上書きされるのはなぜですか?

山登り検索のアルゴリズムを実行していますが、何らかの理由で、ループの最後にあるはずのスタックが、ループが生成した状態の最後の反復で上書きされているようです。

基本的に、このアルゴリズムが行っていることの概要は次のとおりです。

このアルゴリズムは、N クイーン問題を解決するために使用されています。状態クラスの基になるコードはすべて完全に正常に動作します。このアルゴリズムでは、現在の状態のすべての可能な後続状態を反復処理します。次の後続の状態は、neighborState 変数内に格納されます (以下のコードを参照)。状態のコストが現在のコストよりも小さい場合、その新しい低コストの neighborState を neighborNode に追加し、それをスタックに格納します。新しい最小値が検出されると、スタックが消去され、新しい最小最小ノードが挿入されます。

スタックに挿入されているものからの出力がどのように見えるかを確認するために、ループ内でいくつかのテストを行いました。いずれも正しく出力されているようです。ただし、ループの外にいてスタックをチェックすると、スタック内のすべてのノードの状態が、ループから最後に生成された後続の状態に置き換えられます。neighborState が保存されているすべてのノードで、neighborState が更新されるたびに、すべてのノードの neighborState 値も変更されるようです。私はこれを修正する方法を見つけることができないようです。

これをどのように修正できるかについてのアドバイスをいただければ幸いです。

*注意: if ステートメントで始まる for ループの後のコードは、まだ不完全なので無視してください。

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

}

}

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

r - Rで人工ニューラルネットワークのカスタム学習関数を使用する方法はありますか?

(バックプロパゲーションの代わりに) カスタム学習関数を使用して ANN アルゴリズムを実装する方法 (R プログラミング言語のみを使用) はありますか? 私がテストしたすべての R パッケージ (nnet、neuralnet、AMORE) には、重みをトレーニングするための関数を学習するためのオプションがあるようですが、カスタム関数をプラグインするためのオプションが含まれているようには見えません (たとえば、ヒル クライミングなど)。 )。

別の言語よりも R を使用したいので、役立つパッケージを知っている人がいたら教えてください。

ありがとう!

0 投票する
0 に答える
681 参照

random - ランダムミューテーションヒルクライミングの問題

こんにちは、巡回セールスマン問題にランダムミューテーションヒルクライミングを使用する簡単なコードを書こうとしています。私はそのようなツアークラスを作成しました:-

私の RMHC メソッドは次のようになります。

私が抱えている問題は、RMHC で smallChange メソッドを呼び出すと、古いソリューションと新しいソリューションの両方でツアーが変更されるように見えることです。これを 48 サイズのデータ​​セットで数回繰り返し実行したところ、次の出力が得られました。