問題タブ [mutation]

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

objective-c - iOSKVCDRYミューテーション

文字列のディクショナリをJSONフェッチからKVC準拠のNSManagedObjectにマップしようとしていますが、正常に使用できますsetValue: forKey:が、タイプをマップする方法がわかりません。

たとえば、日付をランダムな文字列に設定することはできませんが、Printing description of myDate: asdfsadf 機能しました。

私はいくつかの有用な答えを提供したhttps://stackoverflow.com/a/5345023/828859を見ました。私は入ってすべてのプロパティの検証を作成できます...しかし、すべての日付を検証し、日付があるたびに個別に出力値を設定する必要があるため、それはあまり乾燥していないようです。

使用する前にタイプごとに変更したいsetValue: forKey:のですが、プロパティタイプを区別する方法がわかりません。

私がやりたいこと:

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

implementation - 巡回セールスマンを解決するために GA にミューテーションを適用する

私は、遺伝的アルゴリズム (GA) を使用して巡回セールスマン問題 (TSP) を解決するための小さな学術課題に取り組んでいます。私は、都市とツアーを配列に格納する非常に単純な古典的な表現に従っています。たとえば、10 都市のツアーは 9-1-0-4-3-8-6-5-2-7 のように表すことができます。GA のかなり基本的な知識があるので、TSP にさまざまなタイプのミューテーションを適用するためにどのようなアプローチに従うかについて、少し混乱しています。ルートが route として表され、突然変異率が変数 m_rate で表されているとしましょう。

[1] 単純挿入変異

1-2-3-4-5-6-7-8-9 があるとします。次に、たとえばインデックス 5 のランダムな都市を選択し、2 などのランダムな挿入インデックスを選択すると、突然変異した染色体は 1-2-6-3-4-5-7-8-9 になります。

ここで、突然変異を適用するために私がやっていることは次のとおりです。

つまり、ルート内のすべての都市をループして、突然変異条件 (m_rate>Math.random()) が成立するかどうかを確認します。成立する場合は、そのインデックスで停止し、次を使用せずに挿入ポイントをランダムに選択します。突然変異確率変数。配列の最後に到達しない限り、残りのすべての都市またはインデックスに同じことを適用し続けます。これは正しいアプローチですか?最初のミューテーションを適用したら、ループを停止または中断する必要がありますか? 挿入点の選択に突然変異確率を何らかの形で関与させる必要がありますか? それは私にはあまり意味がないように思えますが。染色体やルートに複数の都市が変異している可能性がある場合、染色体が再変異している可能性はありますか? 言い換えれば、2 番目または 3 番目の突然変異を行って、染色体を最初の形に反転させた場合 (突然変異前) はどうなるでしょうか?

[2] 相互交換突然変異。

染色体のランダムな都市を選択してから、2 つ目のランダムな都市を選択し、2 つを交換します。たとえば、ルート 1-5-2-8-0-9-3-7-4-6。最終的にインデックス 2 とインデックス 7 を選択すると、突然変異した染色体は 1-5-7-8-0-9-3-2-4-6 になります。

上記の挿入突然変異と同様のアプローチに従っています。ルート内のすべての都市をトラバースし、確率条件を確認してから、突然変異率を適用せずに交換するランダムな都市を直接選択します。上記と同じ種類の質問がここに適用されます..

[3] 反転突然変異。

これは最もトリッキーなものです。1-2-3-4-5-6-7-8-9 のような染色体が与えられた場合、インデックス 2 からインデックス 5 への突然変異カットを選択し、そのサブルートを逆にします ==> 1-2-6-5- 4-3-7-8-9。

しかし、これをどのように適用しますか?ルートをループしてから、突然変異率に基づいて都市を選択し、サブルートの長さを決定するために別のインデックスを直接選択しますか? 一度変更して終了しますか?この種の実装では、変異カットが 0-9 または 0-(length-1) になる場合、染色体全体またはルート全体を変異させて全体を反転させることはできますか? この場合、実際の突然変異率の値は? 私はここでちょっと迷っています...

これが長すぎることを前もってお詫びします..しかし、これらの問題に関するコメントをいただければ幸いです. 私は数多くの研究論文を見てきましたが、この種の詳細や詳細にアプローチしたものは多くありません。

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

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

graph - パスファインディングの遺伝的アルゴリズム-クロスオーバーと突然変異

