ユーザーがモデルを「巻き戻し」、いくつかのパラメーターを変更し、新しいパラメーターでどのように発展するかを確認できるエージェントベースの言語またはフレームワークを見つける必要があります。基本的には、ユーザーがシミュレーション内でタイムトラベルし、異なるタイムラインを分岐できるようにする ABM です。
そのようなものは存在しますか?
ユーザーがモデルを「巻き戻し」、いくつかのパラメーターを変更し、新しいパラメーターでどのように発展するかを確認できるエージェントベースの言語またはフレームワークを見つける必要があります。基本的には、ユーザーがシミュレーション内でタイムトラベルし、異なるタイムラインを分岐できるようにする ABM です。
そのようなものは存在しますか?
あなたが考えているようなものが最初から存在するかどうかはわかりませんが、通常は固定のランダム シードを使用することで非常によく似たものを実現できます (たとえば、NetLogo プログラミング ガイドの乱数に関するセクションを参照してください)。適切に設計された ABM プラットフォームは、モデル内で何かを変更しない限り、同じシードを使用する場合、毎回同じ結果を常に提供します。あなたの場合、ある時点でいくつかのパラメーターです。
ここで2つのことをする必要があると思います
1) モデルティックごとにエージェントの状態とモデルの状態を保存するメカニズムを開発します。これはフリーズドライ データとして知られています(少なくとも Repast ではこれとして知られています)。
2) 各凍結乾燥状態を二分木のような構造に保ちます。この例では、ルート ノードが「変更されていない」タイムラインになり、パラメータが変更されているため、子ノードはそれぞれ可能な代替になります。
単純なモデルであっても、多くのもっともらしい未来を保持するためのストレージ要件は、管理が必要なものになります。
また、モデルをどのように展示する予定ですか?Repast Simphony の 2D レンダリング エンジンには、何か物足りないところがあり、多くの Java Swing コンポーネントを画面全体に表示しても効果的ではない可能性があります。シミュレーションをレンダリングするためのカスタム ビューの作成に時間をかけたい場合は、Crooksの研究を参照することをお勧めします。特に興味深いのは、疎結合の ABM を扱った彼の論文です。