将网络与变量的多值进行比较

时间:2015-08-21 17:36:00

标签: netlogo

我有一个网络,并在netlogo中进行模拟。在我的网络中,我有n个节点,其中包含来自[0.1,2,...,19]的随机数据。
在开始时,一个随机节点变为接收器,并且3个随机节点开始将其数据发送到sink.i声明一个名为gamma的变量。在节点将其数据发送到接收器之后,接收器决定是将该数据存储在其存储器空间中还是不基于gamma.after 0.5s这个过程重复。每次有些节点下沉并想要一些数据。这就是我在网络中分发数据的方式。

毕竟我必须将伽玛从0改为1以确定最佳值。并且每次运行我的代码来绘制something的数量。我的意思是:首先用gamma = 1运行我的代码然后再用gamma = 0.98运行它...

if Entropy <= gamma
[
do something
]

如果我每次更改伽玛时都按下设置按钮,我的网络设置会发生变化,我无法将同一网络与另一个伽玛进行比较。
我如何比较我的网络与多值的gammas?
我的意思是可以保存我的所有进程并再次以相同的方式运行它吗?

2 个答案:

答案 0 :(得分:1)

如果您首先设计一些测试,当您每次按下设置时放置随机数据时,前一个图形与新图形不同,因此您可能需要在每次需要时加载相同的数据测试。

一个想法:

使用节点数据和gamma值创建文本文件。对于4个节点,您可以使用以下内容:

<强> dat1.txt

1 3 2 9
1

<强> dat2.txt

1 3 2 9
0.98

<强> dat3.txt

1 3 2 9
0.96

等等......

您可以使用过程和特定种子生成此文件(请参阅random-numbers),这意味着如果您要生成30个测试(在上面的示例中有30组4个节点),您可以使用需要30种不同的种子。

答案 1 :(得分:1)

您可以使用random-seed始终创建相同的网络,然后使用新种子(使用random-seed new-seed创建和设置)生成随机数并询问订单等以进行处理。使用BehaviorSpace工具可以使用不同的gamma值进行多次运行。

使用此方法可以保证您使用相同的网络。但是,仅仅因为一个特定的伽玛值对于一个网络来说是最好的,并不能使其成为其他网络的最佳选择。因此,您可以创建具有不同种子的多个网络,并让NetLogo选择每个网络(如@David建议的那样),或者您可以简单地允许NetLogo创建不同的网络并运行许多模拟,以便您有一个更强大的答案,适用于&# 39;平均&#39;网络