問題タブ [fitness]

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 に答える
119 参照

class - *メソッドをクラスに渡す

特定の関数 F を最大化し、座標を返す小さなクラスをコーディングしています。たとえば、以下の 1 次元フィットネス関数を最大化する場合、現在次のようにしています。

クラス Metaheutistic のメソッド「Maximize」には、すべての作業を行うアルゴリズムが含まれています。私の問題は、このアルゴリズムがフィットネス関数がどのように見えるかを知らないクラスにあることです。

私は C# が初めてで、ここでベンダーに行ったことがあれば、それを正しく行うためにもう一度やり直しても構わないと思っています。ただし、Solver クラスをフィットネス関数から分離しておく必要があります。

どうもありがとう。*「合格」が探している正しい用語かどうかはわかりません

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

c# - フィットネス関数のボトルネック解決、C#

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

puzzle - Java: フィットネス関数を使用して 15 のパズルを解く

私は現在、フィットネス関数を使用して 15 のパズルを解くプロジェクトに取り組んでいます。使えるフィットネス機能は3種類あり、

  1. 適合度関数 1 = 1 - (置き忘れたタイルの数/タイルの総数);
  2. フィットネス関数 2 = 1- (ゴール位置からのすべての間違ったタイルの距離の合計/64)
  3. フィットネス関数 3= (フィットネス 2+ フィットネス 1 )/2

ソルバーは、パズル ボード全体が解決されるまで (フィットネス関数 = 1)、フィットネス関数 VALUE を改善する可能な動きを検索することを目的としています。ソルバーが失敗した検索ルートを実際のルートと一緒に出力するため、動きを生成しようとしているときにストックされます。たとえば、W、S、W、N、S、N、S、N、S、N、S、N、S、N、S ,N,S,N (逆順) で、NWSW を意味します。ただし、ソルバーは何度か前後に検索し、不要なルートも出力します。再帰で以前に訪れた場所を除外し、失敗した動きではなく有効な動きのみを出力したいと思います。コードは以下で入手できます。

0 投票する
4 に答える
2732 参照

java - Javaフィットネス関数

コードで適応度関数を機能させるのに問題があります。最終的には、バイナリ文字列「10101」だけになります。

私はこれに非常に長い時間を費やし、どこにも行かなかったので、誰かが私を助けてくれれば幸いです。

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

適応度関数は次のとおりです。

プログラムを実行すると、出力は次のようになります。

ArrayListの値に何を入力しても、これ以上何もありません...

私は何時間も頭を悩ませてきましたが、それでもなおです-どんな助けでも大歓迎です!

どうもありがとう。

ミック。

編集:コードが更新され、完全なクラスが一覧表示されます-混乱をお詫びします。

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

java - Javaフィットネス関数が機能しない

ラボの一部として適応度関数があり、それを一連の「重み」(ArrayList重み)に適用したいと考えています。配列を作成し、いくつかの値を格納しました。ランダムなバイナリ文字列(ランダムな値を生成するために最後に「x」が付いています)を作成しました。これにも適応度関数を適用します。しかし、私が抱えている問題は、適応度関数が常に値0を返すことです。ここで何かが足りないのでしょうか。

適応度関数は次のとおりです。

ランダムバイナリ文字列メソッド:

メインメソッド(別のクラス):

実行すると、ランダムなバイナリ文字列は完全に機能しますが、適応度関数は0から変更できません。出力例は次のとおりです。

クラス全体のコーディングを希望する場合は、お知らせください。

本当にありがとうございました。

ミック。

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

genetic-algorithm - 遺伝的アルゴリズム、適応度、突然変異でクロスワードパズルを解く

私は学校のために研究室を作るために一生懸命に努力しています。遺伝的アルゴリズムを使ってクロスワードパズルを解こうとしています。問題はそれがあまり良くないことです(それはまだランダムすぎます)私は今私のプログラムがどのように実装されているかについて簡単に説明しようとします:

