我有兴趣做一个汽车网络模拟器(车辆网络,就像车辆一样,可以配备无线电,当他们到达射程时,他们可以互相交谈)。我希望能够扩展到1000 s的节点,如果不是更多的话。坦率地说,我对如何使用,甚至是使用哪种语言,或者是否应该使用其他一些软件/代码感到困惑。
我知道,这应该取决于我可能有很多的设计决策,但如果有人能为我指明正确的方向,那就太好了。我计划使用多线程架构,但不确定它是否会增加复杂性或使其更容易。另外,如果我采用多线程架构,您认为go语言会是一个不错的选择吗?
我在Java方面有几年的经验,但没有做过任何大型项目,基本上没有Go方面的经验。
发布于 2011-11-16 03:02:07
大约在1980年,我参加了尼克劳伦斯的离散事件模拟研讨会,他曾经是德州仪器公司的离散事件模拟向导。他为他们节省了数百万美元,而当时一百万美元仍然是真正的钱。
尼克一遍又一遍地敲打我们两件事。
第一个是目的。你想了解些什么?你为什么要做这个模拟?你希望学到什么,你想回答什么问题(S)?如果你的模拟不是为了回答这些问题而设置的,或者如果它是以某种方式来回答的话,你充其量就是在愚弄自己,你可能会伤害你自己或你的客户,非常严重。
第二种是验证。如何显示您的模拟实际上是准确地模拟您想要模拟的?如果您的sim不完全正确,您将得到错误的答案。
验证失败的典型例子是TTAPS的“核冬天”研究。sim的设计者根据火星的数据验证了他们的sim,忘记了地球不像火星,有海洋、海岸线和湖泊效应雪。在他们发表后,有人重新做了这些效果的模拟,发现湖效应雪在大约一年的时间里清除了大气中的灰尘。(类似的事情发生在1800年,也就是没有夏天的“冻死”年。)
我要说的是:在你能说出你想学什么,以及你计划如何验证你的sim之前,编程语言的选择并不是你应该考虑的。
还有一点应该提出来,那就是可伸缩性。在您能够正确地模拟系统中的几个节点,并在小模型上得到所需的答案之前,尝试模拟数千个节点是没有意义的。
发布于 2011-11-16 19:58:57
您还可以增强现有的网络模拟器。OMNET++是一个著名的网络仿真框架。类似地,简单的Google搜索显示了许多像静脉网络与道路交通仿真这样的链接。你可以探索它们,看看哪一个可以很容易地被你扩展。
https://softwareengineering.stackexchange.com/questions/119978
复制相似问题