AI4Finance-Foundation / AI4Finance-Foundation/RLSolver

📝 Generate a fixed graph with a constant random seed

Offen
#220 2 Kommentare 1 Reaktion 1 zugewiesene Person Beansprucht von @zhumingpassional Auf GitHub ansehen
enhancement
Vorherrschende Sprache
Python
Sterne
169
Forks
36
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Generate a fixed undirected graph with a constant random seed
固定随机种子,生成固定的无向图

固定完随机种子之后,算法内部会生成固定的伪随机数,
随机生成无向图的函数 `generate_graph()`,会“消耗”这些伪随机数

下面的代码,可以在指定无向图的节点数量`num_nodes`,图的生成方式`g_type` 以及 图的序号`valid_i`,直接用代码生成固定的图。无论使用什么设备。

我建议使用方案1,避免储存很多表示无向图的txt文件(不用担心文件丢失)。只要指定以下三个信息,就能直接生成无向图,对于这样的 `graph_name = 'powerlaw_100_ID042'`,可以用函数直接生成唯一的无向图 :
- 无向图的节点数量`num_nodes=100`
- 图的生成方式`g_type=‘powerlaw’`
- 图的序号`valid_i=42`

备注:在生成300个节点的图,我们用的是方案3。在2023-08-17日之后才改成方案1

---

方案1:将图的序号`valid_i` 作为 random seed 的序号,**算力消耗最小,要换随机种子**
```
import random
for valid_i in range(6):
random.seed(valid_i)
graph, num_nodes, num_edges = generate_graph(num_nodes=num_nodes, g_type=g_type)
random.seed() # 恢复随机种子的默认设置
```

方案2:固定随机种子后,消耗定量的随机数值,介于方案1与方案2之间。
```
import random
for valid_i in range(6):
random.seed(0)
[random.random() for _ in range(valid_i * num_nodes)]
graph, num_nodes, num_edges = graph, num_nodes, num_edges = generate_graph(num_nodes=num_nodes, g_type=g_type)
random.seed() # 恢复随机种子的默认设置
```

方案3:固定随机种子后,直接调用生成函数,**自动消耗定量的随机数值,在 `valid_i` 很大的时候消耗较多算力**
```
import random
for valid_i in range(6):
random.seed(0)
graph_tuples = [generate_graph(num_nodes=num_nodes, g_type=g_type) for _ in range(valid_i + 1)]
graph, num_nodes, num_edges = graph_tuples[-1]
random.seed() # 恢复随机种子的默认设置
```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.