問題タブ [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.
algorithm - 遺伝的アルゴリズムを使用してパス テストに最適な適合度関数を見つける
私は最近遺伝的アルゴリズムを使い始めましたが、それをよりよく理解するために、問題を解決するためにそれを使用することにしました。私は、遺伝的アルゴリズムを使用して、パス テストの質問のテスト ケースを生成することに取り組んでいます。最適なフィットネス関数を選択する方法を除いて、すべてを理解しました。だから、私はいくつかの助けを使うことができました:)
私の問題の概要は次のとおりです。各世代で、100 個のテスト ケースが生成されています。CFG の各パスには、そのパスのテスト ケースの頻度に応じて重みが割り当てられています。たとえば、次の CFG を使用します。
4 つの独立したパスがあります。パスの重みが次のようになっているとしましょう-
パス 1: 10
パス 2: 5
パス 3: 4
パス 4: 5
現在、世代内の各テスト ケースについて、世代全体が持つことができる平均適合度を検討しています。
(10*100 - 4*100)/2 = 300 [100 個のテスト ケースがあるため]
そのため、そのテスト ケースの重み (それがカバーするパスの重み) を 300 で割っています。結果は満足のいくものですが、このロジックには非常に欠陥があります。テストケースの適合度がそれがカバーするパスの重みに正比例するように、より良い適合度関数は、重みをすべてのパスの重みの合計で割ったものになると思います。したがって、この問題については、
w/(10+5+5+4) = w/24
各テストケースの適合度を計算するためのより良いアプローチは何だと思いますか?
w/300
w/24
それとも、まったく異なるアプローチを提案しますか? この問題に対して、より優れたフィットネス関数を生成できますか?
私はあなたの助けに感謝します:)
neural-network - ボールとビームのフィットネス機能
私には解決すべき問題があり、建設的な助けがあれば良いでしょう。
とにかく、Ball-and-Beam の問題を解くためのニューラル ネットワークを作成する遺伝的アルゴリズムを作成する必要があります。私が想像する唯一のフィットネス関数は、いくつかの時間を設定し(3〜10秒など)、各ユニットが船上で生き残るかどうかをテストすることです(フィットネス= t / T; t - 生き残った時間、T - 合計時間)、長い時間がかかります:(。
その遺伝的アルゴリズムは、各隠れ層の重み、トレーニングの係数、およびニューロンの数を生成する必要があります。残りのことはほとんどやっていますが、フィットネスが最大の問題です。
手伝ってくれてありがとう !
artificial-intelligence - ゲームプレイAI、良いボード評価関数を見つける方法は?
ミニマックスと遺伝的アルゴリズムを使用して、ボードの状態をスコアリングするための重みを見つける、かなり単純なゲームをプレイする AI に取り組んでいます。
ゲームは 4x4 tictactoe に似ていますが、1 ターンを費やしてピースを隣接するスペースに移動できます。ピースにはさまざまなサイズがあり、大きなピースは小さなピースを覆うことができます。
4 連続での完成にどれだけ近づいているか、隣接する敵の駒をいくつ上に移動できるかなど、さまざまな要因を調べてボードにスコアを付けたいのですが、これらの要因を具体的に何にすべきかわかりませんなれ。
私のアイデア: 各行について、味方の駒の数、空きスペースの数、および敵の駒の数に基づいてスコア式を作成しますが、値がおそらく勝ったため、重みでそれをスコアリングする単純な式は考えられません線形関数ではありません。
各行について、列内の敵の駒の数に基づいて分割された区分的なスコア式と、味方の数に基づいた式を作成します。したがって、空の列に 1 ピースを配置することは、敵でいっぱいの列に 1 ピースを配置してそれらをブロックするよりも価値がある可能性があり、逆は、すでにブロックされている列に 3 を配置する場合に当てはまります。
私が気づいたいくつかの複雑さ: 3 つのピースが連続しているが、敵の大きなピースの 1 つも列にある場合、ピースの動きを妨げることを除いて、事実上何の価値もありません。
3 つの駒が並んでいて、その列に小さな敵の駒があると、敵の小さな駒に隣接して大きな駒を配置して、その上に移動できれば、ほぼ勝ちです。これは特に検出が難しいようです。これを加味すれば、上記の「隣接する敵の移動可能数」が不要になる可能性もある。
助けてくれてありがとう。進め方がわかりません。
python - Python で scipy.stats のようなものを使用して、分布のように応答するフィットネス関数を作成できますか?
正の値 0→∞ の正規化されたフィットネス関数を作成する必要があります。0→0、1→1、∞→0のように(入力→出力)から実験してみたいと思います。私の数学は少し苦手で、これが難しいことではないことを期待してください。
そのため、関数の出力は 0 に大きく偏っており、最大出力 1 を生成する入力値を変更できる必要があります。
三角分布のような線形関数を作成できますが、入力が区別される最大値を設定する必要があります (その値を超えると、すべてが同じように見えます)。2 つの単純な式を次のようなものとマージすることもできます。 :
これは問題なく動作するはずです。特に、返される実際の値はバイナリ トーナメントで使用されるため、それほど重要ではありません。それでも醜いので、可能であれば scipy などの統計分布を柔軟に使用したいと思います。
fitness - Fitnesse がフィクスチャ コードを見つけられない
「数字が偶数か奇数か」という質問に対して正しい答えが得られるかどうかを確認する簡単なテストを実行しようとしています
FitNesse テスト ケースは次のようになります。
!定義 TEST_SYSTEM {スリム}
パス C:\Users\sseth103\Desktop\FT
!|備品|
|数|結果?|
|2 |偶数 |
|1 |ODD |
|3 |偶数 |
フィクスチャ コードのクラス ファイルは FT フォルダ内にあり、同じフォルダにある別のクラスを呼び出します。
エラーが表示されます-番号[1]のコンストラクターを呼び出せませんでした。インスタンスdecisionTable_1.set2。存在しないなど
誰でもこの問題を解決するのを手伝ってもらえますか?
python - NEAT アルゴリズム ベースのニューラル ネットワークの適合性評価の設計に支援が必要
私は、Python 2.7 でAtari Breakoutクローンを再生することを学習するNEAT アルゴリズムに基づくニューラル ネットワークに取り組んでおり、すべての部分が機能していますが、種の適合性を計算するためのアルゴリズムが改善されれば、進化は大幅に改善される可能性があると思います。 .
ニューラル ネットワークへの入力は次のとおりです。
- パドルの中心の X 座標
- ボールの中心の X 座標
- ボールの中心の Y 座標
- ボールの dx (X 方向の速度)
- ball's dy (Y 方向の速度)
出力は次のとおりです。
- パドルを左に移動
- パドルを右に移動
- パドルを動かさない
種の適合度の計算に使用できるパラメーターは次のとおりです。
breakout_model.score
-int
: 種族がプレイしたゲームの最終スコアbreakout_model.num_times_hit_paddle
-int
: パドルがボールに当たった回数breakout_model.hits_per_life
- : パドルがライフごとint
にボールを打った回数 (リスト形式)。たとえば、最初の要素は最初の生命の値、2 番目の要素は 2 番目の生命の値、というように 4 まで続きます。breakout_model.avg_paddle_offset_from_ball
-decimal
: ボールとパドルの中心との間の X 方向の平均直線距離breakout_model.avg_paddle_offset_from_center
-decimal
: フレームの中心とパドルの中心の間の X 方向の平均直線距離breakout_model.time
-int
: フレームで測定されたゲームの合計時間breakout_model.stale
-boolean
: 陳腐化のためにゲームが人為的に終了されたかどうか (例: ボールがまっすぐ垂直にバウンドしてスタックし、パドルが動かない)
ゲームの最終状態に関するこれらのデータ以外のデータが必要だと思われる場合は、非常に簡単に取得する方法を実装できます。
これは私の現在のフィットネス計算ですが、あまり良くないと思います:
意味的に、フィットネス計算が行うべきだと私が思うことは次のとおりです。
- 明らかに、スコアは全体的なフィットネスに最も大きな影響を与えるはずです。スコアが 0 の場合、フィットネスにわずかに悪影響を与えるのではないでしょうか?
- パドルがライフごとにボールを打つ回数は、ある程度の効果があるはずですが、寄与/重みとしてはそれほど重要ではありません。たとえば、その数値が 0 の場合、そのライフの間、実際にボールを打とうとさえしなかったので、負の効果があるはずです。
- パドルがボールに当たった回数にも何らかの影響があり、その寄与はスコアに基づいている必要があります。たとえば、ボールを何度も打たず、多くのポイントを獲得しなかった場合、それは重大な悪影響を与えるはずです。ボールをあまり打たなかったが、多くのポイントを獲得した場合、それは大きなプラスの効果をもたらすはずです. 全体として、(私が思うに) この値がゲーム スコアに近づくほど、この値がフィットネスに与えるべき寄与/重みは少なくなります。
- フレームの中心とパドルの中心の間の X 方向の平均距離は、基本的にパドルの中央の「静止」位置を促進する必要があります。
- 陳腐化のためにゲームが人為的に終了した場合、これは重大な悪影響を与えるか、フィットネスを自動的に 0.0 にする必要があります。どのケースが良いか分からない
これらすべての値を操作して、全体的なフィットネスに適切に影響を与える方法がわかりません。
ご協力いただきありがとうございます。
matlab - 遺伝的アルゴリズムの目的関数
これは、AI/ML に関する私の最初の取り組みです。
先生から出された次の問題があります。
16 ビット文字列のパターン検索問題を解決するために、バイナリ コード化された染色体を使用して、MATLAB で単純な遺伝的アルゴリズムを設計します。
目的関数は次の式で与えられます。
F(x) =
NoS("010") + 2NoS("0110") + 3NoS("01110") + 4NoS("011110") +
5NoS("0111110") + 6NoS("01111110") + 7NoS("011111110") +
6NoS("0111111110") + 5NoS("01111111110") + 4NoS("011111111110") +
3NoS("0111111111110") + 2NoS("01111111111110") +
NoS("011111111111110")
式がわかりませんでした。
Nos とはどういう意味ですか?
これらのバイナリ文字列に対してどのような操作を実行していますか?
とはF(x)
?
algorithm - 二次方程式を解く遺伝的アルゴリズム
遺伝的アルゴリズムのプロセスを理解するのに問題があります。ある区間で関数を最大化する例を見つけて、理解できたと思いますが、遺伝的アルゴリズムを使用して、たとえば二次方程式を解くにはどうすればよいでしょうか?
4 桁までの解を求めたいとすると、数値をエンコードする適切な表現は何ですか? 各数値を評価するための適合度関数として何を使用できますか?
どんな助けでも大歓迎です