パズルを持っている場合(#はブロック、0は空きスペース)

そして、このパズルの解決策の候補となる単語のコレクション。私のDNAは、単に1D配列としてのマトリックスです。

私の最初の個人のセットは、私の単語に含まれる文字のプールからランダムに生成されたDNAを持っています。

roulette-selectionを使用して選択を行います。組み合わせと突然変異の可能性についていくつかのパラメーターがありますが、突然変異が発生した場合、私は常にDNAの25%を変更します。私は文字のプールからランダムな文字でそれを変更します(突然変異はすでに形成された単語を破壊する可能性があるため、これは悪影響を与える可能性があります)

ここで、適応度関数:行列を水平方向と垂直方向の両方でトラバースします。単語が見つかった場合、FITNESS + = word.lengh +1

ある単語の一部である文字列を見つけた場合、FITNESS + = word.length /(puzzle_size * 4)。とにかく、0から1までの値を指定する必要があります。したがって、「tool」から「to」を検索し、XをFITNESSにアドバタイズし、「tool」から「too」を検出した直後に、FITNESSに別のYを追加します。

私の世代は実際には時間の経過とともに改善していません。それらはランダムに表示されます。したがって、1000〜2000のプールで400世代後でも(これらの数値は実際には重要ではありません)、ソリューションに6ワードが必要な場合に、1〜2ワード(2文字または3文字)のソリューションが得られます。

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

optimization - 最大移動距離の最小化

私が抱えている問題の解決策があるかどうかを見つけようとしています。私は X 人と Y のポジションを配置しています。ポジションよりも人数が多い場合もありますが、デフォルトのケースでは X==Y です。一人が移動しなければならない距離が最小になるように人を配置したい。したがって、人が 1 ~ 5 で位置が AE の場合:

私がすでに持っていた些細な実装では、{A2, B3, C4, D5, E1} を割り当てていました。その結果、E は他の誰よりもはるかに遠くまで移動しました。 、つまり、他のすべての人はもう少し先に進みますが、最悪の場合ははるかに小さくなります。

私は現在、距離(昇順)でソートされた各位置を含む、各人の配列を作成しています。次に、最高の位置までの距離が最も長いプレーヤーが最初になるように、すべての人の配列を逆に並べ替えます。私は彼をポジションに割り当て、次にそのポジションを他の各プレイヤーのリストから削除し、逆の並べ替えを繰り返し、すべてのポジションが満たされるまで繰り返します。

これにより妥当な結果が得られますが、非常に非効率的です (各配列から要素を削除し、毎回再ソートする)。

明らかに、問題は人や位置までの距離に対処する必要はありませんが、各リソースが特定のフィットネスでタスクを実行できるようにリソースを割り当てることと言えます。すべてのツールが少し不適切なタスクを実行していることを意味する場合でも、それが理にかなっている場合。

ここでミラーリングしている古典的な最適化の問題があると思われますが、どれがどれかはわかりません。

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

artificial-intelligence - フィットネス関数を定義するにはどうすればよいですか?

私は、選択されたデータのセットを持つプロジェクトに取り組んでおり、各データには異なる属性があります。属性を使用して、選択したシナリオに最適なデータを選択するには、フィットネス関数を使用する必要があります。

ただし、自分のフィットネス関数を定義する方法を説明しているサイトは実際には見つかりません。私が持っているのは、それが遺伝的アルゴリズムの一部であるということだけです。これは私が得た限りです。それで、ここでいくつかの指針を得ることができますか?

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

evolutionary-algorithm - 粒子群の最適化: 候補解の適合性における不確実性/不正確さに対処する

粒子群最適化 (PSO) を使用して、複雑なパラメーター化されたモデルのノイズの多いデータへの適合を最適化したいと考えています。データは時系列の薬品濃度値です。

最適化目的関数内で、濃度時系列プロファイルとモデル予測の間の Bray Curtis 距離 [1] を使用して適合度を測定します (モデル予測は、最適化問題の解候補に対応するパラメーターを使用して生成されます)。

現在、濃度データの不正確さを考慮していません。実際には、濃度は整数値に丸められています。PSO ルーチンおよび/または目的関数が入力データの不正確さを「認識」していれば、PSO とのより良いモデル適合を得ることができると思います。

予測時系列とデータ時系列の最小および最大 Bray Curtis 距離を見つけることができますが、PSO コード内でこれらの値をどのように利用するのが最善かわかりません。

進化的最適化のコンテキスト内で候補ソリューションの適合性を評価する際に、データの不正確さに対処する方法について何か提案はありますか?

二次的な問題は、時系列データが機器とタイミングの両方のエラーの影響を受けることです。両方のタイプのエラーが正規分布しており、標準偏差が不変であると仮定して満足していますが、PSO 最適化の適合性を定量化する際に、この不確実性をどのように処理するのが最善かはわかりません。

[1] http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.braycurtis.html

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

function - フィットネス関数における違反の重み

私は最終年度のプロジェクトに取り組んでおり、時刻表の最適化のための遺伝的アルゴリズムを開発しています。クラスの時間割を表すランダムな染色体を作成しているので、現時点ではかなりうまくいっています。関数フィットネス関数と潜在的な制約を設計しましたが、制約の実際の重み付けにこだわっています。

フィットネス関数として次の関数を使用しています。

1/1 + (Ci*Wci)

Ci が制約 i の違反の量であり、Wci が制約 i の重み付けであるように。

明らかに、ハード制約をソフト制約よりも高く重み付けする必要があります。

以前にこの手法を使用したことがある人はいますか?これらの重み値に推奨される範囲はありますか?