3

人工生命に関するかなりの数の記事 (私が非常に興味深いと思うテーマ) と SO に関するいくつかの質問を読んだ後、私は (非常に、非常に、非常に) 単純なシミュレーターを設計するというアイデアをいじり始めました。グラフィックスも必要ありません。質問を見落としている場合は、お気軽に指摘してください。

私が言ったように、これはシムズ レベルのシミュレーションではありません。「許容できるフリーウェア」レベルに到達するのはかろうじてだと思います。これは単なる学習演習であり、休憩中にスキルを維持するためのものです。基本的な前提は、一般的な人が作成されることです。名前、身長などはありません (私が言ったように、単純です)、それが受け取る唯一の実際のものは、「関連付け」と一般的な「使用」、「ピックアップ」、および「ルック」能力のリストです。

私の最初の質問は、協会に関するものです。そのようなことを処理する効率的な方法として、SOは何を推奨していますか? 私はマルチマップを考えていました.キーの比較的簡単な設定はそれが望むもの(食べ物、食事、休息など)であり、他のビット(申し訳ありませんが、私の心は失われました)はその必要性に関連付けるものです.

たとえば、冷蔵庫があるとします。冷蔵庫には食品が入っています (単なる一般的な基本オブジェクト)。最初は冷蔵庫と食べ物を関連付けませんが、食べ物と空腹を関連付けます。そのため、空腹が増すと、勝手に食べ物を探し始めます。手の届くところに食べ物がない場合、オブジェクトを「使用」して食べ物を見つけます。食べ物との関連性は知られていないので、物事を無頓着に使用します (おそらく、最も近いオブジェクトを探して展開します)。冷蔵庫を使用/開くと、冷蔵庫に食品が入っていることを関連付けます (「食品、冷蔵庫」のペアを挿入します)。

今、私はこれが見た目よりもはるかに複雑になることを認識しており、それを打ち出す準備ができています. 問題は、マルチマップが (おそらく) 指数関数的に拡大する関連リストに適しているかどうかです。そうでない場合は、どうなりますか?

2 番目の質問は、おそらくはるかに簡単です。簡単に言えば、一般的なオブジェクト/アイテム インターフェイスは、ほとんどのアイテムに適していますか? 言い換えれば、一般的な「使用」インターフェースは、私が意図したものに対して機能しますか? 私はこれをうまく説明しているとは思わない。

とにかく、どんなコメントでも大歓迎です。

4

4 に答える 4

2

これを本格的な開発プロジェクトとして行っている場合は、Java リフレクションと同等のものを使用することをお勧めします (選択した言語に置き換えてください)。最初の取り組みとしておもちゃのプロジェクトを実行したい場合は、次の論理的根拠に従って、少なくとも独自の単純なリフレクションを展開することをお勧めします。

環境内の各成果物は、特定の機能を提供します。その事実の単純なモデルは、仮想キャラクターが遭遇する各オブジェクトに適用可能な「動詞」を尋ねることです (そのオブジェクトの現在の状態への依存の可能性を含む)。たとえば、キャラクターは冷蔵庫、シリアルの箱、本などを「閉じた」状態で「開く」ことができます。本が開かれると、あなたのキャラクターはそれを読んだり閉じたりすることができます。冷蔵庫が開くと、キャラクターは冷蔵庫を「覗き込み」、目に見える内容のリストを取得したり、冷蔵庫から物を取り出したり、物を入れたりすることができます。

重要なのは、典型的な状況では、キャラクターが周りを見回して何が見えるかを確認したり、オブジェクトを照会して現在の状態やそのオブジェクトで何ができるかを判断したりすることです (つまり、「状態」と「できること」など)。 " はすべてのオブジェクトに適用できる一般的な動詞です)、現在の状態、オブジェクトの状態、およびそのオブジェクトの動詞リストに関する知識を使用して、さまざまなことを試みます。

一連の正と負のフィードバックを実装することで、時間の経過とともに、キャラクターはどのような状況でさまざまな行動をとるべきか、またはすべきでないかを「学習」できます。(もちろん、ユーザーにフィードバックの提供に参加するよう求めることで、このシミュレーションをインタラクティブにすることもできます。)

上記は単なるスケッチですが、おそらくいくつかの興味深いアイデアを試すことができます。楽しむ!;-)

于 2008-12-06T19:49:04.923 に答える
1

最初の質問へ:

私の理解では、あなたには1対多の関係があります。そうです、マルチマップは私には適切なようです。

2番目の質問へ:

はい、オブジェクトの汎用インターフェースが適切だと思います。おそらく、 RESTに似たものを使用して、オブジェクトの状態を操作します。

于 2008-12-06T07:12:47.257 に答える
1

しばらく前に、 The Noble Ape Simulationの開発者とのポッドキャストを聞きました。これは、ソース コードにアクセスしたり、バイナリをダウンロードしたりできるため、概念的にもコード的にも興味深いかもしれません。

ポッドキャストはFLOSS Weekly 31で、Randal Schwartz と Leo Laporte が出演しました。

于 2008-12-06T22:14:32.897 に答える
-1

lisp(sbcl)のある生活:)

于 2008-12-06T07:22:40.780 に答える