問題タブ [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.
java - Javaフィットネス関数-スケール
ラボの一部として適応度関数があり、それを一連の「重み」(ArrayList重み)に適用したいと考えています。配列を作成し、いくつかの値を格納しました。ランダムなバイナリ文字列(ランダムな値を生成するために最後に「x」が付いています)を作成しました。これにも適応度関数を適用します。しかし、私が抱えている問題は、適応度関数が常に値0を返すことです。ここで何かが足りないのでしょうか。
適応度関数は次のとおりです。
メインメソッド(別のクラス):
CS2004クラス:
実行すると、ランダムなバイナリ文字列は完全に機能しますが、適応度関数は0から変更できません。出力例は次のとおりです。
本当にありがとうございました。ステファノス。
algorithm - 特定の遺伝的アルゴリズムのコスト関数
私は遺伝的アルゴリズムを作成するタスクを割り当てられています。これは、相互接続の程度を最小限に抑えてコンポーネントを 2 つの機器ラックに割り当てることを目的とする割り当て問題です。
基本的に私がしなければならないことはA
、コンポーネント接続の隣接リストであるマトリックスを読み取ることです。componentと componentcij
間の接続数を表します。毎回対称である必要があります。母集団があり、すべての値は 2D 配列に格納されています。これが私の実装です。i
j
読み込まれた行列A
は隣接行列であり、人口はアイテムをビン化する方法を決定するものです。読み込まれた行列の対応する要素が配置されている場合、ラックはbin0
およびであり、同じ規則が の場合に適用されます。bin1
population[cij] = 0
A
bin0
population[cij] = 1
ここでの問題は、最小量の相互接続を与える母集団行列の行を見つけることです。これは、異なるビン内のコンポーネント間の重みの合計です。
これは、基本ケースのイメージです。
...A
読み込まれたマトリックスが右側にあり、母集団が下に表示され、マトリックス内の要素A
がビニングされる方法が中央に表示されます。まだペナルティを計算できます。これは教授によって与えられた制約です。また、各ビンにいくつの要素があるかを判断することもできますが、これまでの説明と図に示されているようにコストを計算することはできません。まだこれは私のコスト関数です:
アイデアはm
、計算全体と要素のどこにいるかを追跡し、行と列をスキャンして母集団内の接続を探し、接続が見つかったときに、i
交差するエッジの重みの合計としてその接続を反映する必要があることです。 2つのビン。現時点では、これは正しく機能しません。j
cost[i]
neural-network - 遺伝的アルゴリズム: フィットネス機能が正しく機能しない
(mxn) m インスタンスのバイナリ データセットと m >> n の n 個のフィーチャがあります。また、ターゲットの変数またはクラスの属性もあり、これもバイナリです。遺伝的アルゴリズムを使用して特徴選択を行いたい。GA では 0/1 の文字列を使用することにしました。機能が選択されていない場合は 0、機能が選択されている場合は 1 です。ランダムな K セットのビット文字列を生成しました。したがって、これらのビット列の各 K は、可能な機能の選択を表します。フィットネス関数を開発するために、これらの K 個の機能セット (モデル) のそれぞれでニューラル ネットワークをトレーニングし、別の検証セットの精度に基づいて、モデルごとにこのフィットネス関数を作成しました:-
このフィットネス関数は、トレーニングに渡される特徴の数 (featSel) と、ニューラル ネットワークが報告する検証精度との間のトレードオフのようなものです。0.5、0.2、0.8 のようにさまざまな値を tradeoffk に設定します。
GAを10回繰り返しました。各反復は 20 世代にわたって行われ、フィットネス関数がどのように成長するかを確認しようとしました。ただし、フィットネス機能に大きな変化はありません。GA では、一般にフィットネス関数は成長してから安定すると予想されますが、ここではごくわずかしか成長しません。
たとえば、これはこれらの反復の 1 つの出力例です:-
また、ニューラル ネットワークのトレーニングには多くの時間がかかります (20 世代で 2 時間以上)。
matlab - 遺伝的アルゴリズムでクロスオーバーのために何人の親を選択する必要がありますか
私は多くのチュートリアル、論文を読み、遺伝的アルゴリズムの概念を理解しましたが、Matlab で問題を実装するにはいくつかの問題があります。
要約すると、私は持っています:
3 つの遺伝子 [ abc ] を含み、各遺伝子がいくつかの異なる制限によって制約されている染色体。
最適解を見つけるために評価する目的関数
私がしたこと:
a、b、c の生成されたランダム値、たとえば 20 個の母集団。すなわち
[a1 b1 c1] [a2 b2 c2]…..[a20 b20 c20]各解で、目的関数を評価し、解を最良のものから最悪のものまでランク付けしました。
私が直面した困難:
では、なぜ交叉と突然変異を行う必要があるのでしょうか。私が見つけた最善の解決策は十分ではありませんか?
クロスオーバー (乱数の生成、確率など) の概念は知っていますが、クロスオーバーまたは突然変異を行うために、どの親とその数が選択されるのでしょうか?
20 個のソリューション全体 (親) に対してクロスオーバーを行うべきですか、それとも 2 つだけに対して行うべきですか?
selenium - (FitNesse、Xebium、Selenium IDE) Xebium 形式を使用してラベルをクリックする方法は?
私はの非常に新しいですXebium
。
使えない
ラベルなのでチェックボックスをクリックすると、idが非表示のように見えます。それで、ラベルからクリックする方法はありますか?
提案ありがとう :)
algorithm - 遺伝的アルゴリズムによるバックパック (ナップザック)。フィットネス機能にペナルティを追加する方法
ga (matlab 最適化ツール) を使用して、バックパックの問題を解決します。ハードコーディングされた重み値配列を使用して、単純なフィットネス関数を作成しました。
すべてが正常に動作します。問題は、バックパックに収まらない染色体にペナルティを適用する方法です。私はこれを見つけました:
バックパックの問題の場合、ペナルティは、制限を超える重量に重量比に対する可能な最大値を掛けることによって計算できます。
K = max(vi / wi ) + c ペナルティ = K * max[∑(wx )−W;0]
しかし、この式を正しく実装する方法がわかりません。私はもう試した:
この方法では、2 つの関数間で最適化の結果に違いがまったくないため、何か間違ったことをしたと思います。誰かがここで私を助けてくれることを願っています。
neural-network - 倒立振子のフィットネス
倒立振子を解くために使用されるフィットネス関数は何ですか?
遺伝的アルゴリズムでニューラルネットワークを進化させています。そして、私は各個人をどのように評価するかわかりません。
振り子の角度を最小化し、評価時間 (10 秒) の最後に移動距離を最大化しようとしましたが、うまくいきません。
ニューラル ネットワークの入力は、カートの速度、カートの位置、振り子の角速度、時刻 (t) での振り子の角度です。出力は、時間 (t+1) に加えられた力です。
前もって感謝します。