ゲーム「Life」のアナログ-Evo

こんにちは、ハラジテリ!



最近、 ゲームLifeに関する記事を読み、今年の5月このオリエンテーションのプロジェクトを書き始めたことを思い出しました。 仕事のルーティンに対する彼への関心はすぐに消えましたが、多くは書かれていました。 そして今、この記事に触発されて、このプロジェクトを埃っぽい棚から取り出し、いくつかの機能を追加しました。これについては後で説明します。

つまり、 私のオプションには次の条件があります。

誰が詳細に興味を持っているのか、私はカットの下で尋ねます!



簡単な説明



元々は生物がそこで進化するように計画されていたため、プログラムEvogit )と呼びました。 しかし、自分で生活行動アルゴリズムを記述し、それをプログラムにロードすることを妨げるものは何もありません。 現時点では( MainWindow :: MainWindow()の )コードを編集するだけで、家畜の読み込みはすぐに実装されます。

EvoはC ++ / Qtで記述されています。 パフォーマンスはLinuxのみテストされましたが、プログラムはQtライブラリでサポートされているすべてのプラットフォームで動作するはずです。

バイナリを取得するには、次のようにします。

git clone git@github.com:icoz/evo.git cd evo qmake make
      
      







そのため、開始すると、いくつかのボタンのあるウィンドウが表示され、フィールドがどのように色で塗りつぶされるかを確認します。





色が何であるかを説明します:



最初に、DSNを使用して生物の遺伝コードが生成されます。 だから魔法はありません。 確かに、後で魔法が登場します ! ランダムに生成されたものがクロールを開始し、お互いを食べ、牧草地になります。

いくつかの簡単なルールがあります。



論理パーティションは次のとおりです。

フィールド(Mapクラス)は、オブジェクトを保存および移動する機能と、一定量の食物を散布する機能を実装します。

ワールド(ワールドクラス)は、生物と外界との相互作用を表します。

動物(Animalクラスのインスタンス)は自動プログラムであり、そのプログラムは「遺伝的」コードです(各記憶には記憶力があり、頭の中で加減する能力があることを思い出します)。 このコードを実行する過程で、本体は他の決定を下します。 世界はこれらの要求を処理します(これはすべて、信号/スロットのシステムを通じて実装されます)。



容認できる行動の場合、生き物はフィットネスパラメータの増加で報われます。 草の吸収については、 フィットネス1増加し、別の生き物を食べることで+10 、生殖で+50増加します。 フィットネス値が高いほど、体は成功します。 実際、このパラメーターは体の活力を表します。 ちなみに、これらのかわいい生き物の生活を複雑にし、新しいものを思い付くために、新しいルールの導入に関するあなたの提案を待っています。



この不名誉はすべてこのように実装されています:



プログラムを最適化して、大量のリソースを消費しないようにするための作業が行われたことに注意したいと思います。 しかし、彼女の仕事の詳細を考慮して、彼女はパーセントを重くロードします。 最も遅いのはフレームのレンダリングであるため、デフォルトでは、レンダリングは100ラウンドごとにのみ行われます。

家畜を保存すると、バイナリコードだけでなく、 * .code拡張子のテキストファイルも作成され 、このコードの復号化が行われます。



他に何をしたいですか



ウィッシュリストは次のとおりです。



近い将来何が行われるか



今後の変更のリストは次のとおりです。



最後に



このメモを書き始めたとき、私はこのプログラムをバックグラウンドで使用していました(4番目の切り株にあり、速度の点で最適化はありませんでした)。 その瞬間、私は生き物のフィットネス= 3441に達しました。 これを行うために、210,000人以上が生存し、死亡し、6,500ラウンドを超えました。

面白いことができる本当に面白い動物を手に入れるには、少なくとも10 ^ 6ラウンドが必要です(私の推定では)。 たぶん誰かがより強力なコンピューター、ねじれ? しかし、もちろん、遺伝的アルゴリズムと初期セットのよりインテリジェントなジェネレーターを実装すると、さらに興味深いものになります。 まあ、生きている人々によって書かれた個人によって生成された動物が追加されています。 これは、将来の世代にとって良いスタートを切るでしょう。

コアi5でプログラムを推進した後、私はすぐに群れになりました。 活力はすでに10,390ユニットに達しました!

これらのかわいい生き物を見るのは面白いです。 あなたは彼らに共感し始めます。

最後に、興味深い「人生」の写真をいくつか紹介します。 目に見えるのは、集団の移動ルート、群れの形成です。







最も深刻な結果は36480です(これは10時間の作業と2 * 10 ^ 6ラウンドの後です):



ダウンロード、実行、視聴!

誰も気にしないで、自分でボットを書いて、誰がより強いかを試してみてください!



それだけです ご清聴ありがとうございました!



バグレポートと新機能の提案を歓迎します。



UPD:突然変異はすでに基本レベルで実装されています。

UPD2: バグトラッカー

UPD3: Windowsバイナリの dtfに感謝

UPD4: Windows用の新しいバイナリを dtfに感謝




All Articles