AI4Finance-Foundation / AI4Finance-Foundation/RLSolver

📝 Generate a fixed graph with a constant random seed

オープン
#220 コメント 2 件 リアクション 1 件 担当者 1 名 @zhumingpassional が担当を希望しています GitHub で見る
enhancement
主要言語
Python
スター
169
フォーク
36
PR マージ指標
30日以内にマージされた PR はありません

説明

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

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。