AI4Finance-Foundation / AI4Finance-Foundation/RLSolver

📝 Generate a fixed graph with a constant random seed

Abierto
#220 2 comentarios 1 reacción 1 asignado Reclamado por @zhumingpassional Ver en GitHub
enhancement
Lenguaje dominante
Python
Estrellas
169
Forks
36
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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() # 恢复随机种子的默认设置
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.