無向グラフ内の最短経路を見つけるために遺伝的アルゴリズムを使用したいと思います。クロスオーバーとミューテーションに関して、これについて2つの質問があります。私はこれと同様の状況でクロスオーバーを実行する方法を研究してきましたが、最も人気のあるアルゴリズムはPMXのようです。これは、子孫を作るために2つの親染色体間で部分的なパスが交換されることを理解しています。私がこれに関して抱えている問題は、ほとんどすべての子孫が無効になる可能性が非常に高いということです。確認してもらえないかと思っていたのですが、間違っていたら訂正して説明してください。

別の、しかし関連するメモについて。これを行う方法についてはアイデアがありましたが、それが良いアイデアかどうかはわかりません。パス内で同じノードを共有し、その時点でクロスオーバーする2つの親を選択するだけで、すべての子孫が有効なままになります。

私の2番目の問題は突然変異です。私はこれをどのように行うことができるかについての一般的な考えを持っています。1つのノードを選択して削除し、別の方法でパスを再リンクするのが賢明でしょうか。

ありがとう :)!

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

c# - GAの実装で2つの数値のクロスオーバーを実行するにはどうすればよいですか?

一言で言えば、私はどのように私は:

  • doubleからビットに行く、
  • 次に、クロスオーバー(1ポイント、2ポイント)を実行します。
  • に戻ってdouble

ルーレットホイールセレクションを開発できます。私がはっきりと見えないのは、2つのダブルを混ぜると「より良い」ダブルが得られるかもしれないということです。それは完全にランダムですか?私doublesと私の「最も弱い」ものの「最も適した」ものが組み合わさった場合、それらは中間点を生み出しませんdoubleか?

精緻化: ポイントからこの曲線までの最短距離

編集1:プログラムをあまり遅くすることなく。

編集2:私はを使用することを検討しましたbyte[]が、それが遺伝的アルゴリズムの部分に反するかどうかはわかりません。

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

r - genalg パッケージの rbga.bin でクロスオーバー レートを設定するにはどうすればよいですか?

私はR、特に遺伝的アルゴリズムの迅速な実装と検索関連の活動を可能にするパッケージgenalgを使用しています。

サンプル コードを実行できます。すべて正常に動作します。著者に感謝します。

それでも、gena​​lg で標準 GA のパラメーター (突然変異率と交差率) を設定する方法に関して、次の質問があります。パッケージのドキュメントでこれらの質問に対する回答を見つけることができませんでした。

次に、関数呼び出しを検討してください

a) rbga.bin でクロスオーバー レートを設定するにはどうすればよいですか?

a.1) a) が不可能な場合、クロスオーバーは rbga に実装されていますか? 実装されている場合、どの程度の確率で適用されますか?

b) ゴールドバーグの本に記載されているように、mutationChance パラメータは単純な GA の「変異率」に対応していますか?

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

c# - nツリーの実装で助けが必要

c#を使用してn-ary種類のデータ構造を実装しようとしています。ツリーにはルートノードと子の配列があり、子配列の各子にも子ノードのセットがあります。私がやろうとしているのは、リーフノードに存在するすべての子に追加する必要がある子配列を追加するときです。私のコードは

メインプログラム

しかし、このコードは無限の再帰呼び出しをもたらします。私は試しましたが、何が悪いのか理解できませんでしたか?私が間違っていることを見つけるのを手伝ってください。 私は画像で問題を説明しました

解決策: あなたの助けを借りて、私はこの問題の解決策を見つけました。根本的な原因を説明すると、同じ問題に直面する可能性のある他の人にも役立つと思います。ノードの子配列を渡すときの問題の主な原因は、値ではなく参照として渡されます。同じ子配列参照が次の再帰呼び出しに渡されないようにするために、コードを少し変更しました。

これが私の修正されたコードです

再度、感謝します :)

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

function - F# 関数で変更可能な値を変更できません

おそらく別のばかげた F# 初心者の質問です...しかし、それでも私を悩ませています

オンラインでこれに対する答えが見つからないようです...間違った用語を検索したせいかもしれませんが、ええ

とにかく私のコードは次のようになります:

Visual Studio はx、それが無効な方法で使用されていることを教えてくれます。変更可能な変数はクロージャーによってキャプチャできません。

何故ですか?そして、それを変異させるにはどうすればよいですか?

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

sql-server - SQL Server でのクラスター化インデックス ミューテーション

SQL Server はクラスター化インデックスに対してどのようにミューテーションを実行しますか?

それは適切に行われているので、アプリケーション レベルで削除/挿入を実行する必要がありますか、それともフードの下で削除/挿入を実行していて、心配する必要はありませんか? これは後者だと読んだのですが、誰か確認できますか?

リンク: http://sqlinthewild.co.za/index.php/2011/06/21/are-all-updates-split-into-delete-insert/