【发布时间】:2016-04-15 18:46:31
【问题描述】:
我在 Python 中创建了一个离散事件模拟,它接受一组当前保存在数据库表中的输入,并产生也存储在数据库 (SQLite) 中的输出。我已经实现了使用给定的一组输入运行多个复制的能力(因为模拟中有一些随机性)。我现在希望能够使用多组输入运行模拟,而不必在每次运行后手动更改输入。但是我不确定实现这一目标的最佳方法。
我目前的想法是有一个脚本可以创建一个 JSON 文件,其中包含每次运行的输入。例如:
输入数据表(为解释而极度简化):
id name input 1 input 2
1 Entity 1 67 red
2 Entity 2 54 blue
JSON 示例(再次简化以匹配上述输入):
{"simulation inputs":[
{"run 1":
"replications": 100,
"entity 1": "name of entity"
{
"input 1": 67,
"input 2": "red"
}
"entity 2": "a different entity of same class with different values"
{
"input 1": 54,
"input 2": "blue"
}
},
{"run 2":
"replications": 100,
"entity 1": "name of entity"
{
"input 1": 69,
"input 2": "red"
}
"entity 2": "a different entity of same class with different values"
{
"input 1": 54,
"input 2": "blue"
}
},
{"run 3":
"replications": 100,
"entity 1": "name of entity"
{
"input 1": 71,
"input 2": "red"
}
"entity 2": "a different entity of same class with different values"
{
"input 1": 54,
"input 2": "blue"
}
},
]}
根据上面的示例,其中包含三个运行的信息,其中每个运行调整一个输入 - 实体 1 的输入 1。在实际情况下,输入可能会有大量变化1 在配置文件中为每个运行条目。 Python 程序将使用定义的值作为特定运行的输入来遍历 JSON 文件中的列表。输出存储在数据库中。每个实体都是具有不同输入值的同一类的实例。
以上是明智的做法吗?如果没有,还有什么其他方法?如果是,是否有此类功能或类似功能的实现,我可以在任何地方用作起点?
我已经进行了很好的搜索,但可能由于我不熟悉配置文件术语,未能找到合适的答案。
注意:经过编辑以更好地表示将使用的输入数据的类型。
非常感谢。
【问题讨论】:
-
您使用哪个数据库来存储您的输入?您可以从表中获取所有行作为简单字典并对其进行迭代以运行所有模拟。
-
我正在使用 SQLite。我举的例子很简单。我对其进行了编辑,以更好地反映将变化的输入数据,并包含一些输入数据的示例。
-
没有通用的解决方案,编写自定义脚本来修改输入集并整理输出是特定于平台和模型的任务。
标签: python json simulation configuration-files ini