AI4Finance-Foundation / AI4Finance-Foundation/RLSolver

📝 Generate a fixed graph with a constant random seed

Đang mở
#220 2 bình luận 1 reaction 1 người được giao Được @zhumingpassional nhận Xem trên GitHub
enhancement
Ngôn ngữ chính
Python
Star
169
Fork
36
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

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

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.