2

那天看到 13 楼后,我已经痴迷于编写这样的模拟器。

我已经编写了几个具有男性和女性子类的人类基类的模拟。他们有一个名为 runYear 的例程,并且他们进行交互。他们约会、工作、死亡、生孩子、伤心、自杀、离婚等等。

它将运行数千“年”,并根据种子参数变得非常大或死亡。

我的问题是:我真的已经用尽了我能做的事情,我希望从头开始重写它,但我希望有一个向前发展的基础。是否有任何人可以指出我的好书或文章可以帮助我更好地理解我需要如何设计这个或我应该包括哪些关键基础?

在技​​术点上:

  1. 我应该考虑使用面向对象的数据库来存储这些信息吗?
  2. 我打算用 C# 写这个(出于舒适的原因),学习 LISP 会更好吗?
  3. 有没有其他人遇到过这样的开源模拟器我可以从中得到一些想法

任何其他想法/建议都会很棒。

埃里克

4

5 回答 5

2

这种模拟器最复杂的不是如何实现它,而是你如何为你的生物建模,以及它们与彼此和环境的交互。

只需使用您最熟悉的工具即可。一开始我不太可能使用任何类型的数据库,我会使用我的编程语言使用的数据结构,并且可能在需要持久性时将数据结构写入和读取到普通文件。

这里有一些关于这种模拟的链接。它们中的大多数不是人类水平,而是在稍微“较低”的水平上工作,想想昆虫、细菌和 DNA。

关于现有系统的几个示例:

于 2009-05-05T18:37:58.143 回答
1

一群

于 2009-05-05T17:18:16.057 回答
1

首先,您需要从创建 World 类开始。您的 World 类将包含一个世界可以做的所有事情。你会想要合并重力、空气、地面、墙壁等。你可能想从给天空一个限制开始,因为你不希望有人离开你的世界并在记忆中做他自己的事情某处。

设置好 World 后,为自己创建一个 Abstract Human 类。本课程将具备基本的人类能力。您可以指定身高、体重、年龄等内容...

从那里,您继承 Human 类,并创建 Woman 和 Man 类,每个类都有其特殊属性。Woman 类可以有 BreastSize、CookingSkill、SexualPrownessLevel 等... Man 类主要用于跟踪谁是秃头。

从那里,你可以走得更远,分成种族,如亚洲人、印度人等。每个种族也会有自己的特点。

一旦你解决了所有这些问题,你就可以开始研究有趣的东西了。您可以创建对象来破坏他们的生活,例如疾病、宗教、金钱、犯罪、贫困、饥饿、洪水、龙卷风等。

于 2009-05-05T17:50:15.810 回答
1

我认为第一步是首先能够以描述性的方式描述您的问题。

我喜欢把它当作一个System-of-Systems问题。为此,请查看SysML。这样,您可以从高层次开始,然后随着系统的发展增加越来越多的保真度。

于 2009-05-05T18:19:06.770 回答
0

您应该查看离散事件模拟框架(最后有指向列表的链接)。我只知道用于 Python 的SimPy,但还有其他的,开源的和商业的。基本框架也很简单,所以应该是简单的“编程练习”。

于 2009-05-05T18:49:06.993 回答