├── Dec_MAPPO
├── .idea
│ ├── .gitignore
│ ├── deployment.xml
│ ├── inspectionProfiles
│ │ ├── Project_Default.xml
│ │ └── profiles_settings.xml
│ ├── misc.xml
│ ├── modules.xml
│ └── singleThread_dec_ppo_flowtype.iml
├── Abilene.gml
├── Claranet.gml
├── Gridnet.gml
├── NSF.gml
├── ppo.py
├── router.py
├── routingEnv.py
└── switch.py
├── ECMP
├── .idea
│ ├── .gitignore
│ ├── ECMP.iml
│ ├── deployment.xml
│ ├── inspectionProfiles
│ │ ├── Project_Default.xml
│ │ └── profiles_settings.xml
│ ├── misc.xml
│ └── modules.xml
├── Abilene.gml
├── Claranet.gml
├── ECMP.py
├── Gridnet.gml
├── NSF.gml
├── router.py
├── routingEnv.py
└── switch.py
├── LB
├── .idea
│ ├── .gitignore
│ ├── LB.iml
│ ├── deployment.xml
│ ├── inspectionProfiles
│ │ ├── Project_Default.xml
│ │ └── profiles_settings.xml
│ ├── misc.xml
│ └── modules.xml
├── Abilene.gml
├── Claranet.gml
├── Gridnet.gml
├── LB.py
├── NSF.gml
├── router.py
├── routingEnv.py
└── switch.py
├── MA-TD3
├── .idea
│ ├── .gitignore
│ ├── deployment.xml
│ ├── inspectionProfiles
│ │ ├── Project_Default.xml
│ │ └── profiles_settings.xml
│ ├── misc.xml
│ ├── modules.xml
│ └── singleThread_TD3_flowtype.iml
├── Abilene.gml
├── Claranet.gml
├── Gridnet.gml
├── NSF.gml
├── TD3.py
├── router.py
├── routingEnv.py
└── switch.py
├── Ours
├── .idea
│ ├── .gitignore
│ ├── .name
│ ├── deployment.xml
│ ├── inspectionProfiles
│ │ └── profiles_settings.xml
│ ├── misc.xml
│ ├── modules.xml
│ └── singleThread_pponoTraj_flowtype.iml
├── Abilene.gml
├── Claranet.gml
├── Gridnet.gml
├── NSF.gml
├── ppo.py
├── ppo_deploy.py
├── router.py
├── routingEnv.py
└── switch.py
├── README.md
└── RoundRobin
├── .idea
├── .gitignore
├── RoundRobin.iml
├── deployment.xml
├── inspectionProfiles
│ ├── Project_Default.xml
│ └── profiles_settings.xml
├── misc.xml
└── modules.xml
├── Abilene.gml
├── Claranet.gml
├── Gridnet.gml
├── NSF.gml
├── RoundRobin.py
├── router.py
├── routingEnv.py
└── switch.py
/Dec_MAPPO/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/Dec_MAPPO/.idea/deployment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/Dec_MAPPO/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/Dec_MAPPO/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Dec_MAPPO/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Dec_MAPPO/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Dec_MAPPO/.idea/singleThread_dec_ppo_flowtype.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Dec_MAPPO/Abilene.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "3/02/11"
3 | GeoLocation "US"
4 | GeoExtent "Country"
5 | Network "Abilene"
6 | Provenance "Primary"
7 | Access 0
8 | Source "http://www.internet2.edu/pubs/200502-IS-AN.pdf"
9 | Version "1.0"
10 | Type "REN"
11 | DateType "Historic"
12 | Backbone 1
13 | Commercial 0
14 | label "Abilene"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 0
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "02"
21 | LastAccess "3/02/11"
22 | Layer "IP"
23 | Creator "Topology Zoo Toolset"
24 | Developed 0
25 | Transit 0
26 | NetworkDate "2005_02"
27 | DateYear "2005"
28 | LastProcessed "2011_09_01"
29 | Testbed 0
30 | node [
31 | id 0
32 | label "New York"
33 | Country "United States"
34 | Longitude -74.00597
35 | Internal 1
36 | Latitude 40.71427
37 | ]
38 | node [
39 | id 1
40 | label "Chicago"
41 | Country "United States"
42 | Longitude -87.65005
43 | Internal 1
44 | Latitude 41.85003
45 | ]
46 | node [
47 | id 2
48 | label "Washington DC"
49 | Country "United States"
50 | Longitude -77.03637
51 | Internal 1
52 | Latitude 38.89511
53 | ]
54 | node [
55 | id 3
56 | label "Seattle"
57 | Country "United States"
58 | Longitude -122.33207
59 | Internal 1
60 | Latitude 47.60621
61 | ]
62 | node [
63 | id 4
64 | label "Sunnyvale"
65 | Country "United States"
66 | Longitude -122.03635
67 | Internal 1
68 | Latitude 37.36883
69 | ]
70 | node [
71 | id 5
72 | label "Los Angeles"
73 | Country "United States"
74 | Longitude -118.24368
75 | Internal 1
76 | Latitude 34.05223
77 | ]
78 | node [
79 | id 6
80 | label "Denver"
81 | Country "United States"
82 | Longitude -104.9847
83 | Internal 1
84 | Latitude 39.73915
85 | ]
86 | node [
87 | id 7
88 | label "Kansas City"
89 | Country "United States"
90 | Longitude -94.62746
91 | Internal 1
92 | Latitude 39.11417
93 | ]
94 | node [
95 | id 8
96 | label "Houston"
97 | Country "United States"
98 | Longitude -95.36327
99 | Internal 1
100 | Latitude 29.76328
101 | ]
102 | node [
103 | id 9
104 | label "Atlanta"
105 | Country "United States"
106 | Longitude -84.38798
107 | Internal 1
108 | Latitude 33.749
109 | ]
110 | node [
111 | id 10
112 | label "Indianapolis"
113 | Country "United States"
114 | Longitude -86.15804
115 | Internal 1
116 | Latitude 39.76838
117 | ]
118 | edge [
119 | source 0
120 | target 1
121 | LinkType "OC-192"
122 | LinkLabel "OC-192c"
123 | LinkNote "c"
124 | ]
125 | edge [
126 | source 0
127 | target 2
128 | LinkType "OC-192"
129 | LinkLabel "OC-192c"
130 | LinkNote "c"
131 | ]
132 | edge [
133 | source 1
134 | target 10
135 | LinkType "OC-192"
136 | LinkLabel "OC-192c"
137 | LinkNote "c"
138 | ]
139 | edge [
140 | source 2
141 | target 9
142 | LinkType "OC-192"
143 | LinkLabel "OC-192c"
144 | LinkNote "c"
145 | ]
146 | edge [
147 | source 3
148 | target 4
149 | LinkType "OC-192"
150 | LinkLabel "OC-192c"
151 | LinkNote "c"
152 | ]
153 | edge [
154 | source 3
155 | target 6
156 | LinkType "OC-192"
157 | LinkLabel "OC-192c"
158 | LinkNote "c"
159 | ]
160 | edge [
161 | source 4
162 | target 5
163 | LinkType "OC-192"
164 | LinkLabel "OC-192c"
165 | LinkNote "c"
166 | ]
167 | edge [
168 | source 4
169 | target 6
170 | LinkType "OC-192"
171 | LinkLabel "OC-192c"
172 | LinkNote "c"
173 | ]
174 | edge [
175 | source 5
176 | target 8
177 | LinkType "OC-192"
178 | LinkLabel "OC-192c"
179 | LinkNote "c"
180 | ]
181 | edge [
182 | source 6
183 | target 7
184 | LinkType "OC-192"
185 | LinkLabel "OC-192c"
186 | LinkNote "c"
187 | ]
188 | edge [
189 | source 7
190 | target 8
191 | LinkType "OC-192"
192 | LinkLabel "OC-192c"
193 | LinkNote "c"
194 | ]
195 | edge [
196 | source 7
197 | target 10
198 | LinkType "OC-192"
199 | LinkLabel "OC-192c"
200 | LinkNote "c"
201 | ]
202 | edge [
203 | source 8
204 | target 9
205 | LinkType "OC-192"
206 | LinkLabel "OC-192c"
207 | LinkNote "c"
208 | ]
209 | edge [
210 | source 9
211 | target 10
212 | LinkType "OC-192"
213 | LinkLabel "OC-192c"
214 | LinkNote "c"
215 | ]
216 | ]
217 |
--------------------------------------------------------------------------------
/Dec_MAPPO/Claranet.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "19/10/10"
3 | GeoLocation "Europe"
4 | GeoExtent "Continent"
5 | Network "Claranet"
6 | Provenance "Primary"
7 | Note "Technically, Access is provided by Claranet SOHO, a division of Claranet."
8 | Source "http://noc.eu.clara.net/"
9 | Version "1.0"
10 | Type "COM"
11 | DateType "Dynamic"
12 | Backbone 1
13 | Commercial 0
14 | label "Claranet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "08"
21 | LastAccess "3/08/10"
22 | Access 1
23 | Layer "IP"
24 | Creator "Topology Zoo Toolset"
25 | Developed 0
26 | Transit 1
27 | NetworkDate "2010_08"
28 | DateYear "2010"
29 | LastProcessed "2011_09_01"
30 | Testbed 0
31 | node [
32 | id 0
33 | label "Faro"
34 | Country "Portugal"
35 | Longitude -7.93333
36 | Internal 1
37 | Latitude 37.01667
38 | ]
39 | node [
40 | id 1
41 | label "Madrid"
42 | Country "Spain"
43 | Longitude -3.70256
44 | Internal 1
45 | Latitude 40.4165
46 | ]
47 | node [
48 | id 2
49 | label "Porto"
50 | Country "Portugal"
51 | Longitude -8.61667
52 | Internal 1
53 | Latitude 41.15
54 | ]
55 | node [
56 | id 3
57 | label "Lisbon"
58 | Country "Portugal"
59 | Longitude -9.13333
60 | Internal 1
61 | Latitude 38.71667
62 | ]
63 | node [
64 | id 4
65 | label "Barcelona"
66 | Country "Spain"
67 | Longitude 2.15899
68 | Internal 1
69 | Latitude 41.38879
70 | ]
71 | node [
72 | id 5
73 | label "Manchester"
74 | Country "United Kingdom"
75 | Longitude -2.23743
76 | Internal 1
77 | Latitude 53.48095
78 | ]
79 | node [
80 | id 6
81 | label "New York"
82 | Country "United Kingdom"
83 | Longitude -0.14008
84 | Internal 1
85 | Latitude 53.07897
86 | ]
87 | node [
88 | id 7
89 | label "Amsterdam"
90 | Country "Netherlands"
91 | Longitude 4.88969
92 | Internal 1
93 | Latitude 52.37403
94 | ]
95 | node [
96 | id 8
97 | label "Eindhoven"
98 | Country "Netherlands"
99 | Longitude 5.47778
100 | Internal 1
101 | Latitude 51.44083
102 | ]
103 | node [
104 | id 9
105 | label "Berlin"
106 | Country "Germany"
107 | Longitude 13.41053
108 | Internal 1
109 | Latitude 52.52437
110 | ]
111 | node [
112 | id 10
113 | label "Frankfurt"
114 | Country "Germany"
115 | Longitude 8.68333
116 | Internal 1
117 | Latitude 50.11667
118 | ]
119 | node [
120 | id 11
121 | label "Munich"
122 | Country "Germany"
123 | Longitude 11.57549
124 | Internal 1
125 | Latitude 48.13743
126 | ]
127 | node [
128 | id 12
129 | label "Paris"
130 | Country "France"
131 | Longitude 2.3488
132 | Internal 1
133 | Latitude 48.85341
134 | ]
135 | node [
136 | id 13
137 | label "Rennes"
138 | Country "France"
139 | Longitude -1.68333
140 | Internal 1
141 | Latitude 48.08333
142 | ]
143 | node [
144 | id 14
145 | label "London"
146 | Country "United Kingdom"
147 | Longitude -0.12574
148 | Internal 1
149 | Latitude 51.50853
150 | ]
151 | edge [
152 | source 0
153 | target 3
154 | id "e15"
155 | ]
156 | edge [
157 | source 1
158 | target 3
159 | id "e16"
160 | ]
161 | edge [
162 | source 1
163 | target 4
164 | id "e17"
165 | ]
166 | edge [
167 | source 2
168 | target 3
169 | id "e14"
170 | ]
171 | edge [
172 | source 3
173 | target 14
174 | id "e13"
175 | ]
176 | edge [
177 | source 4
178 | target 12
179 | id "e8"
180 | ]
181 | edge [
182 | source 5
183 | target 14
184 | id "e11"
185 | ]
186 | edge [
187 | source 6
188 | target 14
189 | id "e12"
190 | ]
191 | edge [
192 | source 7
193 | target 8
194 | id "e0"
195 | ]
196 | edge [
197 | source 7
198 | target 10
199 | id "e1"
200 | ]
201 | edge [
202 | source 7
203 | target 14
204 | id "e2"
205 | ]
206 | edge [
207 | source 9
208 | target 10
209 | id "e3"
210 | ]
211 | edge [
212 | source 9
213 | target 11
214 | id "e4"
215 | ]
216 | edge [
217 | source 10
218 | target 11
219 | id "e5"
220 | ]
221 | edge [
222 | source 10
223 | target 12
224 | id "e6"
225 | ]
226 | edge [
227 | source 10
228 | target 14
229 | id "e7"
230 | ]
231 | edge [
232 | source 12
233 | target 13
234 | id "e9"
235 | ]
236 | edge [
237 | source 12
238 | target 14
239 | id "e10"
240 | ]
241 | ]
242 |
--------------------------------------------------------------------------------
/Dec_MAPPO/Gridnet.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "14/01/11"
3 | GeoLocation "USA"
4 | GeoExtent "Country"
5 | Network "GridNet"
6 | Provenance "Secondary"
7 | Note "Owned by WorldCom - public data net. http://books.google.com.au/books?id=pw4EAAAAMBAJ&pg=PA24&lpg=PA24&dq=GridNet+Network&source=bl&ots=QrtyD7bAeG&sig=46WUmRkmTyaiQFcJ2IBv3KclZa8&hl=en&ei=SQTaTa2JCo7WtQOzoKWODA&sa=X&oi=book_result&ct=result&resnum=9&ved=0CFIQ6AEwCA#v=onepage&q=GridNet%20Network&f=false"
8 | Source "http://www.nthelp.com/images/gridnet.jpg"
9 | Version "1.0"
10 | Type "COM"
11 | DateType "Current"
12 | Backbone 1
13 | Commercial 0
14 | label "Gridnet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "01"
21 | LastAccess "14/01/11"
22 | Access 1
23 | Layer "IP"
24 | Creator "Topology Zoo Toolset"
25 | Developed 1
26 | Transit 0
27 | NetworkDate "2011_01"
28 | DateYear "2011"
29 | LastProcessed "2011_09_01"
30 | Testbed 0
31 | node [
32 | id 0
33 | label "Houston"
34 | Country "United States"
35 | Longitude -95.36327
36 | Internal 1
37 | Latitude 29.76328
38 | ]
39 | node [
40 | id 1
41 | label "San Francisco"
42 | Country "United States"
43 | Longitude -122.41942
44 | Internal 1
45 | Latitude 37.77493
46 | ]
47 | node [
48 | id 2
49 | label "Los Angeles"
50 | Country "United States"
51 | Longitude -118.24368
52 | Internal 1
53 | Latitude 34.05223
54 | ]
55 | node [
56 | id 3
57 | label "New York"
58 | Country "United States"
59 | Longitude -74.00597
60 | Internal 1
61 | Latitude 40.71427
62 | ]
63 | node [
64 | id 4
65 | label "Newark"
66 | Country "United States"
67 | Longitude -74.17237
68 | Internal 1
69 | Latitude 40.73566
70 | ]
71 | node [
72 | id 5
73 | label "Washington, DC"
74 | Country "United States"
75 | Longitude -77.03637
76 | Internal 1
77 | Latitude 38.89511
78 | ]
79 | node [
80 | id 6
81 | label "Atlanta"
82 | Country "United States"
83 | Longitude -84.38798
84 | Internal 1
85 | Latitude 33.749
86 | ]
87 | node [
88 | id 7
89 | label "Dallas"
90 | Country "United States"
91 | Longitude -96.80667
92 | Internal 1
93 | Latitude 32.78306
94 | ]
95 | node [
96 | id 8
97 | label "Miami"
98 | Country "United States"
99 | Longitude -80.19366
100 | Internal 1
101 | Latitude 25.77427
102 | ]
103 | edge [
104 | source 0
105 | target 8
106 | LinkType "DS-3"
107 | LinkLabel "45 Mbps DS-3"
108 | LinkNote "45 Mbps "
109 | ]
110 | edge [
111 | source 0
112 | target 2
113 | LinkType "DS-3"
114 | LinkLabel "45 Mbps DS-3"
115 | LinkNote "45 Mbps "
116 | ]
117 | edge [
118 | source 0
119 | target 3
120 | LinkType "DS-3"
121 | LinkLabel "45 Mbps DS-3"
122 | LinkNote "45 Mbps "
123 | ]
124 | edge [
125 | source 0
126 | target 7
127 | LinkType "DS-3"
128 | LinkLabel "45 Mbps DS-3"
129 | LinkNote "45 Mbps "
130 | ]
131 | edge [
132 | source 1
133 | target 2
134 | LinkType "DS-3"
135 | LinkLabel "45 Mbps DS-3"
136 | LinkNote "45 Mbps "
137 | ]
138 | edge [
139 | source 1
140 | target 4
141 | LinkType "DS-3"
142 | LinkLabel "45 Mbps DS-3"
143 | LinkNote "45 Mbps "
144 | ]
145 | edge [
146 | source 1
147 | target 5
148 | LinkType "DS-3"
149 | LinkLabel "45 Mbps DS-3"
150 | LinkNote "45 Mbps "
151 | ]
152 | edge [
153 | source 1
154 | target 6
155 | LinkType "DS-3"
156 | LinkLabel "45 Mbps DS-3"
157 | LinkNote "45 Mbps "
158 | ]
159 | edge [
160 | source 1
161 | target 7
162 | LinkType "DS-3"
163 | LinkLabel "45 Mbps DS-3"
164 | LinkNote "45 Mbps "
165 | ]
166 | edge [
167 | source 2
168 | target 3
169 | LinkType "DS-3"
170 | LinkLabel "45 Mbps DS-3"
171 | LinkNote "45 Mbps "
172 | ]
173 | edge [
174 | source 2
175 | target 8
176 | LinkType "DS-3"
177 | LinkLabel "45 Mbps DS-3"
178 | LinkNote "45 Mbps "
179 | ]
180 | edge [
181 | source 3
182 | target 8
183 | LinkType "DS-3"
184 | LinkLabel "45 Mbps DS-3"
185 | LinkNote "45 Mbps "
186 | ]
187 | edge [
188 | source 3
189 | target 4
190 | LinkType "DS-3"
191 | LinkLabel "45 Mbps DS-3"
192 | LinkNote "45 Mbps "
193 | ]
194 | edge [
195 | source 4
196 | target 5
197 | LinkType "DS-3"
198 | LinkLabel "45 Mbps DS-3"
199 | LinkNote "45 Mbps "
200 | ]
201 | edge [
202 | source 4
203 | target 6
204 | LinkType "DS-3"
205 | LinkLabel "45 Mbps DS-3"
206 | LinkNote "45 Mbps "
207 | ]
208 | edge [
209 | source 4
210 | target 7
211 | LinkType "DS-3"
212 | LinkLabel "45 Mbps DS-3"
213 | LinkNote "45 Mbps "
214 | ]
215 | edge [
216 | source 5
217 | target 6
218 | LinkType "DS-3"
219 | LinkLabel "45 Mbps DS-3"
220 | LinkNote "45 Mbps "
221 | ]
222 | edge [
223 | source 5
224 | target 7
225 | LinkType "DS-3"
226 | LinkLabel "45 Mbps DS-3"
227 | LinkNote "45 Mbps "
228 | ]
229 | edge [
230 | source 6
231 | target 8
232 | LinkType "DS-3"
233 | LinkLabel "45 Mbps DS-3"
234 | LinkNote "45 Mbps "
235 | ]
236 | edge [
237 | source 6
238 | target 7
239 | LinkType "DS-3"
240 | LinkLabel "45 Mbps DS-3"
241 | LinkNote "45 Mbps "
242 | ]
243 | ]
244 |
--------------------------------------------------------------------------------
/Dec_MAPPO/NSF.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "14/01/11"
3 | GeoLocation "USA"
4 | GeoExtent "Country"
5 | Network "NSF"
6 | Provenance "Secondary"
7 | Access 0
8 | Source "http://www.nthelp.com/images/nsf.jpg"
9 | Version "1.0"
10 | Type "REN"
11 | DateType "Current"
12 | Backbone 1
13 | Commercial 0
14 | label "Nsfnet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "01"
21 | LastAccess "14/01/11"
22 | Layer "IP"
23 | Creator "Topology Zoo Toolset"
24 | Developed 1
25 | Transit 1
26 | NetworkDate "2011_01"
27 | DateYear "2011"
28 | LastProcessed "2011_09_01"
29 | Testbed 0
30 | node [
31 | id 0
32 | label "SEQSUINET, Rice University, Houston"
33 | Country "United States"
34 | Longitude -95.36327
35 | Internal 1
36 | Latitude 29.76328
37 | ]
38 | node [
39 | id 1
40 | label "Jon Von Neumann Center, Princeton, NJ"
41 | Country "United States"
42 | Longitude -74.65905
43 | Internal 1
44 | Latitude 40.34872
45 | ]
46 | node [
47 | id 2
48 | label "SURANET, Georgia Tech, Atlanta"
49 | Country "United States"
50 | Longitude -84.38798
51 | Internal 1
52 | Latitude 33.749
53 | ]
54 | node [
55 | id 3
56 | label "Pittsburgh Supercomputer Center"
57 | Country "United States"
58 | Longitude -79.99589
59 | Internal 1
60 | Latitude 40.44062
61 | ]
62 | node [
63 | id 4
64 | label "Cornell Theory Center, Ithaca NY"
65 | Country "United States"
66 | Longitude -76.49661
67 | Internal 1
68 | Latitude 42.44063
69 | ]
70 | node [
71 | id 5
72 | label "NorthWestNet, Seattle"
73 | Country "United States"
74 | Longitude -122.33207
75 | Internal 1
76 | Latitude 47.60621
77 | ]
78 | node [
79 | id 6
80 | label "BARRnet, Palo Alto"
81 | Country "United States"
82 | Longitude -122.14302
83 | Internal 1
84 | Latitude 37.44188
85 | ]
86 | node [
87 | id 7
88 | label "San Diego Supercomputer Center"
89 | Country "United States"
90 | Longitude -117.15726
91 | Internal 1
92 | Latitude 32.71533
93 | ]
94 | node [
95 | id 8
96 | label "Westnet, Salt Lake City"
97 | Country "United States"
98 | Longitude -111.89105
99 | Internal 1
100 | Latitude 40.76078
101 | ]
102 | node [
103 | id 9
104 | label "NCAR, Boulder"
105 | Country "United States"
106 | Longitude -105.27055
107 | Internal 1
108 | Latitude 40.01499
109 | ]
110 | node [
111 | id 10
112 | label "MIDnet, Lincoln, NE"
113 | Country "United States"
114 | Longitude -96.66696
115 | Internal 1
116 | Latitude 40.8
117 | ]
118 | node [
119 | id 11
120 | label "NCSA, University of Illinois, Champaign"
121 | Country "United States"
122 | Longitude -88.24338
123 | Internal 1
124 | Latitude 40.11642
125 | ]
126 | node [
127 | id 12
128 | label "Merit Univ of Michigan, Ann Arbor"
129 | Country "United States"
130 | Longitude -83.74088
131 | Internal 1
132 | Latitude 42.27756
133 | ]
134 | edge [
135 | source 0
136 | target 2
137 | id "e14"
138 | ]
139 | edge [
140 | source 0
141 | target 11
142 | id "e8"
143 | ]
144 | edge [
145 | source 0
146 | target 7
147 | id "e4"
148 | ]
149 | edge [
150 | source 1
151 | target 2
152 | id "e13"
153 | ]
154 | edge [
155 | source 1
156 | target 4
157 | id "e12"
158 | ]
159 | edge [
160 | source 3
161 | target 12
162 | id "e10"
163 | ]
164 | edge [
165 | source 4
166 | target 12
167 | id "e11"
168 | ]
169 | edge [
170 | source 5
171 | target 9
172 | id "e1"
173 | ]
174 | edge [
175 | source 5
176 | target 6
177 | id "e0"
178 | ]
179 | edge [
180 | source 6
181 | target 12
182 | LinkType "T1"
183 | LinkLabel "T1"
184 | ]
185 | edge [
186 | source 6
187 | target 7
188 | id "e2"
189 | ]
190 | edge [
191 | source 8
192 | target 9
193 | id "e5"
194 | ]
195 | edge [
196 | source 9
197 | target 11
198 | id "e6"
199 | ]
200 | edge [
201 | source 10
202 | target 11
203 | id "e7"
204 | ]
205 | edge [
206 | source 11
207 | target 12
208 | id "e9"
209 | ]
210 | ]
--------------------------------------------------------------------------------
/Dec_MAPPO/router.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | import copy
7 |
8 | class router:
9 | def __init__(self, K_paths):
10 | self.K_paths = K_paths
11 | self.info = []
12 | self.state = []
13 | self.actions = []
14 | self.max_hop = 0
15 | self.rate_info = []
16 | self.local_rewards = []
17 | self.total_state = []
18 | self.total_rewards = []
19 |
20 | def reset(self):
21 | self.info = []
22 | self.state = []
23 | self.FedState = []
24 | self.actions = []
25 | self.max_hop = 0
26 | self.rate_info = []
27 | self.local_rewards = []
28 | self.total_state = []
29 | self.total_rewards = []
30 |
31 | def add_info(self, index, pathNum):
32 | self.info.append([index, pathNum])
33 |
34 | def add_state(self, part_state):
35 | self.state.append(part_state)
36 |
37 | def add_total_state(self, total_state):
38 | self.total_state.append(total_state)
39 |
40 | def add_FedState(self, state):
41 | new_state = copy.deepcopy(self.state[0])
42 | for i in range(len(state[0])):
43 | new_state.append(state[0][i])
44 | self.FedState.append(new_state)
45 |
46 | def add_action(self, actions):
47 | for i in range(len(actions)):
48 | for j in range(self.K_paths - self.info[i][1]):
49 | actions[i][self.K_paths-1-j] = 0
50 | actionSum = sum(actions[i])
51 | if actionSum == 0:
52 | actions[i][0] = 1
53 | else:
54 | for j in range(len(actions[i])):
55 | actions[i][j] /= actionSum
56 | actions[i][j] = round(actions[i][j], 2)
57 | self.actions = actions
58 |
59 | def add_rateInfo(self, index, rate):
60 | self.rate_info.append([index, rate])
61 |
62 | def add_local_reward(self, reward):
63 | self.local_rewards.append(reward)
64 |
65 | def add_total_reward(self, total_reward):
66 | self.total_rewards.append(total_reward)
67 |
68 |
69 | def getInfo(self):
70 | return self.info
71 |
72 | def getLocalState(self):
73 | return self.state
74 |
75 | def getState(self):
76 | return self.total_state
77 |
78 | def getFedState(self):
79 | return self.FedState
80 |
81 | def getAction(self):
82 | return self.actions
83 |
84 | def getRateInfo(self):
85 | return self.rate_info
86 |
87 | def getLocalRewards(self):
88 | return self.local_rewards
89 |
90 | def getRewards(self):
91 | return self.total_rewards
92 |
93 | def getRewards_load(self):
94 | return self.load
--------------------------------------------------------------------------------
/Dec_MAPPO/switch.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 |
7 | class switch:
8 | def __init__(self, splitNum):
9 | self.reminderPath = []
10 | self.InRate = []
11 | self.OutRate = []
12 | self.splitNum = splitNum
13 |
14 | def reset(self):
15 | self.reminderPath = []
16 | self.InRate = []
17 | self.OutRate = []
18 |
19 | def addReminderPath(self, flowIndex, splitIndex, reminderPath):
20 | index = flowIndex * self.splitNum + splitIndex
21 | self.reminderPath.append([index, reminderPath])
22 |
23 | def addInRate(self, flowIndex, splitIndex, InRate):
24 | add = True
25 | index = flowIndex * self.splitNum + splitIndex
26 | for i in range(len(self.InRate)):
27 | if index == self.InRate[i][0]:
28 | self.InRate[i][1] = InRate
29 | add = False
30 | break
31 | if add:
32 | self.InRate.append([index, InRate])
33 |
34 | def addInRate2(self, index, InRate):
35 | add = True
36 | for i in range(len(self.InRate)):
37 | if index == self.InRate[i][0]:
38 | self.InRate[i][1] = InRate
39 | add = False
40 | break
41 | if add:
42 | self.InRate.append([index, InRate])
43 |
44 | def addOutRate(self, flowIndex, splitIndex, OutRate):
45 | index = flowIndex * self.splitNum + splitIndex
46 | self.OutRate.append([index, OutRate])
47 |
48 | def addOutRate2(self, index, OutRate):
49 | self.OutRate.append([index, OutRate])
50 |
51 | def getSumInrate(self):
52 | ans = 0
53 | for i in range(len(self.InRate)):
54 | ans += self.InRate[i][1]
55 | return ans
56 |
57 | def getOutRate(self, flowIndex, splitIndex):
58 | index = flowIndex * self.splitNum + splitIndex
59 | for i in range(len(self.OutRate)):
60 | if (self.OutRate[i][0] == index):
61 | return self.OutRate[i][1]
62 |
63 | def addEdgeRate(self, pathNode, next_pathNode, rate):
64 | self.G.edges[(pathNode, next_pathNode)]['load'] += rate
--------------------------------------------------------------------------------
/ECMP/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/ECMP/.idea/ECMP.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/ECMP/.idea/deployment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/ECMP/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/ECMP/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ECMP/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ECMP/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ECMP/Abilene.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "3/02/11"
3 | GeoLocation "US"
4 | GeoExtent "Country"
5 | Network "Abilene"
6 | Provenance "Primary"
7 | Access 0
8 | Source "http://www.internet2.edu/pubs/200502-IS-AN.pdf"
9 | Version "1.0"
10 | Type "REN"
11 | DateType "Historic"
12 | Backbone 1
13 | Commercial 0
14 | label "Abilene"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 0
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "02"
21 | LastAccess "3/02/11"
22 | Layer "IP"
23 | Creator "Topology Zoo Toolset"
24 | Developed 0
25 | Transit 0
26 | NetworkDate "2005_02"
27 | DateYear "2005"
28 | LastProcessed "2011_09_01"
29 | Testbed 0
30 | node [
31 | id 0
32 | label "New York"
33 | Country "United States"
34 | Longitude -74.00597
35 | Internal 1
36 | Latitude 40.71427
37 | ]
38 | node [
39 | id 1
40 | label "Chicago"
41 | Country "United States"
42 | Longitude -87.65005
43 | Internal 1
44 | Latitude 41.85003
45 | ]
46 | node [
47 | id 2
48 | label "Washington DC"
49 | Country "United States"
50 | Longitude -77.03637
51 | Internal 1
52 | Latitude 38.89511
53 | ]
54 | node [
55 | id 3
56 | label "Seattle"
57 | Country "United States"
58 | Longitude -122.33207
59 | Internal 1
60 | Latitude 47.60621
61 | ]
62 | node [
63 | id 4
64 | label "Sunnyvale"
65 | Country "United States"
66 | Longitude -122.03635
67 | Internal 1
68 | Latitude 37.36883
69 | ]
70 | node [
71 | id 5
72 | label "Los Angeles"
73 | Country "United States"
74 | Longitude -118.24368
75 | Internal 1
76 | Latitude 34.05223
77 | ]
78 | node [
79 | id 6
80 | label "Denver"
81 | Country "United States"
82 | Longitude -104.9847
83 | Internal 1
84 | Latitude 39.73915
85 | ]
86 | node [
87 | id 7
88 | label "Kansas City"
89 | Country "United States"
90 | Longitude -94.62746
91 | Internal 1
92 | Latitude 39.11417
93 | ]
94 | node [
95 | id 8
96 | label "Houston"
97 | Country "United States"
98 | Longitude -95.36327
99 | Internal 1
100 | Latitude 29.76328
101 | ]
102 | node [
103 | id 9
104 | label "Atlanta"
105 | Country "United States"
106 | Longitude -84.38798
107 | Internal 1
108 | Latitude 33.749
109 | ]
110 | node [
111 | id 10
112 | label "Indianapolis"
113 | Country "United States"
114 | Longitude -86.15804
115 | Internal 1
116 | Latitude 39.76838
117 | ]
118 | edge [
119 | source 0
120 | target 1
121 | LinkType "OC-192"
122 | LinkLabel "OC-192c"
123 | LinkNote "c"
124 | ]
125 | edge [
126 | source 0
127 | target 2
128 | LinkType "OC-192"
129 | LinkLabel "OC-192c"
130 | LinkNote "c"
131 | ]
132 | edge [
133 | source 1
134 | target 10
135 | LinkType "OC-192"
136 | LinkLabel "OC-192c"
137 | LinkNote "c"
138 | ]
139 | edge [
140 | source 2
141 | target 9
142 | LinkType "OC-192"
143 | LinkLabel "OC-192c"
144 | LinkNote "c"
145 | ]
146 | edge [
147 | source 3
148 | target 4
149 | LinkType "OC-192"
150 | LinkLabel "OC-192c"
151 | LinkNote "c"
152 | ]
153 | edge [
154 | source 3
155 | target 6
156 | LinkType "OC-192"
157 | LinkLabel "OC-192c"
158 | LinkNote "c"
159 | ]
160 | edge [
161 | source 4
162 | target 5
163 | LinkType "OC-192"
164 | LinkLabel "OC-192c"
165 | LinkNote "c"
166 | ]
167 | edge [
168 | source 4
169 | target 6
170 | LinkType "OC-192"
171 | LinkLabel "OC-192c"
172 | LinkNote "c"
173 | ]
174 | edge [
175 | source 5
176 | target 8
177 | LinkType "OC-192"
178 | LinkLabel "OC-192c"
179 | LinkNote "c"
180 | ]
181 | edge [
182 | source 6
183 | target 7
184 | LinkType "OC-192"
185 | LinkLabel "OC-192c"
186 | LinkNote "c"
187 | ]
188 | edge [
189 | source 7
190 | target 8
191 | LinkType "OC-192"
192 | LinkLabel "OC-192c"
193 | LinkNote "c"
194 | ]
195 | edge [
196 | source 7
197 | target 10
198 | LinkType "OC-192"
199 | LinkLabel "OC-192c"
200 | LinkNote "c"
201 | ]
202 | edge [
203 | source 8
204 | target 9
205 | LinkType "OC-192"
206 | LinkLabel "OC-192c"
207 | LinkNote "c"
208 | ]
209 | edge [
210 | source 9
211 | target 10
212 | LinkType "OC-192"
213 | LinkLabel "OC-192c"
214 | LinkNote "c"
215 | ]
216 | ]
217 |
--------------------------------------------------------------------------------
/ECMP/Claranet.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "19/10/10"
3 | GeoLocation "Europe"
4 | GeoExtent "Continent"
5 | Network "Claranet"
6 | Provenance "Primary"
7 | Note "Technically, Access is provided by Claranet SOHO, a division of Claranet."
8 | Source "http://noc.eu.clara.net/"
9 | Version "1.0"
10 | Type "COM"
11 | DateType "Dynamic"
12 | Backbone 1
13 | Commercial 0
14 | label "Claranet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "08"
21 | LastAccess "3/08/10"
22 | Access 1
23 | Layer "IP"
24 | Creator "Topology Zoo Toolset"
25 | Developed 0
26 | Transit 1
27 | NetworkDate "2010_08"
28 | DateYear "2010"
29 | LastProcessed "2011_09_01"
30 | Testbed 0
31 | node [
32 | id 0
33 | label "Faro"
34 | Country "Portugal"
35 | Longitude -7.93333
36 | Internal 1
37 | Latitude 37.01667
38 | ]
39 | node [
40 | id 1
41 | label "Madrid"
42 | Country "Spain"
43 | Longitude -3.70256
44 | Internal 1
45 | Latitude 40.4165
46 | ]
47 | node [
48 | id 2
49 | label "Porto"
50 | Country "Portugal"
51 | Longitude -8.61667
52 | Internal 1
53 | Latitude 41.15
54 | ]
55 | node [
56 | id 3
57 | label "Lisbon"
58 | Country "Portugal"
59 | Longitude -9.13333
60 | Internal 1
61 | Latitude 38.71667
62 | ]
63 | node [
64 | id 4
65 | label "Barcelona"
66 | Country "Spain"
67 | Longitude 2.15899
68 | Internal 1
69 | Latitude 41.38879
70 | ]
71 | node [
72 | id 5
73 | label "Manchester"
74 | Country "United Kingdom"
75 | Longitude -2.23743
76 | Internal 1
77 | Latitude 53.48095
78 | ]
79 | node [
80 | id 6
81 | label "New York"
82 | Country "United Kingdom"
83 | Longitude -0.14008
84 | Internal 1
85 | Latitude 53.07897
86 | ]
87 | node [
88 | id 7
89 | label "Amsterdam"
90 | Country "Netherlands"
91 | Longitude 4.88969
92 | Internal 1
93 | Latitude 52.37403
94 | ]
95 | node [
96 | id 8
97 | label "Eindhoven"
98 | Country "Netherlands"
99 | Longitude 5.47778
100 | Internal 1
101 | Latitude 51.44083
102 | ]
103 | node [
104 | id 9
105 | label "Berlin"
106 | Country "Germany"
107 | Longitude 13.41053
108 | Internal 1
109 | Latitude 52.52437
110 | ]
111 | node [
112 | id 10
113 | label "Frankfurt"
114 | Country "Germany"
115 | Longitude 8.68333
116 | Internal 1
117 | Latitude 50.11667
118 | ]
119 | node [
120 | id 11
121 | label "Munich"
122 | Country "Germany"
123 | Longitude 11.57549
124 | Internal 1
125 | Latitude 48.13743
126 | ]
127 | node [
128 | id 12
129 | label "Paris"
130 | Country "France"
131 | Longitude 2.3488
132 | Internal 1
133 | Latitude 48.85341
134 | ]
135 | node [
136 | id 13
137 | label "Rennes"
138 | Country "France"
139 | Longitude -1.68333
140 | Internal 1
141 | Latitude 48.08333
142 | ]
143 | node [
144 | id 14
145 | label "London"
146 | Country "United Kingdom"
147 | Longitude -0.12574
148 | Internal 1
149 | Latitude 51.50853
150 | ]
151 | edge [
152 | source 0
153 | target 3
154 | id "e15"
155 | ]
156 | edge [
157 | source 1
158 | target 3
159 | id "e16"
160 | ]
161 | edge [
162 | source 1
163 | target 4
164 | id "e17"
165 | ]
166 | edge [
167 | source 2
168 | target 3
169 | id "e14"
170 | ]
171 | edge [
172 | source 3
173 | target 14
174 | id "e13"
175 | ]
176 | edge [
177 | source 4
178 | target 12
179 | id "e8"
180 | ]
181 | edge [
182 | source 5
183 | target 14
184 | id "e11"
185 | ]
186 | edge [
187 | source 6
188 | target 14
189 | id "e12"
190 | ]
191 | edge [
192 | source 7
193 | target 8
194 | id "e0"
195 | ]
196 | edge [
197 | source 7
198 | target 10
199 | id "e1"
200 | ]
201 | edge [
202 | source 7
203 | target 14
204 | id "e2"
205 | ]
206 | edge [
207 | source 9
208 | target 10
209 | id "e3"
210 | ]
211 | edge [
212 | source 9
213 | target 11
214 | id "e4"
215 | ]
216 | edge [
217 | source 10
218 | target 11
219 | id "e5"
220 | ]
221 | edge [
222 | source 10
223 | target 12
224 | id "e6"
225 | ]
226 | edge [
227 | source 10
228 | target 14
229 | id "e7"
230 | ]
231 | edge [
232 | source 12
233 | target 13
234 | id "e9"
235 | ]
236 | edge [
237 | source 12
238 | target 14
239 | id "e10"
240 | ]
241 | ]
242 |
--------------------------------------------------------------------------------
/ECMP/ECMP.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 |
7 | import argparse
8 | import torch
9 | from routingEnv import routingEnv
10 | from torch.utils.tensorboard import SummaryWriter
11 | import tqdm
12 | import os
13 |
14 | version = 2
15 |
16 | #################################################################################
17 |
18 | ################################## set device ##################################
19 |
20 | print("============================================================================================")
21 |
22 | # set device to cpu or cuda
23 | device = torch.device('cpu')
24 |
25 | if (torch.cuda.is_available()):
26 | device = torch.device('cuda:5')
27 | torch.cuda.empty_cache()
28 | print("Device set to : " + str(torch.cuda.get_device_name(device)))
29 | else:
30 | print("Device set to : cpu")
31 |
32 | print("============================================================================================")
33 |
34 | parser = argparse.ArgumentParser()
35 |
36 | parser.add_argument('--mode', default='train', type=str) # mode = 'train' or 'test'
37 | parser.add_argument("--env_name", default="Pendulum-v0") # OpenAI gym environment name, BipedalWalker-v2
38 | parser.add_argument('--tau', default=0.005, type=float) # target smoothing coefficient
39 | parser.add_argument('--target_update_interval', default=1, type=int)
40 | parser.add_argument('--iteration', default=5, type=int) # test
41 |
42 | parser.add_argument('--learning_rate', default=3e-4, type=float)
43 | parser.add_argument('--gamma', default=0.9, type=int) # discounted factor 0.9
44 | parser.add_argument('--capacity', default=50000, type=int) # replay buffer size 50000
45 | parser.add_argument('--num_iteration', default=500000, type=int) # num of games train
46 | parser.add_argument('--batch_size', default=256, type=int) # mini batch size 256
47 | parser.add_argument('--seed', default=1500, type=int)
48 |
49 | # optional parameters
50 | parser.add_argument('--num_hidden_layers', default=2, type=int)
51 | parser.add_argument('--sample_frequency', default=256, type=int)
52 | parser.add_argument('--activation', default='Relu', type=str)
53 | parser.add_argument('--render', default=False, type=bool) # show UI or not
54 | parser.add_argument('--log_interval', default=80000, type=int) #
55 | parser.add_argument('--load', default=False, type=bool) # load model
56 | parser.add_argument('--render_interval', default=100, type=int) # after render_interval, the env.render() will work
57 | parser.add_argument('--policy_noise', default=0.2, type=float)
58 | parser.add_argument('--noise_clip', default=0.5, type=float)
59 | parser.add_argument('--policy_delay', default=2, type=int)
60 | parser.add_argument('--exploration_noise', default=0.1, type=float)
61 | parser.add_argument('--max_episode', default=2000, type=int)
62 | parser.add_argument('--print_log', default=5, type=int)
63 | args = parser.parse_args()
64 |
65 | script_name = os.path.basename(__file__)
66 |
67 | directory = './exp' + script_name + args.env_name + './1'
68 |
69 | def main():
70 | summary_writer = SummaryWriter()
71 | num_iteration = 40000
72 | num_step = 50
73 | env = routingEnv(621)
74 |
75 | step = 0
76 | for i in tqdm.tqdm(range(num_iteration)):
77 | episode = i
78 | states = env.reset(episode)
79 | ep_total_reward = 0
80 | ep_local_reward = 0
81 | ep_rd = 0
82 | ep_rp = 0
83 | for j in range(num_step):
84 | for node in range(env.node_num):
85 | state = states[node].getState()[0]
86 | weight = env.get_pathweight(node)
87 | if weight[0] == weight[1] and weight[1] == weight[2]:
88 | act = [[1, 1, 1]]
89 | elif weight[0] == weight[1]:
90 | act = [[1, 1, 0]]
91 | else:
92 | act = [[1, 0, 0]]
93 | env.store_action(node, act)
94 |
95 | states__, st_rd, st_rp, done = env.step()
96 | ep_rd += st_rd
97 | ep_rp += st_rp
98 | if j == num_step - 1:
99 | done = True
100 | for node in range(env.node_num):
101 | reward = states__[node].getRewards()
102 | local_reward = states__[node].getLocalRewards()
103 | ep_local_reward += local_reward[0][0]
104 | for re in range(len(reward)):
105 | ep_total_reward += reward[re][0]
106 | states_ = env.get_state()
107 |
108 | step += 1
109 | states = states_
110 | ep_total_reward /= num_step
111 | ep_total_reward /= env.node_num
112 | ep_local_reward /= num_step
113 | ep_local_reward /= env.node_num
114 | ep_rd /= num_step
115 | ep_rp /= num_step
116 | print("local_reward", ep_local_reward)
117 | summary_writer.add_scalar('total_reward_change 15 30 zif standard round2', ep_total_reward, global_step=i)
118 | summary_writer.add_scalar('local_reward', ep_local_reward, global_step=i)
119 | summary_writer.add_scalar('ep_rd', ep_rd, i)
120 | summary_writer.add_scalar('ep_rp', ep_rp, i)
121 |
122 |
123 | if __name__ == '__main__':
124 | main()
125 |
126 |
--------------------------------------------------------------------------------
/ECMP/Gridnet.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "14/01/11"
3 | GeoLocation "USA"
4 | GeoExtent "Country"
5 | Network "GridNet"
6 | Provenance "Secondary"
7 | Note "Owned by WorldCom - public data net. http://books.google.com.au/books?id=pw4EAAAAMBAJ&pg=PA24&lpg=PA24&dq=GridNet+Network&source=bl&ots=QrtyD7bAeG&sig=46WUmRkmTyaiQFcJ2IBv3KclZa8&hl=en&ei=SQTaTa2JCo7WtQOzoKWODA&sa=X&oi=book_result&ct=result&resnum=9&ved=0CFIQ6AEwCA#v=onepage&q=GridNet%20Network&f=false"
8 | Source "http://www.nthelp.com/images/gridnet.jpg"
9 | Version "1.0"
10 | Type "COM"
11 | DateType "Current"
12 | Backbone 1
13 | Commercial 0
14 | label "Gridnet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "01"
21 | LastAccess "14/01/11"
22 | Access 1
23 | Layer "IP"
24 | Creator "Topology Zoo Toolset"
25 | Developed 1
26 | Transit 0
27 | NetworkDate "2011_01"
28 | DateYear "2011"
29 | LastProcessed "2011_09_01"
30 | Testbed 0
31 | node [
32 | id 0
33 | label "Houston"
34 | Country "United States"
35 | Longitude -95.36327
36 | Internal 1
37 | Latitude 29.76328
38 | ]
39 | node [
40 | id 1
41 | label "San Francisco"
42 | Country "United States"
43 | Longitude -122.41942
44 | Internal 1
45 | Latitude 37.77493
46 | ]
47 | node [
48 | id 2
49 | label "Los Angeles"
50 | Country "United States"
51 | Longitude -118.24368
52 | Internal 1
53 | Latitude 34.05223
54 | ]
55 | node [
56 | id 3
57 | label "New York"
58 | Country "United States"
59 | Longitude -74.00597
60 | Internal 1
61 | Latitude 40.71427
62 | ]
63 | node [
64 | id 4
65 | label "Newark"
66 | Country "United States"
67 | Longitude -74.17237
68 | Internal 1
69 | Latitude 40.73566
70 | ]
71 | node [
72 | id 5
73 | label "Washington, DC"
74 | Country "United States"
75 | Longitude -77.03637
76 | Internal 1
77 | Latitude 38.89511
78 | ]
79 | node [
80 | id 6
81 | label "Atlanta"
82 | Country "United States"
83 | Longitude -84.38798
84 | Internal 1
85 | Latitude 33.749
86 | ]
87 | node [
88 | id 7
89 | label "Dallas"
90 | Country "United States"
91 | Longitude -96.80667
92 | Internal 1
93 | Latitude 32.78306
94 | ]
95 | node [
96 | id 8
97 | label "Miami"
98 | Country "United States"
99 | Longitude -80.19366
100 | Internal 1
101 | Latitude 25.77427
102 | ]
103 | edge [
104 | source 0
105 | target 8
106 | LinkType "DS-3"
107 | LinkLabel "45 Mbps DS-3"
108 | LinkNote "45 Mbps "
109 | ]
110 | edge [
111 | source 0
112 | target 2
113 | LinkType "DS-3"
114 | LinkLabel "45 Mbps DS-3"
115 | LinkNote "45 Mbps "
116 | ]
117 | edge [
118 | source 0
119 | target 3
120 | LinkType "DS-3"
121 | LinkLabel "45 Mbps DS-3"
122 | LinkNote "45 Mbps "
123 | ]
124 | edge [
125 | source 0
126 | target 7
127 | LinkType "DS-3"
128 | LinkLabel "45 Mbps DS-3"
129 | LinkNote "45 Mbps "
130 | ]
131 | edge [
132 | source 1
133 | target 2
134 | LinkType "DS-3"
135 | LinkLabel "45 Mbps DS-3"
136 | LinkNote "45 Mbps "
137 | ]
138 | edge [
139 | source 1
140 | target 4
141 | LinkType "DS-3"
142 | LinkLabel "45 Mbps DS-3"
143 | LinkNote "45 Mbps "
144 | ]
145 | edge [
146 | source 1
147 | target 5
148 | LinkType "DS-3"
149 | LinkLabel "45 Mbps DS-3"
150 | LinkNote "45 Mbps "
151 | ]
152 | edge [
153 | source 1
154 | target 6
155 | LinkType "DS-3"
156 | LinkLabel "45 Mbps DS-3"
157 | LinkNote "45 Mbps "
158 | ]
159 | edge [
160 | source 1
161 | target 7
162 | LinkType "DS-3"
163 | LinkLabel "45 Mbps DS-3"
164 | LinkNote "45 Mbps "
165 | ]
166 | edge [
167 | source 2
168 | target 3
169 | LinkType "DS-3"
170 | LinkLabel "45 Mbps DS-3"
171 | LinkNote "45 Mbps "
172 | ]
173 | edge [
174 | source 2
175 | target 8
176 | LinkType "DS-3"
177 | LinkLabel "45 Mbps DS-3"
178 | LinkNote "45 Mbps "
179 | ]
180 | edge [
181 | source 3
182 | target 8
183 | LinkType "DS-3"
184 | LinkLabel "45 Mbps DS-3"
185 | LinkNote "45 Mbps "
186 | ]
187 | edge [
188 | source 3
189 | target 4
190 | LinkType "DS-3"
191 | LinkLabel "45 Mbps DS-3"
192 | LinkNote "45 Mbps "
193 | ]
194 | edge [
195 | source 4
196 | target 5
197 | LinkType "DS-3"
198 | LinkLabel "45 Mbps DS-3"
199 | LinkNote "45 Mbps "
200 | ]
201 | edge [
202 | source 4
203 | target 6
204 | LinkType "DS-3"
205 | LinkLabel "45 Mbps DS-3"
206 | LinkNote "45 Mbps "
207 | ]
208 | edge [
209 | source 4
210 | target 7
211 | LinkType "DS-3"
212 | LinkLabel "45 Mbps DS-3"
213 | LinkNote "45 Mbps "
214 | ]
215 | edge [
216 | source 5
217 | target 6
218 | LinkType "DS-3"
219 | LinkLabel "45 Mbps DS-3"
220 | LinkNote "45 Mbps "
221 | ]
222 | edge [
223 | source 5
224 | target 7
225 | LinkType "DS-3"
226 | LinkLabel "45 Mbps DS-3"
227 | LinkNote "45 Mbps "
228 | ]
229 | edge [
230 | source 6
231 | target 8
232 | LinkType "DS-3"
233 | LinkLabel "45 Mbps DS-3"
234 | LinkNote "45 Mbps "
235 | ]
236 | edge [
237 | source 6
238 | target 7
239 | LinkType "DS-3"
240 | LinkLabel "45 Mbps DS-3"
241 | LinkNote "45 Mbps "
242 | ]
243 | ]
244 |
--------------------------------------------------------------------------------
/ECMP/NSF.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "14/01/11"
3 | GeoLocation "USA"
4 | GeoExtent "Country"
5 | Network "NSF"
6 | Provenance "Secondary"
7 | Access 0
8 | Source "http://www.nthelp.com/images/nsf.jpg"
9 | Version "1.0"
10 | Type "REN"
11 | DateType "Current"
12 | Backbone 1
13 | Commercial 0
14 | label "Nsfnet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "01"
21 | LastAccess "14/01/11"
22 | Layer "IP"
23 | Creator "Topology Zoo Toolset"
24 | Developed 1
25 | Transit 1
26 | NetworkDate "2011_01"
27 | DateYear "2011"
28 | LastProcessed "2011_09_01"
29 | Testbed 0
30 | node [
31 | id 0
32 | label "SEQSUINET, Rice University, Houston"
33 | Country "United States"
34 | Longitude -95.36327
35 | Internal 1
36 | Latitude 29.76328
37 | ]
38 | node [
39 | id 1
40 | label "Jon Von Neumann Center, Princeton, NJ"
41 | Country "United States"
42 | Longitude -74.65905
43 | Internal 1
44 | Latitude 40.34872
45 | ]
46 | node [
47 | id 2
48 | label "SURANET, Georgia Tech, Atlanta"
49 | Country "United States"
50 | Longitude -84.38798
51 | Internal 1
52 | Latitude 33.749
53 | ]
54 | node [
55 | id 3
56 | label "Pittsburgh Supercomputer Center"
57 | Country "United States"
58 | Longitude -79.99589
59 | Internal 1
60 | Latitude 40.44062
61 | ]
62 | node [
63 | id 4
64 | label "Cornell Theory Center, Ithaca NY"
65 | Country "United States"
66 | Longitude -76.49661
67 | Internal 1
68 | Latitude 42.44063
69 | ]
70 | node [
71 | id 5
72 | label "NorthWestNet, Seattle"
73 | Country "United States"
74 | Longitude -122.33207
75 | Internal 1
76 | Latitude 47.60621
77 | ]
78 | node [
79 | id 6
80 | label "BARRnet, Palo Alto"
81 | Country "United States"
82 | Longitude -122.14302
83 | Internal 1
84 | Latitude 37.44188
85 | ]
86 | node [
87 | id 7
88 | label "San Diego Supercomputer Center"
89 | Country "United States"
90 | Longitude -117.15726
91 | Internal 1
92 | Latitude 32.71533
93 | ]
94 | node [
95 | id 8
96 | label "Westnet, Salt Lake City"
97 | Country "United States"
98 | Longitude -111.89105
99 | Internal 1
100 | Latitude 40.76078
101 | ]
102 | node [
103 | id 9
104 | label "NCAR, Boulder"
105 | Country "United States"
106 | Longitude -105.27055
107 | Internal 1
108 | Latitude 40.01499
109 | ]
110 | node [
111 | id 10
112 | label "MIDnet, Lincoln, NE"
113 | Country "United States"
114 | Longitude -96.66696
115 | Internal 1
116 | Latitude 40.8
117 | ]
118 | node [
119 | id 11
120 | label "NCSA, University of Illinois, Champaign"
121 | Country "United States"
122 | Longitude -88.24338
123 | Internal 1
124 | Latitude 40.11642
125 | ]
126 | node [
127 | id 12
128 | label "Merit Univ of Michigan, Ann Arbor"
129 | Country "United States"
130 | Longitude -83.74088
131 | Internal 1
132 | Latitude 42.27756
133 | ]
134 | edge [
135 | source 0
136 | target 2
137 | id "e14"
138 | ]
139 | edge [
140 | source 0
141 | target 11
142 | id "e8"
143 | ]
144 | edge [
145 | source 0
146 | target 7
147 | id "e4"
148 | ]
149 | edge [
150 | source 1
151 | target 2
152 | id "e13"
153 | ]
154 | edge [
155 | source 1
156 | target 4
157 | id "e12"
158 | ]
159 | edge [
160 | source 3
161 | target 12
162 | id "e10"
163 | ]
164 | edge [
165 | source 4
166 | target 12
167 | id "e11"
168 | ]
169 | edge [
170 | source 5
171 | target 9
172 | id "e1"
173 | ]
174 | edge [
175 | source 5
176 | target 6
177 | id "e0"
178 | ]
179 | edge [
180 | source 6
181 | target 12
182 | LinkType "T1"
183 | LinkLabel "T1"
184 | ]
185 | edge [
186 | source 6
187 | target 7
188 | id "e2"
189 | ]
190 | edge [
191 | source 8
192 | target 9
193 | id "e5"
194 | ]
195 | edge [
196 | source 9
197 | target 11
198 | id "e6"
199 | ]
200 | edge [
201 | source 10
202 | target 11
203 | id "e7"
204 | ]
205 | edge [
206 | source 11
207 | target 12
208 | id "e9"
209 | ]
210 | ]
--------------------------------------------------------------------------------
/ECMP/router.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | import copy
7 |
8 | class router:
9 | def __init__(self, K_paths):
10 | self.K_paths = K_paths
11 | self.info = []
12 | self.state = []
13 | self.actions = []
14 | self.max_hop = 0
15 | self.rate_info = []
16 | self.local_rewards = []
17 | self.total_state = []
18 | self.total_rewards = []
19 |
20 | def reset(self):
21 | self.info = []
22 | self.state = []
23 | self.FedState = []
24 | self.actions = []
25 | self.max_hop = 0
26 | self.rate_info = []
27 | self.local_rewards = []
28 | self.total_state = []
29 | self.total_rewards = []
30 |
31 | def add_info(self, index, pathNum):
32 | self.info.append([index, pathNum])
33 |
34 | def add_state(self, part_state):
35 | self.state.append(part_state)
36 |
37 | def add_total_state(self, total_state):
38 | self.total_state.append(total_state)
39 |
40 | def add_FedState(self, state):
41 | new_state = copy.deepcopy(self.state[0])
42 | for i in range(len(state[0])):
43 | new_state.append(state[0][i])
44 | self.FedState.append(new_state)
45 |
46 | def add_action(self, actions):
47 | for i in range(len(actions)):
48 | for j in range(self.K_paths - self.info[i][1]):
49 | actions[i][self.K_paths-1-j] = 0
50 | actionSum = sum(actions[i])
51 | if actionSum == 0:
52 | actions[i][0] = 1
53 | else:
54 | for j in range(len(actions[i])):
55 | actions[i][j] /= actionSum
56 | actions[i][j] = round(actions[i][j], 2)
57 | self.actions = actions
58 |
59 | def add_rateInfo(self, index, rate):
60 | self.rate_info.append([index, rate])
61 |
62 | def add_local_reward(self, reward):
63 | self.local_rewards.append(reward)
64 |
65 | def add_total_reward(self, total_reward):
66 | self.total_rewards.append(total_reward)
67 |
68 |
69 | def getInfo(self):
70 | return self.info
71 |
72 | def getLocalState(self):
73 | return self.state
74 |
75 | def getState(self):
76 | return self.total_state
77 |
78 | def getFedState(self):
79 | return self.FedState
80 |
81 | def getAction(self):
82 | return self.actions
83 |
84 | def getRateInfo(self):
85 | return self.rate_info
86 |
87 | def getLocalRewards(self):
88 | return self.local_rewards
89 |
90 | def getRewards(self):
91 | return self.total_rewards
92 |
93 | def getRewards_load(self):
94 | return self.load
--------------------------------------------------------------------------------
/ECMP/switch.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | class switch:
7 | def __init__(self, splitNum):
8 | self.reminderPath = []
9 | self.InRate = []
10 | self.OutRate = []
11 | self.splitNum = splitNum
12 |
13 | def reset(self):
14 | self.reminderPath = []
15 | self.InRate = []
16 | self.OutRate = []
17 |
18 | def addReminderPath(self, flowIndex, splitIndex, reminderPath):
19 | index = flowIndex * self.splitNum + splitIndex
20 | self.reminderPath.append([index, reminderPath])
21 |
22 | def addInRate(self, flowIndex, splitIndex, InRate):
23 | add = True
24 | index = flowIndex * self.splitNum + splitIndex
25 | for i in range(len(self.InRate)):
26 | if index == self.InRate[i][0]:
27 | self.InRate[i][1] = InRate
28 | add = False
29 | break
30 | if add:
31 | self.InRate.append([index, InRate])
32 |
33 | def addInRate2(self, index, InRate):
34 | add = True
35 | for i in range(len(self.InRate)):
36 | if index == self.InRate[i][0]:
37 | self.InRate[i][1] = InRate
38 | add = False
39 | break
40 | if add:
41 | self.InRate.append([index, InRate])
42 |
43 | def addOutRate(self, flowIndex, splitIndex, OutRate):
44 | index = flowIndex * self.splitNum + splitIndex
45 | self.OutRate.append([index, OutRate])
46 |
47 | def addOutRate2(self, index, OutRate):
48 | self.OutRate.append([index, OutRate])
49 |
50 | def getSumInrate(self):
51 | ans = 0
52 | for i in range(len(self.InRate)):
53 | ans += self.InRate[i][1]
54 | return ans
55 |
56 | def getOutRate(self, flowIndex, splitIndex):
57 | index = flowIndex * self.splitNum + splitIndex
58 | for i in range(len(self.OutRate)):
59 | if (self.OutRate[i][0] == index):
60 | return self.OutRate[i][1]
61 |
62 | def addEdgeRate(self, pathNode, next_pathNode, rate):
63 | self.G.edges[(pathNode, next_pathNode)]['load'] += rate
--------------------------------------------------------------------------------
/LB/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/LB/.idea/LB.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/LB/.idea/deployment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/LB/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/LB/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/LB/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/LB/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/LB/Abilene.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "3/02/11"
3 | GeoLocation "US"
4 | GeoExtent "Country"
5 | Network "Abilene"
6 | Provenance "Primary"
7 | Access 0
8 | Source "http://www.internet2.edu/pubs/200502-IS-AN.pdf"
9 | Version "1.0"
10 | Type "REN"
11 | DateType "Historic"
12 | Backbone 1
13 | Commercial 0
14 | label "Abilene"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 0
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "02"
21 | LastAccess "3/02/11"
22 | Layer "IP"
23 | Creator "Topology Zoo Toolset"
24 | Developed 0
25 | Transit 0
26 | NetworkDate "2005_02"
27 | DateYear "2005"
28 | LastProcessed "2011_09_01"
29 | Testbed 0
30 | node [
31 | id 0
32 | label "New York"
33 | Country "United States"
34 | Longitude -74.00597
35 | Internal 1
36 | Latitude 40.71427
37 | ]
38 | node [
39 | id 1
40 | label "Chicago"
41 | Country "United States"
42 | Longitude -87.65005
43 | Internal 1
44 | Latitude 41.85003
45 | ]
46 | node [
47 | id 2
48 | label "Washington DC"
49 | Country "United States"
50 | Longitude -77.03637
51 | Internal 1
52 | Latitude 38.89511
53 | ]
54 | node [
55 | id 3
56 | label "Seattle"
57 | Country "United States"
58 | Longitude -122.33207
59 | Internal 1
60 | Latitude 47.60621
61 | ]
62 | node [
63 | id 4
64 | label "Sunnyvale"
65 | Country "United States"
66 | Longitude -122.03635
67 | Internal 1
68 | Latitude 37.36883
69 | ]
70 | node [
71 | id 5
72 | label "Los Angeles"
73 | Country "United States"
74 | Longitude -118.24368
75 | Internal 1
76 | Latitude 34.05223
77 | ]
78 | node [
79 | id 6
80 | label "Denver"
81 | Country "United States"
82 | Longitude -104.9847
83 | Internal 1
84 | Latitude 39.73915
85 | ]
86 | node [
87 | id 7
88 | label "Kansas City"
89 | Country "United States"
90 | Longitude -94.62746
91 | Internal 1
92 | Latitude 39.11417
93 | ]
94 | node [
95 | id 8
96 | label "Houston"
97 | Country "United States"
98 | Longitude -95.36327
99 | Internal 1
100 | Latitude 29.76328
101 | ]
102 | node [
103 | id 9
104 | label "Atlanta"
105 | Country "United States"
106 | Longitude -84.38798
107 | Internal 1
108 | Latitude 33.749
109 | ]
110 | node [
111 | id 10
112 | label "Indianapolis"
113 | Country "United States"
114 | Longitude -86.15804
115 | Internal 1
116 | Latitude 39.76838
117 | ]
118 | edge [
119 | source 0
120 | target 1
121 | LinkType "OC-192"
122 | LinkLabel "OC-192c"
123 | LinkNote "c"
124 | ]
125 | edge [
126 | source 0
127 | target 2
128 | LinkType "OC-192"
129 | LinkLabel "OC-192c"
130 | LinkNote "c"
131 | ]
132 | edge [
133 | source 1
134 | target 10
135 | LinkType "OC-192"
136 | LinkLabel "OC-192c"
137 | LinkNote "c"
138 | ]
139 | edge [
140 | source 2
141 | target 9
142 | LinkType "OC-192"
143 | LinkLabel "OC-192c"
144 | LinkNote "c"
145 | ]
146 | edge [
147 | source 3
148 | target 4
149 | LinkType "OC-192"
150 | LinkLabel "OC-192c"
151 | LinkNote "c"
152 | ]
153 | edge [
154 | source 3
155 | target 6
156 | LinkType "OC-192"
157 | LinkLabel "OC-192c"
158 | LinkNote "c"
159 | ]
160 | edge [
161 | source 4
162 | target 5
163 | LinkType "OC-192"
164 | LinkLabel "OC-192c"
165 | LinkNote "c"
166 | ]
167 | edge [
168 | source 4
169 | target 6
170 | LinkType "OC-192"
171 | LinkLabel "OC-192c"
172 | LinkNote "c"
173 | ]
174 | edge [
175 | source 5
176 | target 8
177 | LinkType "OC-192"
178 | LinkLabel "OC-192c"
179 | LinkNote "c"
180 | ]
181 | edge [
182 | source 6
183 | target 7
184 | LinkType "OC-192"
185 | LinkLabel "OC-192c"
186 | LinkNote "c"
187 | ]
188 | edge [
189 | source 7
190 | target 8
191 | LinkType "OC-192"
192 | LinkLabel "OC-192c"
193 | LinkNote "c"
194 | ]
195 | edge [
196 | source 7
197 | target 10
198 | LinkType "OC-192"
199 | LinkLabel "OC-192c"
200 | LinkNote "c"
201 | ]
202 | edge [
203 | source 8
204 | target 9
205 | LinkType "OC-192"
206 | LinkLabel "OC-192c"
207 | LinkNote "c"
208 | ]
209 | edge [
210 | source 9
211 | target 10
212 | LinkType "OC-192"
213 | LinkLabel "OC-192c"
214 | LinkNote "c"
215 | ]
216 | ]
217 |
--------------------------------------------------------------------------------
/LB/Claranet.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "19/10/10"
3 | GeoLocation "Europe"
4 | GeoExtent "Continent"
5 | Network "Claranet"
6 | Provenance "Primary"
7 | Note "Technically, Access is provided by Claranet SOHO, a division of Claranet."
8 | Source "http://noc.eu.clara.net/"
9 | Version "1.0"
10 | Type "COM"
11 | DateType "Dynamic"
12 | Backbone 1
13 | Commercial 0
14 | label "Claranet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "08"
21 | LastAccess "3/08/10"
22 | Access 1
23 | Layer "IP"
24 | Creator "Topology Zoo Toolset"
25 | Developed 0
26 | Transit 1
27 | NetworkDate "2010_08"
28 | DateYear "2010"
29 | LastProcessed "2011_09_01"
30 | Testbed 0
31 | node [
32 | id 0
33 | label "Faro"
34 | Country "Portugal"
35 | Longitude -7.93333
36 | Internal 1
37 | Latitude 37.01667
38 | ]
39 | node [
40 | id 1
41 | label "Madrid"
42 | Country "Spain"
43 | Longitude -3.70256
44 | Internal 1
45 | Latitude 40.4165
46 | ]
47 | node [
48 | id 2
49 | label "Porto"
50 | Country "Portugal"
51 | Longitude -8.61667
52 | Internal 1
53 | Latitude 41.15
54 | ]
55 | node [
56 | id 3
57 | label "Lisbon"
58 | Country "Portugal"
59 | Longitude -9.13333
60 | Internal 1
61 | Latitude 38.71667
62 | ]
63 | node [
64 | id 4
65 | label "Barcelona"
66 | Country "Spain"
67 | Longitude 2.15899
68 | Internal 1
69 | Latitude 41.38879
70 | ]
71 | node [
72 | id 5
73 | label "Manchester"
74 | Country "United Kingdom"
75 | Longitude -2.23743
76 | Internal 1
77 | Latitude 53.48095
78 | ]
79 | node [
80 | id 6
81 | label "New York"
82 | Country "United Kingdom"
83 | Longitude -0.14008
84 | Internal 1
85 | Latitude 53.07897
86 | ]
87 | node [
88 | id 7
89 | label "Amsterdam"
90 | Country "Netherlands"
91 | Longitude 4.88969
92 | Internal 1
93 | Latitude 52.37403
94 | ]
95 | node [
96 | id 8
97 | label "Eindhoven"
98 | Country "Netherlands"
99 | Longitude 5.47778
100 | Internal 1
101 | Latitude 51.44083
102 | ]
103 | node [
104 | id 9
105 | label "Berlin"
106 | Country "Germany"
107 | Longitude 13.41053
108 | Internal 1
109 | Latitude 52.52437
110 | ]
111 | node [
112 | id 10
113 | label "Frankfurt"
114 | Country "Germany"
115 | Longitude 8.68333
116 | Internal 1
117 | Latitude 50.11667
118 | ]
119 | node [
120 | id 11
121 | label "Munich"
122 | Country "Germany"
123 | Longitude 11.57549
124 | Internal 1
125 | Latitude 48.13743
126 | ]
127 | node [
128 | id 12
129 | label "Paris"
130 | Country "France"
131 | Longitude 2.3488
132 | Internal 1
133 | Latitude 48.85341
134 | ]
135 | node [
136 | id 13
137 | label "Rennes"
138 | Country "France"
139 | Longitude -1.68333
140 | Internal 1
141 | Latitude 48.08333
142 | ]
143 | node [
144 | id 14
145 | label "London"
146 | Country "United Kingdom"
147 | Longitude -0.12574
148 | Internal 1
149 | Latitude 51.50853
150 | ]
151 | edge [
152 | source 0
153 | target 3
154 | id "e15"
155 | ]
156 | edge [
157 | source 1
158 | target 3
159 | id "e16"
160 | ]
161 | edge [
162 | source 1
163 | target 4
164 | id "e17"
165 | ]
166 | edge [
167 | source 2
168 | target 3
169 | id "e14"
170 | ]
171 | edge [
172 | source 3
173 | target 14
174 | id "e13"
175 | ]
176 | edge [
177 | source 4
178 | target 12
179 | id "e8"
180 | ]
181 | edge [
182 | source 5
183 | target 14
184 | id "e11"
185 | ]
186 | edge [
187 | source 6
188 | target 14
189 | id "e12"
190 | ]
191 | edge [
192 | source 7
193 | target 8
194 | id "e0"
195 | ]
196 | edge [
197 | source 7
198 | target 10
199 | id "e1"
200 | ]
201 | edge [
202 | source 7
203 | target 14
204 | id "e2"
205 | ]
206 | edge [
207 | source 9
208 | target 10
209 | id "e3"
210 | ]
211 | edge [
212 | source 9
213 | target 11
214 | id "e4"
215 | ]
216 | edge [
217 | source 10
218 | target 11
219 | id "e5"
220 | ]
221 | edge [
222 | source 10
223 | target 12
224 | id "e6"
225 | ]
226 | edge [
227 | source 10
228 | target 14
229 | id "e7"
230 | ]
231 | edge [
232 | source 12
233 | target 13
234 | id "e9"
235 | ]
236 | edge [
237 | source 12
238 | target 14
239 | id "e10"
240 | ]
241 | ]
242 |
--------------------------------------------------------------------------------
/LB/Gridnet.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "14/01/11"
3 | GeoLocation "USA"
4 | GeoExtent "Country"
5 | Network "GridNet"
6 | Provenance "Secondary"
7 | Note "Owned by WorldCom - public data net. http://books.google.com.au/books?id=pw4EAAAAMBAJ&pg=PA24&lpg=PA24&dq=GridNet+Network&source=bl&ots=QrtyD7bAeG&sig=46WUmRkmTyaiQFcJ2IBv3KclZa8&hl=en&ei=SQTaTa2JCo7WtQOzoKWODA&sa=X&oi=book_result&ct=result&resnum=9&ved=0CFIQ6AEwCA#v=onepage&q=GridNet%20Network&f=false"
8 | Source "http://www.nthelp.com/images/gridnet.jpg"
9 | Version "1.0"
10 | Type "COM"
11 | DateType "Current"
12 | Backbone 1
13 | Commercial 0
14 | label "Gridnet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "01"
21 | LastAccess "14/01/11"
22 | Access 1
23 | Layer "IP"
24 | Creator "Topology Zoo Toolset"
25 | Developed 1
26 | Transit 0
27 | NetworkDate "2011_01"
28 | DateYear "2011"
29 | LastProcessed "2011_09_01"
30 | Testbed 0
31 | node [
32 | id 0
33 | label "Houston"
34 | Country "United States"
35 | Longitude -95.36327
36 | Internal 1
37 | Latitude 29.76328
38 | ]
39 | node [
40 | id 1
41 | label "San Francisco"
42 | Country "United States"
43 | Longitude -122.41942
44 | Internal 1
45 | Latitude 37.77493
46 | ]
47 | node [
48 | id 2
49 | label "Los Angeles"
50 | Country "United States"
51 | Longitude -118.24368
52 | Internal 1
53 | Latitude 34.05223
54 | ]
55 | node [
56 | id 3
57 | label "New York"
58 | Country "United States"
59 | Longitude -74.00597
60 | Internal 1
61 | Latitude 40.71427
62 | ]
63 | node [
64 | id 4
65 | label "Newark"
66 | Country "United States"
67 | Longitude -74.17237
68 | Internal 1
69 | Latitude 40.73566
70 | ]
71 | node [
72 | id 5
73 | label "Washington, DC"
74 | Country "United States"
75 | Longitude -77.03637
76 | Internal 1
77 | Latitude 38.89511
78 | ]
79 | node [
80 | id 6
81 | label "Atlanta"
82 | Country "United States"
83 | Longitude -84.38798
84 | Internal 1
85 | Latitude 33.749
86 | ]
87 | node [
88 | id 7
89 | label "Dallas"
90 | Country "United States"
91 | Longitude -96.80667
92 | Internal 1
93 | Latitude 32.78306
94 | ]
95 | node [
96 | id 8
97 | label "Miami"
98 | Country "United States"
99 | Longitude -80.19366
100 | Internal 1
101 | Latitude 25.77427
102 | ]
103 | edge [
104 | source 0
105 | target 8
106 | LinkType "DS-3"
107 | LinkLabel "45 Mbps DS-3"
108 | LinkNote "45 Mbps "
109 | ]
110 | edge [
111 | source 0
112 | target 2
113 | LinkType "DS-3"
114 | LinkLabel "45 Mbps DS-3"
115 | LinkNote "45 Mbps "
116 | ]
117 | edge [
118 | source 0
119 | target 3
120 | LinkType "DS-3"
121 | LinkLabel "45 Mbps DS-3"
122 | LinkNote "45 Mbps "
123 | ]
124 | edge [
125 | source 0
126 | target 7
127 | LinkType "DS-3"
128 | LinkLabel "45 Mbps DS-3"
129 | LinkNote "45 Mbps "
130 | ]
131 | edge [
132 | source 1
133 | target 2
134 | LinkType "DS-3"
135 | LinkLabel "45 Mbps DS-3"
136 | LinkNote "45 Mbps "
137 | ]
138 | edge [
139 | source 1
140 | target 4
141 | LinkType "DS-3"
142 | LinkLabel "45 Mbps DS-3"
143 | LinkNote "45 Mbps "
144 | ]
145 | edge [
146 | source 1
147 | target 5
148 | LinkType "DS-3"
149 | LinkLabel "45 Mbps DS-3"
150 | LinkNote "45 Mbps "
151 | ]
152 | edge [
153 | source 1
154 | target 6
155 | LinkType "DS-3"
156 | LinkLabel "45 Mbps DS-3"
157 | LinkNote "45 Mbps "
158 | ]
159 | edge [
160 | source 1
161 | target 7
162 | LinkType "DS-3"
163 | LinkLabel "45 Mbps DS-3"
164 | LinkNote "45 Mbps "
165 | ]
166 | edge [
167 | source 2
168 | target 3
169 | LinkType "DS-3"
170 | LinkLabel "45 Mbps DS-3"
171 | LinkNote "45 Mbps "
172 | ]
173 | edge [
174 | source 2
175 | target 8
176 | LinkType "DS-3"
177 | LinkLabel "45 Mbps DS-3"
178 | LinkNote "45 Mbps "
179 | ]
180 | edge [
181 | source 3
182 | target 8
183 | LinkType "DS-3"
184 | LinkLabel "45 Mbps DS-3"
185 | LinkNote "45 Mbps "
186 | ]
187 | edge [
188 | source 3
189 | target 4
190 | LinkType "DS-3"
191 | LinkLabel "45 Mbps DS-3"
192 | LinkNote "45 Mbps "
193 | ]
194 | edge [
195 | source 4
196 | target 5
197 | LinkType "DS-3"
198 | LinkLabel "45 Mbps DS-3"
199 | LinkNote "45 Mbps "
200 | ]
201 | edge [
202 | source 4
203 | target 6
204 | LinkType "DS-3"
205 | LinkLabel "45 Mbps DS-3"
206 | LinkNote "45 Mbps "
207 | ]
208 | edge [
209 | source 4
210 | target 7
211 | LinkType "DS-3"
212 | LinkLabel "45 Mbps DS-3"
213 | LinkNote "45 Mbps "
214 | ]
215 | edge [
216 | source 5
217 | target 6
218 | LinkType "DS-3"
219 | LinkLabel "45 Mbps DS-3"
220 | LinkNote "45 Mbps "
221 | ]
222 | edge [
223 | source 5
224 | target 7
225 | LinkType "DS-3"
226 | LinkLabel "45 Mbps DS-3"
227 | LinkNote "45 Mbps "
228 | ]
229 | edge [
230 | source 6
231 | target 8
232 | LinkType "DS-3"
233 | LinkLabel "45 Mbps DS-3"
234 | LinkNote "45 Mbps "
235 | ]
236 | edge [
237 | source 6
238 | target 7
239 | LinkType "DS-3"
240 | LinkLabel "45 Mbps DS-3"
241 | LinkNote "45 Mbps "
242 | ]
243 | ]
244 |
--------------------------------------------------------------------------------
/LB/LB.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | import argparse
7 | import torch
8 | from routingEnv import routingEnv
9 | from torch.utils.tensorboard import SummaryWriter
10 | import tqdm
11 | import os
12 | version = 2
13 |
14 | #################################################################################
15 |
16 | ################################## set device ##################################
17 |
18 | print("============================================================================================")
19 |
20 | # set device to cpu or cuda
21 | device = torch.device('cpu')
22 |
23 | if (torch.cuda.is_available()):
24 | device = torch.device('cuda:3')
25 | torch.cuda.empty_cache()
26 | print("Device set to : " + str(torch.cuda.get_device_name(device)))
27 | else:
28 | print("Device set to : cpu")
29 |
30 | print("============================================================================================")
31 |
32 | parser = argparse.ArgumentParser()
33 |
34 | parser.add_argument('--mode', default='train', type=str) # mode = 'train' or 'test'
35 | parser.add_argument("--env_name", default="Pendulum-v0") # OpenAI gym environment name, BipedalWalker-v2
36 | parser.add_argument('--tau', default=0.005, type=float) # target smoothing coefficient
37 | parser.add_argument('--target_update_interval', default=1, type=int)
38 | parser.add_argument('--iteration', default=5, type=int) #test
39 |
40 | parser.add_argument('--learning_rate', default=3e-4, type=float)
41 | parser.add_argument('--gamma', default=0.9, type=int) # discounted factor 0.9
42 | parser.add_argument('--capacity', default=50000, type=int) # replay buffer size 50000
43 | parser.add_argument('--num_iteration', default=500000, type=int) # num of games train
44 | parser.add_argument('--batch_size', default=256, type=int) # mini batch size 256
45 | parser.add_argument('--seed', default=1500, type=int)
46 |
47 | # optional parameters
48 | parser.add_argument('--num_hidden_layers', default=2, type=int)
49 | parser.add_argument('--sample_frequency', default=256, type=int)
50 | parser.add_argument('--activation', default='Relu', type=str)
51 | parser.add_argument('--render', default=False, type=bool) # show UI or not
52 | parser.add_argument('--log_interval', default=80000, type=int) #
53 | parser.add_argument('--load', default=False, type=bool) # load model
54 | parser.add_argument('--render_interval', default=100, type=int) # after render_interval, the env.render() will work
55 | parser.add_argument('--policy_noise', default=0.2, type=float)
56 | parser.add_argument('--noise_clip', default=0.5, type=float)
57 | parser.add_argument('--policy_delay', default=2, type=int)
58 | parser.add_argument('--exploration_noise', default=0.1, type=float)
59 | parser.add_argument('--max_episode', default=2000, type=int)
60 | parser.add_argument('--print_log', default=5, type=int)
61 | args = parser.parse_args()
62 |
63 | script_name = os.path.basename(__file__)
64 |
65 | directory = './exp' + script_name + args.env_name +'./1'
66 |
67 | def main():
68 | summary_writer = SummaryWriter()
69 | num_iteration = 40000
70 | num_step = 50
71 | env = routingEnv(621)
72 |
73 | step = 0
74 | for i in tqdm.tqdm(range(num_iteration)):
75 | episode = i
76 | states = env.reset(episode)
77 | ep_total_reward = 0
78 | ep_local_reward = 0
79 | ep_rd = 0
80 | ep_rp = 0
81 |
82 | for j in range(num_step):
83 | for node in range(env.node_num):
84 | state = states[node].getState()[0]
85 | act = [[1, 1, 1]]
86 | env.store_action(node, act)
87 | states__, st_rd, st_rp, done = env.step()
88 | ep_rd += st_rd
89 | ep_rp += st_rp
90 | if j == num_step - 1:
91 | done = True
92 | for node in range(env.node_num):
93 | reward = states__[node].getRewards()
94 | local_reward = states__[node].getLocalRewards()
95 | ep_local_reward += local_reward[0][0]
96 | for re in range(len(reward)):
97 | ep_total_reward += reward[re][0]
98 | states_ = env.get_state()
99 | step += 1
100 | states = states_
101 | ep_total_reward /= num_step
102 | ep_total_reward /= env.node_num
103 | ep_local_reward /= num_step
104 | ep_local_reward /= env.node_num
105 | ep_rd /= num_step
106 | ep_rp /= num_step
107 | print("local_reward", ep_local_reward)
108 | summary_writer.add_scalar('total_reward_change 15 30 zif standard round2', ep_total_reward, global_step=i)
109 | summary_writer.add_scalar('local_reward', ep_local_reward, global_step=i)
110 | summary_writer.add_scalar('ep_rd', ep_rd, i)
111 | summary_writer.add_scalar('ep_rp', ep_rp, i)
112 |
113 | if __name__ == '__main__':
114 | main()
115 |
--------------------------------------------------------------------------------
/LB/NSF.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "14/01/11"
3 | GeoLocation "USA"
4 | GeoExtent "Country"
5 | Network "NSF"
6 | Provenance "Secondary"
7 | Access 0
8 | Source "http://www.nthelp.com/images/nsf.jpg"
9 | Version "1.0"
10 | Type "REN"
11 | DateType "Current"
12 | Backbone 1
13 | Commercial 0
14 | label "Nsfnet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "01"
21 | LastAccess "14/01/11"
22 | Layer "IP"
23 | Creator "Topology Zoo Toolset"
24 | Developed 1
25 | Transit 1
26 | NetworkDate "2011_01"
27 | DateYear "2011"
28 | LastProcessed "2011_09_01"
29 | Testbed 0
30 | node [
31 | id 0
32 | label "SEQSUINET, Rice University, Houston"
33 | Country "United States"
34 | Longitude -95.36327
35 | Internal 1
36 | Latitude 29.76328
37 | ]
38 | node [
39 | id 1
40 | label "Jon Von Neumann Center, Princeton, NJ"
41 | Country "United States"
42 | Longitude -74.65905
43 | Internal 1
44 | Latitude 40.34872
45 | ]
46 | node [
47 | id 2
48 | label "SURANET, Georgia Tech, Atlanta"
49 | Country "United States"
50 | Longitude -84.38798
51 | Internal 1
52 | Latitude 33.749
53 | ]
54 | node [
55 | id 3
56 | label "Pittsburgh Supercomputer Center"
57 | Country "United States"
58 | Longitude -79.99589
59 | Internal 1
60 | Latitude 40.44062
61 | ]
62 | node [
63 | id 4
64 | label "Cornell Theory Center, Ithaca NY"
65 | Country "United States"
66 | Longitude -76.49661
67 | Internal 1
68 | Latitude 42.44063
69 | ]
70 | node [
71 | id 5
72 | label "NorthWestNet, Seattle"
73 | Country "United States"
74 | Longitude -122.33207
75 | Internal 1
76 | Latitude 47.60621
77 | ]
78 | node [
79 | id 6
80 | label "BARRnet, Palo Alto"
81 | Country "United States"
82 | Longitude -122.14302
83 | Internal 1
84 | Latitude 37.44188
85 | ]
86 | node [
87 | id 7
88 | label "San Diego Supercomputer Center"
89 | Country "United States"
90 | Longitude -117.15726
91 | Internal 1
92 | Latitude 32.71533
93 | ]
94 | node [
95 | id 8
96 | label "Westnet, Salt Lake City"
97 | Country "United States"
98 | Longitude -111.89105
99 | Internal 1
100 | Latitude 40.76078
101 | ]
102 | node [
103 | id 9
104 | label "NCAR, Boulder"
105 | Country "United States"
106 | Longitude -105.27055
107 | Internal 1
108 | Latitude 40.01499
109 | ]
110 | node [
111 | id 10
112 | label "MIDnet, Lincoln, NE"
113 | Country "United States"
114 | Longitude -96.66696
115 | Internal 1
116 | Latitude 40.8
117 | ]
118 | node [
119 | id 11
120 | label "NCSA, University of Illinois, Champaign"
121 | Country "United States"
122 | Longitude -88.24338
123 | Internal 1
124 | Latitude 40.11642
125 | ]
126 | node [
127 | id 12
128 | label "Merit Univ of Michigan, Ann Arbor"
129 | Country "United States"
130 | Longitude -83.74088
131 | Internal 1
132 | Latitude 42.27756
133 | ]
134 | edge [
135 | source 0
136 | target 2
137 | id "e14"
138 | ]
139 | edge [
140 | source 0
141 | target 11
142 | id "e8"
143 | ]
144 | edge [
145 | source 0
146 | target 7
147 | id "e4"
148 | ]
149 | edge [
150 | source 1
151 | target 2
152 | id "e13"
153 | ]
154 | edge [
155 | source 1
156 | target 4
157 | id "e12"
158 | ]
159 | edge [
160 | source 3
161 | target 12
162 | id "e10"
163 | ]
164 | edge [
165 | source 4
166 | target 12
167 | id "e11"
168 | ]
169 | edge [
170 | source 5
171 | target 9
172 | id "e1"
173 | ]
174 | edge [
175 | source 5
176 | target 6
177 | id "e0"
178 | ]
179 | edge [
180 | source 6
181 | target 12
182 | LinkType "T1"
183 | LinkLabel "T1"
184 | ]
185 | edge [
186 | source 6
187 | target 7
188 | id "e2"
189 | ]
190 | edge [
191 | source 8
192 | target 9
193 | id "e5"
194 | ]
195 | edge [
196 | source 9
197 | target 11
198 | id "e6"
199 | ]
200 | edge [
201 | source 10
202 | target 11
203 | id "e7"
204 | ]
205 | edge [
206 | source 11
207 | target 12
208 | id "e9"
209 | ]
210 | ]
--------------------------------------------------------------------------------
/LB/router.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | import copy
7 |
8 | class router:
9 | def __init__(self, K_paths):
10 | self.K_paths = K_paths
11 | self.info = []
12 | self.state = []
13 | self.actions = []
14 | self.max_hop = 0
15 | self.rate_info = []
16 | self.local_rewards = []
17 | self.total_state = []
18 | self.total_rewards = []
19 |
20 | def reset(self):
21 | self.info = []
22 | self.state = []
23 | self.FedState = []
24 | self.actions = []
25 | self.max_hop = 0
26 | self.rate_info = []
27 | self.local_rewards = []
28 | self.total_state = []
29 | self.total_rewards = []
30 |
31 | def add_info(self, index, pathNum):
32 | self.info.append([index, pathNum])
33 |
34 | def add_state(self, part_state):
35 | self.state.append(part_state)
36 |
37 | def add_total_state(self, total_state):
38 | self.total_state.append(total_state)
39 |
40 | def add_FedState(self, state):
41 | new_state = copy.deepcopy(self.state[0])
42 | for i in range(len(state[0])):
43 | new_state.append(state[0][i])
44 | self.FedState.append(new_state)
45 |
46 | def add_action(self, actions):
47 | for i in range(len(actions)):
48 | # print(self.info[i][1])
49 | for j in range(self.K_paths - self.info[i][1]):
50 | actions[i][self.K_paths-1-j] = 0
51 | actionSum = sum(actions[i])
52 | if actionSum == 0:
53 | actions[i][0] = 1
54 | else:
55 | for j in range(len(actions[i])):
56 | actions[i][j] /= actionSum
57 | actions[i][j] = round(actions[i][j], 2)
58 | self.actions = actions
59 |
60 | def add_rateInfo(self, index, rate):
61 | self.rate_info.append([index, rate])
62 |
63 | def add_local_reward(self, reward):
64 | self.local_rewards.append(reward)
65 |
66 | def add_total_reward(self, total_reward):
67 | self.total_rewards.append(total_reward)
68 |
69 |
70 | def getInfo(self):
71 | return self.info
72 |
73 | def getLocalState(self):
74 | return self.state
75 |
76 | def getState(self):
77 | return self.total_state
78 |
79 | def getFedState(self):
80 | return self.FedState
81 |
82 | def getAction(self):
83 | return self.actions
84 |
85 | def getRateInfo(self):
86 | return self.rate_info
87 |
88 | def getLocalRewards(self):
89 | return self.local_rewards
90 |
91 | def getRewards(self):
92 | return self.total_rewards
93 |
94 | def getRewards_load(self):
95 | return self.load
--------------------------------------------------------------------------------
/LB/routingEnv.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 |
7 | import networkx as nx
8 | import numpy as np
9 | from decimal import Decimal
10 | from router import router
11 | from switch import switch
12 | import random
13 | import copy
14 |
15 |
16 | class routingEnv:
17 | """
18 | Attributes:
19 | miu: service rate
20 | edge_num: Number of edges in the network (bidirectional links)
21 | node_num: Number of routers in the network
22 | capacity: Router capacity
23 | """
24 |
25 | def __init__(self, seed):
26 |
27 | self.seed = seed
28 | np.random.seed(self.seed)
29 | random.seed(self.seed)
30 | G = nx.read_gml("Gridnet.gml")
31 | H = G.to_directed()
32 | adj = nx.adjacency_matrix(H).todense()
33 | topo = adj
34 | self.G = nx.DiGraph(topo)
35 | self.max_hop = nx.diameter(self.G) # Network Diameter
36 | self.edge_num = self.G.number_of_edges()
37 | self.node_num = self.G.number_of_nodes()
38 | self.candidate_path_num = 3
39 | self.flow_num = self.node_num # Total traffic volume in one step
40 | self.capacity = Decimal(10000)
41 | self.state_dim = []
42 | self.neighbors = []
43 | for i in range(self.node_num):
44 | informationNum = self.G.degree(i) / 2 + 1
45 | self.state_dim.append(6 * informationNum)
46 | self.neighbors.append(list(self.G.neighbors(i)))
47 | self.action_dim = self.candidate_path_num
48 | self.alpha = 0.7
49 | self.avg_rate = 500
50 | self.zip_dist(self.avg_rate, 3, 100) # Zipf distribution with a center at avg_rate and a step size of 100
51 | self.routers = []
52 | self.switches = []
53 |
54 | for i in range(self.node_num):
55 | self.routers.append(router(self.candidate_path_num))
56 | self.switches.append(switch(self.candidate_path_num))
57 | self.init_node_miu_load() # Initialization of router arrival rate
58 | self.generate_flows()
59 |
60 | def init_node_miu_load(self):
61 | for i in range(self.node_num):
62 | self.G.nodes[i]['miu'] = np.random.choice([1000, 2000, 3000])
63 | for (u, v, d) in self.G.edges(data=True):
64 | self.G.edges[(u, v)]['weight'] = 1 / self.G.nodes[v]['miu']
65 |
66 | def zip_dist(self, mean_rate, zip_len, interval):
67 | sknewness = 1
68 | self.candidate_rates = []
69 | sum_zip = 0
70 | for i in range(1, zip_len + 1):
71 | if (i % 2 == 0):
72 | rate = mean_rate + int(i / 2) * interval
73 | else:
74 | rate = mean_rate - int(i / 2) * interval
75 | self.candidate_rates.append(rate)
76 | sum_zip += i ** (-1 * sknewness)
77 | self.zip_prob = []
78 | for i in range(zip_len):
79 | prob = (i + 1) ** (-1 * sknewness) / sum_zip
80 | self.zip_prob.append(prob)
81 |
82 | def k_paths(self, src_node, dst_node):
83 | paths = list(nx.shortest_simple_paths(self.G, source=src_node, target=dst_node, weight='weight'))
84 | if len(paths) <= self.candidate_path_num:
85 | return paths
86 | K_paths = []
87 | for i in range(self.candidate_path_num):
88 | K_paths.append(paths[i])
89 | return K_paths
90 |
91 | def get_paths(self):
92 | self.paths = []
93 | for i in range(self.flow_num):
94 | paths = self.k_paths(self.src_nodes[i], self.dst_nodes[i])
95 | self.paths.append(paths)
96 |
97 | def reset(self, episode):
98 | """
99 | reset the env
100 | Returns: state
101 |
102 | """
103 | # Import the initial traffic
104 | self.assignment_flows(episode)
105 | # Find K paths for each flow
106 | self.get_paths()
107 | state = self.get_state()
108 | return state
109 |
110 | def generate_flows(self):
111 | self.src_nodes_init = []
112 | self.dst_nodes_init = []
113 | self.rates_init = []
114 | self.rates_change = []
115 | self.types_init = []
116 | for i in range(self.flow_num):
117 | src_node = i
118 | self.src_nodes_init.append(src_node)
119 | dst_node = np.random.randint(0, self.node_num)
120 | while (src_node == dst_node):
121 | dst_node = np.random.randint(0, self.node_num)
122 | self.dst_nodes_init.append(dst_node)
123 | rate = np.random.choice(self.candidate_rates, p=self.zip_prob)
124 | self.rates_init.append(rate)
125 | flow_type = np.random.choice([0, 1])
126 | self.types_init.append(flow_type)
127 |
128 | def assignment_flows(self, episode):
129 | """
130 | Assign the initialized flow information to the incoming flow information entering the network
131 |
132 | """
133 |
134 | self.src_nodes = []
135 | self.dst_nodes = []
136 | self.src_nodes = copy.deepcopy(self.src_nodes_init)
137 | self.dst_nodes = copy.deepcopy(self.dst_nodes_init)
138 | self.rates = []
139 | self.types = []
140 | self.types = copy.deepcopy(self.types_init)
141 | for i in range(self.flow_num):
142 | rate_init = self.rates_init[i]
143 | rate = np.clip(np.random.normal(loc=rate_init, scale=10), rate_init - 20, rate_init + 20)
144 | self.rates.append(rate)
145 |
146 | def add_flows(self):
147 | """
148 | Integrate the generated flows into the network topology
149 |
150 | """
151 |
152 | for node in range(self.node_num):
153 | Info = self.routers[node].getInfo()
154 | actions = self.routers[node].getAction()
155 | for j in range(len(Info)):
156 | index = Info[j][0] # Flow identifier to be processed
157 | action = actions[j]
158 | rates = []
159 | for k in range(Info[j][1]):
160 | rate = self.rates[index] * action[k]
161 | rates.append(rate)
162 | path = self.paths[index][k]
163 | for pathIndex in range(len(path)):
164 | pathNode = path[pathIndex]
165 | switch = self.switches[pathNode]
166 | if pathIndex == 0:
167 | switch.addInRate(index, k, rate)
168 | if pathIndex == len(path) - 1:
169 | next_node = -1
170 | else:
171 | next_node = path[pathIndex + 1]
172 | switch.addReminderPath(index, k, next_node) # Record the next hop
173 | self.routers[node].add_rateInfo(index, rates) # Store the splitting ratio for this flow
174 |
175 | for count in range(10):
176 | for node in range(self.node_num):
177 | switch = self.switches[node]
178 | lam = switch.getSumInrate()
179 | loss = self.loss(lam, node)
180 | for j in range(len(switch.InRate)):
181 | index = switch.InRate[j][0]
182 | InRate = switch.InRate[j][1]
183 | OutRate = InRate * (1 - loss)
184 | switch.addOutRate2(index, OutRate)
185 | for k in range(len(switch.reminderPath)):
186 | if index == switch.reminderPath[k][0]:
187 | next_node = switch.reminderPath[k][1]
188 | if next_node != -1:
189 | self.switches[next_node].addInRate2(index, OutRate)
190 |
191 | def get_reward(self):
192 | """
193 | Calculate the total network delay
194 | """
195 |
196 | st_rd = []
197 | st_rp = []
198 | for node in range(self.node_num):
199 | Info = self.routers[node].getInfo()
200 | RateInfo = self.routers[node].getRateInfo()
201 | for i in range(len(Info)): # Number of flows under this router
202 | index = Info[i][0] # Flow identifier to be processed
203 | path_delay = 0
204 | path_packet_ava = 0
205 | rate = self.rates[index]
206 | for j in range(Info[i][1]):
207 | path = self.paths[index][j] # One of the k paths
208 | single_path_delay = 0
209 | single_packet_ava = RateInfo[i][1][j]
210 | if (single_packet_ava == 0):
211 | continue
212 | for p in path:
213 | lam = self.switches[p].getSumInrate()
214 | delay = self.MMK(lam, node)
215 | if p == path[len(path) - 1]:
216 | single_packet_ava = self.switches[p].getOutRate(index, j)
217 | single_path_delay += delay
218 | path_delay += RateInfo[i][1][j] / rate * single_path_delay # Packet Weighted Delay
219 | path_packet_ava += single_packet_ava
220 | r_d = 1 - path_delay * self.G.nodes[node]['miu'] / (self.max_hop * float(self.capacity))
221 | r_p = path_packet_ava / rate
222 | if self.types[index] == 0:
223 | reward = r_d * self.alpha + r_p * (1 - self.alpha)
224 | else:
225 | reward = r_d * (1 - self.alpha) + r_p * self.alpha
226 | reward = round(reward, 2)
227 | self.routers[node].add_local_reward([reward])
228 | st_rd.append(r_d)
229 | st_rp.append(r_p)
230 | for node in range(self.node_num):
231 | sumRate = 0
232 | for neighbor in self.neighbors[node]:
233 | sumRate += self.rates[neighbor]
234 | neighborsReward = 0
235 | for neighbor in self.neighbors[node]:
236 | omega = self.rates[neighbor] / sumRate
237 | neighborsReward += self.routers[neighbor].getLocalRewards()[0][0] * omega
238 | total_reward = 0.6 * self.routers[node].getLocalRewards()[0][0] + 0.4 * neighborsReward
239 | total_reward = round(total_reward, 2)
240 | self.routers[node].add_total_reward([total_reward])
241 | return st_rd, st_rp
242 |
243 | def get_state(self):
244 | for i in range(self.node_num):
245 | self.routers[i].reset()
246 | self.switches[i].reset()
247 | for i in range(self.flow_num):
248 | index = self.src_nodes[i]
249 | state = []
250 | state.append(round(self.dst_nodes[i] / self.node_num, 2))
251 | state.append(round(self.rates[i] / self.avg_rate, 2))
252 | paths_num = len(self.paths[i])
253 | for j in range(paths_num):
254 | state.append(len(self.paths[i][j]) / self.max_hop)
255 | for j in range(self.candidate_path_num - paths_num):
256 | state.append(0)
257 | # add flow type
258 | state.append(self.types[i])
259 | self.routers[index].add_state(state)
260 | self.routers[index].add_info(i, paths_num)
261 | for i in range(self.node_num):
262 | total_state = []
263 | total_state += self.routers[i].getLocalState()[0]
264 | for neighbor in self.neighbors[i]:
265 | total_state += self.routers[neighbor].getLocalState()[0]
266 | self.routers[i].add_total_state(total_state)
267 | return self.routers
268 |
269 | def MMK(self, lam, node):
270 | """Calculate the delay for a single node"""
271 | rho = lam / self.G.nodes[node]['miu']
272 | rho = Decimal(rho)
273 | loss = self.loss(lam, node)
274 | if rho == 1:
275 | queue_length = self.capacity / 2
276 | else:
277 | queue_length = rho / (1 - rho) - (self.capacity + 1) * rho ** (self.capacity + 1) \
278 | / (1 - rho ** (self.capacity + 1))
279 | queue_length = float(queue_length)
280 | delay = queue_length / (lam * (1 - loss))
281 | return delay
282 |
283 | def loss(self, lam, node):
284 | """Calculate the packet loss rate for a single node"""
285 | rho = lam / self.G.nodes[node]['miu']
286 | rho = Decimal(rho)
287 | if rho == 1:
288 | loss = 1 / (self.capacity + 1)
289 | else:
290 | loss = ((1 - rho) * rho ** self.capacity) \
291 | / (1 - rho ** (self.capacity + 1))
292 | return float(loss)
293 |
294 | def step(self):
295 | """By obtaining actions from the agent, reintroduce each flow into the network,
296 | and obtain experimental metrics such as packet loss rate.
297 |
298 | Returns:
299 | routers: Relevant information of the router
300 | r_d: Reward value for latency
301 | r_p: Reward value for packet loss rate
302 | """
303 | self.add_flows()
304 | st_rd, st_rp = self.get_reward()
305 | self.change_flows()
306 | return self.routers, st_rd, st_rp, False
307 |
308 | def change_flows(self):
309 | """
310 | Adjust the arrival rate of a portion of flows with maximum delay at each step.
311 |
312 | """
313 | rewards = []
314 | for node in range(self.node_num):
315 | rewards.append([self.routers[node].getRewards()[0][0], node])
316 | rewards.sort(key=lambda x: x[0])
317 | for i in range(len(rewards)):
318 | if i <= len(rewards) / 2:
319 | self.rates[rewards[i][1]] -= self.rates[rewards[i][1]] * 0.01
320 | else:
321 | self.rates[rewards[i][1]] += self.rates[rewards[i][1]] * 0.01
322 |
323 | def store_action(self, index, action):
324 | self.routers[index].add_action(action)
325 |
326 |
--------------------------------------------------------------------------------
/LB/switch.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | class switch:
7 | def __init__(self, splitNum):
8 | self.reminderPath = []
9 | self.InRate = []
10 | self.OutRate = []
11 | self.splitNum = splitNum
12 |
13 | def reset(self):
14 | self.reminderPath = []
15 | self.InRate = []
16 | self.OutRate = []
17 |
18 | def addReminderPath(self, flowIndex, splitIndex, reminderPath):
19 | index = flowIndex * self.splitNum + splitIndex
20 | self.reminderPath.append([index, reminderPath])
21 |
22 | def addInRate(self, flowIndex, splitIndex, InRate):
23 | add = True
24 | index = flowIndex * self.splitNum + splitIndex
25 | for i in range(len(self.InRate)):
26 | if index == self.InRate[i][0]:
27 | self.InRate[i][1] = InRate
28 | add = False
29 | break
30 | if add:
31 | self.InRate.append([index, InRate])
32 |
33 | def addInRate2(self, index, InRate):
34 | add = True
35 | for i in range(len(self.InRate)):
36 | if index == self.InRate[i][0]:
37 | self.InRate[i][1] = InRate
38 | add = False
39 | break
40 | if add:
41 | self.InRate.append([index, InRate])
42 |
43 | def addOutRate(self, flowIndex, splitIndex, OutRate):
44 | index = flowIndex * self.splitNum + splitIndex
45 | self.OutRate.append([index, OutRate])
46 |
47 | def addOutRate2(self, index, OutRate):
48 | self.OutRate.append([index, OutRate])
49 |
50 | def getSumInrate(self):
51 | ans = 0
52 | for i in range(len(self.InRate)):
53 | ans += self.InRate[i][1]
54 | return ans
55 |
56 | def getOutRate(self, flowIndex, splitIndex):
57 | index = flowIndex * self.splitNum + splitIndex
58 | for i in range(len(self.OutRate)):
59 | if (self.OutRate[i][0] == index):
60 | return self.OutRate[i][1]
61 |
62 | def addEdgeRate(self, pathNode, next_pathNode, rate):
63 | self.G.edges[(pathNode, next_pathNode)]['load'] += rate
--------------------------------------------------------------------------------
/MA-TD3/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/MA-TD3/.idea/deployment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/MA-TD3/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/MA-TD3/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/MA-TD3/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/MA-TD3/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/MA-TD3/.idea/singleThread_TD3_flowtype.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/MA-TD3/Abilene.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "3/02/11"
3 | GeoLocation "US"
4 | GeoExtent "Country"
5 | Network "Abilene"
6 | Provenance "Primary"
7 | Access 0
8 | Source "http://www.internet2.edu/pubs/200502-IS-AN.pdf"
9 | Version "1.0"
10 | Type "REN"
11 | DateType "Historic"
12 | Backbone 1
13 | Commercial 0
14 | label "Abilene"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 0
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "02"
21 | LastAccess "3/02/11"
22 | Layer "IP"
23 | Creator "Topology Zoo Toolset"
24 | Developed 0
25 | Transit 0
26 | NetworkDate "2005_02"
27 | DateYear "2005"
28 | LastProcessed "2011_09_01"
29 | Testbed 0
30 | node [
31 | id 0
32 | label "New York"
33 | Country "United States"
34 | Longitude -74.00597
35 | Internal 1
36 | Latitude 40.71427
37 | ]
38 | node [
39 | id 1
40 | label "Chicago"
41 | Country "United States"
42 | Longitude -87.65005
43 | Internal 1
44 | Latitude 41.85003
45 | ]
46 | node [
47 | id 2
48 | label "Washington DC"
49 | Country "United States"
50 | Longitude -77.03637
51 | Internal 1
52 | Latitude 38.89511
53 | ]
54 | node [
55 | id 3
56 | label "Seattle"
57 | Country "United States"
58 | Longitude -122.33207
59 | Internal 1
60 | Latitude 47.60621
61 | ]
62 | node [
63 | id 4
64 | label "Sunnyvale"
65 | Country "United States"
66 | Longitude -122.03635
67 | Internal 1
68 | Latitude 37.36883
69 | ]
70 | node [
71 | id 5
72 | label "Los Angeles"
73 | Country "United States"
74 | Longitude -118.24368
75 | Internal 1
76 | Latitude 34.05223
77 | ]
78 | node [
79 | id 6
80 | label "Denver"
81 | Country "United States"
82 | Longitude -104.9847
83 | Internal 1
84 | Latitude 39.73915
85 | ]
86 | node [
87 | id 7
88 | label "Kansas City"
89 | Country "United States"
90 | Longitude -94.62746
91 | Internal 1
92 | Latitude 39.11417
93 | ]
94 | node [
95 | id 8
96 | label "Houston"
97 | Country "United States"
98 | Longitude -95.36327
99 | Internal 1
100 | Latitude 29.76328
101 | ]
102 | node [
103 | id 9
104 | label "Atlanta"
105 | Country "United States"
106 | Longitude -84.38798
107 | Internal 1
108 | Latitude 33.749
109 | ]
110 | node [
111 | id 10
112 | label "Indianapolis"
113 | Country "United States"
114 | Longitude -86.15804
115 | Internal 1
116 | Latitude 39.76838
117 | ]
118 | edge [
119 | source 0
120 | target 1
121 | LinkType "OC-192"
122 | LinkLabel "OC-192c"
123 | LinkNote "c"
124 | ]
125 | edge [
126 | source 0
127 | target 2
128 | LinkType "OC-192"
129 | LinkLabel "OC-192c"
130 | LinkNote "c"
131 | ]
132 | edge [
133 | source 1
134 | target 10
135 | LinkType "OC-192"
136 | LinkLabel "OC-192c"
137 | LinkNote "c"
138 | ]
139 | edge [
140 | source 2
141 | target 9
142 | LinkType "OC-192"
143 | LinkLabel "OC-192c"
144 | LinkNote "c"
145 | ]
146 | edge [
147 | source 3
148 | target 4
149 | LinkType "OC-192"
150 | LinkLabel "OC-192c"
151 | LinkNote "c"
152 | ]
153 | edge [
154 | source 3
155 | target 6
156 | LinkType "OC-192"
157 | LinkLabel "OC-192c"
158 | LinkNote "c"
159 | ]
160 | edge [
161 | source 4
162 | target 5
163 | LinkType "OC-192"
164 | LinkLabel "OC-192c"
165 | LinkNote "c"
166 | ]
167 | edge [
168 | source 4
169 | target 6
170 | LinkType "OC-192"
171 | LinkLabel "OC-192c"
172 | LinkNote "c"
173 | ]
174 | edge [
175 | source 5
176 | target 8
177 | LinkType "OC-192"
178 | LinkLabel "OC-192c"
179 | LinkNote "c"
180 | ]
181 | edge [
182 | source 6
183 | target 7
184 | LinkType "OC-192"
185 | LinkLabel "OC-192c"
186 | LinkNote "c"
187 | ]
188 | edge [
189 | source 7
190 | target 8
191 | LinkType "OC-192"
192 | LinkLabel "OC-192c"
193 | LinkNote "c"
194 | ]
195 | edge [
196 | source 7
197 | target 10
198 | LinkType "OC-192"
199 | LinkLabel "OC-192c"
200 | LinkNote "c"
201 | ]
202 | edge [
203 | source 8
204 | target 9
205 | LinkType "OC-192"
206 | LinkLabel "OC-192c"
207 | LinkNote "c"
208 | ]
209 | edge [
210 | source 9
211 | target 10
212 | LinkType "OC-192"
213 | LinkLabel "OC-192c"
214 | LinkNote "c"
215 | ]
216 | ]
217 |
--------------------------------------------------------------------------------
/MA-TD3/Claranet.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "19/10/10"
3 | GeoLocation "Europe"
4 | GeoExtent "Continent"
5 | Network "Claranet"
6 | Provenance "Primary"
7 | Note "Technically, Access is provided by Claranet SOHO, a division of Claranet."
8 | Source "http://noc.eu.clara.net/"
9 | Version "1.0"
10 | Type "COM"
11 | DateType "Dynamic"
12 | Backbone 1
13 | Commercial 0
14 | label "Claranet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "08"
21 | LastAccess "3/08/10"
22 | Access 1
23 | Layer "IP"
24 | Creator "Topology Zoo Toolset"
25 | Developed 0
26 | Transit 1
27 | NetworkDate "2010_08"
28 | DateYear "2010"
29 | LastProcessed "2011_09_01"
30 | Testbed 0
31 | node [
32 | id 0
33 | label "Faro"
34 | Country "Portugal"
35 | Longitude -7.93333
36 | Internal 1
37 | Latitude 37.01667
38 | ]
39 | node [
40 | id 1
41 | label "Madrid"
42 | Country "Spain"
43 | Longitude -3.70256
44 | Internal 1
45 | Latitude 40.4165
46 | ]
47 | node [
48 | id 2
49 | label "Porto"
50 | Country "Portugal"
51 | Longitude -8.61667
52 | Internal 1
53 | Latitude 41.15
54 | ]
55 | node [
56 | id 3
57 | label "Lisbon"
58 | Country "Portugal"
59 | Longitude -9.13333
60 | Internal 1
61 | Latitude 38.71667
62 | ]
63 | node [
64 | id 4
65 | label "Barcelona"
66 | Country "Spain"
67 | Longitude 2.15899
68 | Internal 1
69 | Latitude 41.38879
70 | ]
71 | node [
72 | id 5
73 | label "Manchester"
74 | Country "United Kingdom"
75 | Longitude -2.23743
76 | Internal 1
77 | Latitude 53.48095
78 | ]
79 | node [
80 | id 6
81 | label "New York"
82 | Country "United Kingdom"
83 | Longitude -0.14008
84 | Internal 1
85 | Latitude 53.07897
86 | ]
87 | node [
88 | id 7
89 | label "Amsterdam"
90 | Country "Netherlands"
91 | Longitude 4.88969
92 | Internal 1
93 | Latitude 52.37403
94 | ]
95 | node [
96 | id 8
97 | label "Eindhoven"
98 | Country "Netherlands"
99 | Longitude 5.47778
100 | Internal 1
101 | Latitude 51.44083
102 | ]
103 | node [
104 | id 9
105 | label "Berlin"
106 | Country "Germany"
107 | Longitude 13.41053
108 | Internal 1
109 | Latitude 52.52437
110 | ]
111 | node [
112 | id 10
113 | label "Frankfurt"
114 | Country "Germany"
115 | Longitude 8.68333
116 | Internal 1
117 | Latitude 50.11667
118 | ]
119 | node [
120 | id 11
121 | label "Munich"
122 | Country "Germany"
123 | Longitude 11.57549
124 | Internal 1
125 | Latitude 48.13743
126 | ]
127 | node [
128 | id 12
129 | label "Paris"
130 | Country "France"
131 | Longitude 2.3488
132 | Internal 1
133 | Latitude 48.85341
134 | ]
135 | node [
136 | id 13
137 | label "Rennes"
138 | Country "France"
139 | Longitude -1.68333
140 | Internal 1
141 | Latitude 48.08333
142 | ]
143 | node [
144 | id 14
145 | label "London"
146 | Country "United Kingdom"
147 | Longitude -0.12574
148 | Internal 1
149 | Latitude 51.50853
150 | ]
151 | edge [
152 | source 0
153 | target 3
154 | id "e15"
155 | ]
156 | edge [
157 | source 1
158 | target 3
159 | id "e16"
160 | ]
161 | edge [
162 | source 1
163 | target 4
164 | id "e17"
165 | ]
166 | edge [
167 | source 2
168 | target 3
169 | id "e14"
170 | ]
171 | edge [
172 | source 3
173 | target 14
174 | id "e13"
175 | ]
176 | edge [
177 | source 4
178 | target 12
179 | id "e8"
180 | ]
181 | edge [
182 | source 5
183 | target 14
184 | id "e11"
185 | ]
186 | edge [
187 | source 6
188 | target 14
189 | id "e12"
190 | ]
191 | edge [
192 | source 7
193 | target 8
194 | id "e0"
195 | ]
196 | edge [
197 | source 7
198 | target 10
199 | id "e1"
200 | ]
201 | edge [
202 | source 7
203 | target 14
204 | id "e2"
205 | ]
206 | edge [
207 | source 9
208 | target 10
209 | id "e3"
210 | ]
211 | edge [
212 | source 9
213 | target 11
214 | id "e4"
215 | ]
216 | edge [
217 | source 10
218 | target 11
219 | id "e5"
220 | ]
221 | edge [
222 | source 10
223 | target 12
224 | id "e6"
225 | ]
226 | edge [
227 | source 10
228 | target 14
229 | id "e7"
230 | ]
231 | edge [
232 | source 12
233 | target 13
234 | id "e9"
235 | ]
236 | edge [
237 | source 12
238 | target 14
239 | id "e10"
240 | ]
241 | ]
242 |
--------------------------------------------------------------------------------
/MA-TD3/Gridnet.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "14/01/11"
3 | GeoLocation "USA"
4 | GeoExtent "Country"
5 | Network "GridNet"
6 | Provenance "Secondary"
7 | Note "Owned by WorldCom - public data net. http://books.google.com.au/books?id=pw4EAAAAMBAJ&pg=PA24&lpg=PA24&dq=GridNet+Network&source=bl&ots=QrtyD7bAeG&sig=46WUmRkmTyaiQFcJ2IBv3KclZa8&hl=en&ei=SQTaTa2JCo7WtQOzoKWODA&sa=X&oi=book_result&ct=result&resnum=9&ved=0CFIQ6AEwCA#v=onepage&q=GridNet%20Network&f=false"
8 | Source "http://www.nthelp.com/images/gridnet.jpg"
9 | Version "1.0"
10 | Type "COM"
11 | DateType "Current"
12 | Backbone 1
13 | Commercial 0
14 | label "Gridnet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "01"
21 | LastAccess "14/01/11"
22 | Access 1
23 | Layer "IP"
24 | Creator "Topology Zoo Toolset"
25 | Developed 1
26 | Transit 0
27 | NetworkDate "2011_01"
28 | DateYear "2011"
29 | LastProcessed "2011_09_01"
30 | Testbed 0
31 | node [
32 | id 0
33 | label "Houston"
34 | Country "United States"
35 | Longitude -95.36327
36 | Internal 1
37 | Latitude 29.76328
38 | ]
39 | node [
40 | id 1
41 | label "San Francisco"
42 | Country "United States"
43 | Longitude -122.41942
44 | Internal 1
45 | Latitude 37.77493
46 | ]
47 | node [
48 | id 2
49 | label "Los Angeles"
50 | Country "United States"
51 | Longitude -118.24368
52 | Internal 1
53 | Latitude 34.05223
54 | ]
55 | node [
56 | id 3
57 | label "New York"
58 | Country "United States"
59 | Longitude -74.00597
60 | Internal 1
61 | Latitude 40.71427
62 | ]
63 | node [
64 | id 4
65 | label "Newark"
66 | Country "United States"
67 | Longitude -74.17237
68 | Internal 1
69 | Latitude 40.73566
70 | ]
71 | node [
72 | id 5
73 | label "Washington, DC"
74 | Country "United States"
75 | Longitude -77.03637
76 | Internal 1
77 | Latitude 38.89511
78 | ]
79 | node [
80 | id 6
81 | label "Atlanta"
82 | Country "United States"
83 | Longitude -84.38798
84 | Internal 1
85 | Latitude 33.749
86 | ]
87 | node [
88 | id 7
89 | label "Dallas"
90 | Country "United States"
91 | Longitude -96.80667
92 | Internal 1
93 | Latitude 32.78306
94 | ]
95 | node [
96 | id 8
97 | label "Miami"
98 | Country "United States"
99 | Longitude -80.19366
100 | Internal 1
101 | Latitude 25.77427
102 | ]
103 | edge [
104 | source 0
105 | target 8
106 | LinkType "DS-3"
107 | LinkLabel "45 Mbps DS-3"
108 | LinkNote "45 Mbps "
109 | ]
110 | edge [
111 | source 0
112 | target 2
113 | LinkType "DS-3"
114 | LinkLabel "45 Mbps DS-3"
115 | LinkNote "45 Mbps "
116 | ]
117 | edge [
118 | source 0
119 | target 3
120 | LinkType "DS-3"
121 | LinkLabel "45 Mbps DS-3"
122 | LinkNote "45 Mbps "
123 | ]
124 | edge [
125 | source 0
126 | target 7
127 | LinkType "DS-3"
128 | LinkLabel "45 Mbps DS-3"
129 | LinkNote "45 Mbps "
130 | ]
131 | edge [
132 | source 1
133 | target 2
134 | LinkType "DS-3"
135 | LinkLabel "45 Mbps DS-3"
136 | LinkNote "45 Mbps "
137 | ]
138 | edge [
139 | source 1
140 | target 4
141 | LinkType "DS-3"
142 | LinkLabel "45 Mbps DS-3"
143 | LinkNote "45 Mbps "
144 | ]
145 | edge [
146 | source 1
147 | target 5
148 | LinkType "DS-3"
149 | LinkLabel "45 Mbps DS-3"
150 | LinkNote "45 Mbps "
151 | ]
152 | edge [
153 | source 1
154 | target 6
155 | LinkType "DS-3"
156 | LinkLabel "45 Mbps DS-3"
157 | LinkNote "45 Mbps "
158 | ]
159 | edge [
160 | source 1
161 | target 7
162 | LinkType "DS-3"
163 | LinkLabel "45 Mbps DS-3"
164 | LinkNote "45 Mbps "
165 | ]
166 | edge [
167 | source 2
168 | target 3
169 | LinkType "DS-3"
170 | LinkLabel "45 Mbps DS-3"
171 | LinkNote "45 Mbps "
172 | ]
173 | edge [
174 | source 2
175 | target 8
176 | LinkType "DS-3"
177 | LinkLabel "45 Mbps DS-3"
178 | LinkNote "45 Mbps "
179 | ]
180 | edge [
181 | source 3
182 | target 8
183 | LinkType "DS-3"
184 | LinkLabel "45 Mbps DS-3"
185 | LinkNote "45 Mbps "
186 | ]
187 | edge [
188 | source 3
189 | target 4
190 | LinkType "DS-3"
191 | LinkLabel "45 Mbps DS-3"
192 | LinkNote "45 Mbps "
193 | ]
194 | edge [
195 | source 4
196 | target 5
197 | LinkType "DS-3"
198 | LinkLabel "45 Mbps DS-3"
199 | LinkNote "45 Mbps "
200 | ]
201 | edge [
202 | source 4
203 | target 6
204 | LinkType "DS-3"
205 | LinkLabel "45 Mbps DS-3"
206 | LinkNote "45 Mbps "
207 | ]
208 | edge [
209 | source 4
210 | target 7
211 | LinkType "DS-3"
212 | LinkLabel "45 Mbps DS-3"
213 | LinkNote "45 Mbps "
214 | ]
215 | edge [
216 | source 5
217 | target 6
218 | LinkType "DS-3"
219 | LinkLabel "45 Mbps DS-3"
220 | LinkNote "45 Mbps "
221 | ]
222 | edge [
223 | source 5
224 | target 7
225 | LinkType "DS-3"
226 | LinkLabel "45 Mbps DS-3"
227 | LinkNote "45 Mbps "
228 | ]
229 | edge [
230 | source 6
231 | target 8
232 | LinkType "DS-3"
233 | LinkLabel "45 Mbps DS-3"
234 | LinkNote "45 Mbps "
235 | ]
236 | edge [
237 | source 6
238 | target 7
239 | LinkType "DS-3"
240 | LinkLabel "45 Mbps DS-3"
241 | LinkNote "45 Mbps "
242 | ]
243 | ]
244 |
--------------------------------------------------------------------------------
/MA-TD3/NSF.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "14/01/11"
3 | GeoLocation "USA"
4 | GeoExtent "Country"
5 | Network "NSF"
6 | Provenance "Secondary"
7 | Access 0
8 | Source "http://www.nthelp.com/images/nsf.jpg"
9 | Version "1.0"
10 | Type "REN"
11 | DateType "Current"
12 | Backbone 1
13 | Commercial 0
14 | label "Nsfnet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "01"
21 | LastAccess "14/01/11"
22 | Layer "IP"
23 | Creator "Topology Zoo Toolset"
24 | Developed 1
25 | Transit 1
26 | NetworkDate "2011_01"
27 | DateYear "2011"
28 | LastProcessed "2011_09_01"
29 | Testbed 0
30 | node [
31 | id 0
32 | label "SEQSUINET, Rice University, Houston"
33 | Country "United States"
34 | Longitude -95.36327
35 | Internal 1
36 | Latitude 29.76328
37 | ]
38 | node [
39 | id 1
40 | label "Jon Von Neumann Center, Princeton, NJ"
41 | Country "United States"
42 | Longitude -74.65905
43 | Internal 1
44 | Latitude 40.34872
45 | ]
46 | node [
47 | id 2
48 | label "SURANET, Georgia Tech, Atlanta"
49 | Country "United States"
50 | Longitude -84.38798
51 | Internal 1
52 | Latitude 33.749
53 | ]
54 | node [
55 | id 3
56 | label "Pittsburgh Supercomputer Center"
57 | Country "United States"
58 | Longitude -79.99589
59 | Internal 1
60 | Latitude 40.44062
61 | ]
62 | node [
63 | id 4
64 | label "Cornell Theory Center, Ithaca NY"
65 | Country "United States"
66 | Longitude -76.49661
67 | Internal 1
68 | Latitude 42.44063
69 | ]
70 | node [
71 | id 5
72 | label "NorthWestNet, Seattle"
73 | Country "United States"
74 | Longitude -122.33207
75 | Internal 1
76 | Latitude 47.60621
77 | ]
78 | node [
79 | id 6
80 | label "BARRnet, Palo Alto"
81 | Country "United States"
82 | Longitude -122.14302
83 | Internal 1
84 | Latitude 37.44188
85 | ]
86 | node [
87 | id 7
88 | label "San Diego Supercomputer Center"
89 | Country "United States"
90 | Longitude -117.15726
91 | Internal 1
92 | Latitude 32.71533
93 | ]
94 | node [
95 | id 8
96 | label "Westnet, Salt Lake City"
97 | Country "United States"
98 | Longitude -111.89105
99 | Internal 1
100 | Latitude 40.76078
101 | ]
102 | node [
103 | id 9
104 | label "NCAR, Boulder"
105 | Country "United States"
106 | Longitude -105.27055
107 | Internal 1
108 | Latitude 40.01499
109 | ]
110 | node [
111 | id 10
112 | label "MIDnet, Lincoln, NE"
113 | Country "United States"
114 | Longitude -96.66696
115 | Internal 1
116 | Latitude 40.8
117 | ]
118 | node [
119 | id 11
120 | label "NCSA, University of Illinois, Champaign"
121 | Country "United States"
122 | Longitude -88.24338
123 | Internal 1
124 | Latitude 40.11642
125 | ]
126 | node [
127 | id 12
128 | label "Merit Univ of Michigan, Ann Arbor"
129 | Country "United States"
130 | Longitude -83.74088
131 | Internal 1
132 | Latitude 42.27756
133 | ]
134 | edge [
135 | source 0
136 | target 2
137 | id "e14"
138 | ]
139 | edge [
140 | source 0
141 | target 11
142 | id "e8"
143 | ]
144 | edge [
145 | source 0
146 | target 7
147 | id "e4"
148 | ]
149 | edge [
150 | source 1
151 | target 2
152 | id "e13"
153 | ]
154 | edge [
155 | source 1
156 | target 4
157 | id "e12"
158 | ]
159 | edge [
160 | source 3
161 | target 12
162 | id "e10"
163 | ]
164 | edge [
165 | source 4
166 | target 12
167 | id "e11"
168 | ]
169 | edge [
170 | source 5
171 | target 9
172 | id "e1"
173 | ]
174 | edge [
175 | source 5
176 | target 6
177 | id "e0"
178 | ]
179 | edge [
180 | source 6
181 | target 12
182 | LinkType "T1"
183 | LinkLabel "T1"
184 | ]
185 | edge [
186 | source 6
187 | target 7
188 | id "e2"
189 | ]
190 | edge [
191 | source 8
192 | target 9
193 | id "e5"
194 | ]
195 | edge [
196 | source 9
197 | target 11
198 | id "e6"
199 | ]
200 | edge [
201 | source 10
202 | target 11
203 | id "e7"
204 | ]
205 | edge [
206 | source 11
207 | target 12
208 | id "e9"
209 | ]
210 | ]
--------------------------------------------------------------------------------
/MA-TD3/router.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | import copy
7 |
8 | class router:
9 | def __init__(self, K_paths):
10 | self.K_paths = K_paths
11 | self.info = []
12 | self.state = []
13 | self.actions = []
14 | self.max_hop = 0
15 | self.rate_info = []
16 | self.local_rewards = []
17 | self.total_state = []
18 | self.total_rewards = []
19 |
20 | def reset(self):
21 | self.info = []
22 | self.state = []
23 | self.FedState = []
24 | self.actions = []
25 | self.max_hop = 0
26 | self.rate_info = []
27 | self.local_rewards = []
28 | self.total_state = []
29 | self.total_rewards = []
30 |
31 | def add_info(self, index, pathNum):
32 | self.info.append([index, pathNum])
33 |
34 | def add_state(self, part_state):
35 | self.state.append(part_state)
36 |
37 | def add_total_state(self, total_state):
38 | self.total_state.append(total_state)
39 |
40 | def add_FedState(self, state):
41 | new_state = copy.deepcopy(self.state[0])
42 | for i in range(len(state[0])):
43 | new_state.append(state[0][i])
44 | self.FedState.append(new_state)
45 |
46 | def add_action(self, actions):
47 | for i in range(len(actions)):
48 | for j in range(self.K_paths - self.info[i][1]):
49 | actions[i][self.K_paths-1-j] = 0
50 | actionSum = sum(actions[i])
51 | if actionSum == 0:
52 | actions[i][0] = 1
53 | else:
54 | for j in range(len(actions[i])):
55 | actions[i][j] /= actionSum
56 | actions[i][j] = round(actions[i][j], 2)
57 | self.actions = actions
58 |
59 | def add_rateInfo(self, index, rate):
60 | self.rate_info.append([index, rate])
61 |
62 | def add_local_reward(self, reward):
63 | self.local_rewards.append(reward)
64 |
65 | def add_total_reward(self, total_reward):
66 | self.total_rewards.append(total_reward)
67 |
68 |
69 | def getInfo(self):
70 | return self.info
71 |
72 | def getLocalState(self):
73 | return self.state
74 |
75 | def getState(self):
76 | return self.total_state
77 |
78 | def getFedState(self):
79 | return self.FedState
80 |
81 | def getAction(self):
82 | return self.actions
83 |
84 | def getRateInfo(self):
85 | return self.rate_info
86 |
87 | def getLocalRewards(self):
88 | return self.local_rewards
89 |
90 | def getRewards(self):
91 | return self.total_rewards
92 |
93 | def getRewards_load(self):
94 | return self.load
--------------------------------------------------------------------------------
/MA-TD3/switch.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | class switch:
7 | def __init__(self, splitNum):
8 | self.reminderPath = []
9 | self.InRate = []
10 | self.OutRate = []
11 | self.splitNum = splitNum
12 |
13 | def reset(self):
14 | self.reminderPath = []
15 | self.InRate = []
16 | self.OutRate = []
17 |
18 | def addReminderPath(self, flowIndex, splitIndex, reminderPath):
19 | index = flowIndex * self.splitNum + splitIndex
20 | self.reminderPath.append([index, reminderPath])
21 |
22 | def addInRate(self, flowIndex, splitIndex, InRate):
23 | add = True
24 | index = flowIndex * self.splitNum + splitIndex
25 | for i in range(len(self.InRate)):
26 | if index == self.InRate[i][0]:
27 | self.InRate[i][1] = InRate
28 | add = False
29 | break
30 | if add:
31 | self.InRate.append([index, InRate])
32 |
33 | def addInRate2(self, index, InRate):
34 | add = True
35 | for i in range(len(self.InRate)):
36 | if index == self.InRate[i][0]:
37 | self.InRate[i][1] = InRate
38 | add = False
39 | break
40 | if add:
41 | self.InRate.append([index, InRate])
42 |
43 | def addOutRate(self, flowIndex, splitIndex, OutRate):
44 | index = flowIndex * self.splitNum + splitIndex
45 | self.OutRate.append([index, OutRate])
46 |
47 | def addOutRate2(self, index, OutRate):
48 | self.OutRate.append([index, OutRate])
49 |
50 | def getSumInrate(self):
51 | ans = 0
52 | for i in range(len(self.InRate)):
53 | ans += self.InRate[i][1]
54 | return ans
55 |
56 | def getOutRate(self, flowIndex, splitIndex):
57 | index = flowIndex * self.splitNum + splitIndex
58 | for i in range(len(self.OutRate)):
59 | if (self.OutRate[i][0] == index):
60 | return self.OutRate[i][1]
61 |
62 | def addEdgeRate(self, pathNode, next_pathNode, rate):
63 | self.G.edges[(pathNode, next_pathNode)]['load'] += rate
--------------------------------------------------------------------------------
/Ours/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/Ours/.idea/.name:
--------------------------------------------------------------------------------
1 | ppo.py
--------------------------------------------------------------------------------
/Ours/.idea/deployment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/Ours/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Ours/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Ours/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Ours/.idea/singleThread_pponoTraj_flowtype.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Ours/Abilene.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "3/02/11"
3 | GeoLocation "US"
4 | GeoExtent "Country"
5 | Network "Abilene"
6 | Provenance "Primary"
7 | Access 0
8 | Source "http://www.internet2.edu/pubs/200502-IS-AN.pdf"
9 | Version "1.0"
10 | Type "REN"
11 | DateType "Historic"
12 | Backbone 1
13 | Commercial 0
14 | label "Abilene"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 0
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "02"
21 | LastAccess "3/02/11"
22 | Layer "IP"
23 | Creator "Topology Zoo Toolset"
24 | Developed 0
25 | Transit 0
26 | NetworkDate "2005_02"
27 | DateYear "2005"
28 | LastProcessed "2011_09_01"
29 | Testbed 0
30 | node [
31 | id 0
32 | label "New York"
33 | Country "United States"
34 | Longitude -74.00597
35 | Internal 1
36 | Latitude 40.71427
37 | ]
38 | node [
39 | id 1
40 | label "Chicago"
41 | Country "United States"
42 | Longitude -87.65005
43 | Internal 1
44 | Latitude 41.85003
45 | ]
46 | node [
47 | id 2
48 | label "Washington DC"
49 | Country "United States"
50 | Longitude -77.03637
51 | Internal 1
52 | Latitude 38.89511
53 | ]
54 | node [
55 | id 3
56 | label "Seattle"
57 | Country "United States"
58 | Longitude -122.33207
59 | Internal 1
60 | Latitude 47.60621
61 | ]
62 | node [
63 | id 4
64 | label "Sunnyvale"
65 | Country "United States"
66 | Longitude -122.03635
67 | Internal 1
68 | Latitude 37.36883
69 | ]
70 | node [
71 | id 5
72 | label "Los Angeles"
73 | Country "United States"
74 | Longitude -118.24368
75 | Internal 1
76 | Latitude 34.05223
77 | ]
78 | node [
79 | id 6
80 | label "Denver"
81 | Country "United States"
82 | Longitude -104.9847
83 | Internal 1
84 | Latitude 39.73915
85 | ]
86 | node [
87 | id 7
88 | label "Kansas City"
89 | Country "United States"
90 | Longitude -94.62746
91 | Internal 1
92 | Latitude 39.11417
93 | ]
94 | node [
95 | id 8
96 | label "Houston"
97 | Country "United States"
98 | Longitude -95.36327
99 | Internal 1
100 | Latitude 29.76328
101 | ]
102 | node [
103 | id 9
104 | label "Atlanta"
105 | Country "United States"
106 | Longitude -84.38798
107 | Internal 1
108 | Latitude 33.749
109 | ]
110 | node [
111 | id 10
112 | label "Indianapolis"
113 | Country "United States"
114 | Longitude -86.15804
115 | Internal 1
116 | Latitude 39.76838
117 | ]
118 | edge [
119 | source 0
120 | target 1
121 | LinkType "OC-192"
122 | LinkLabel "OC-192c"
123 | LinkNote "c"
124 | ]
125 | edge [
126 | source 0
127 | target 2
128 | LinkType "OC-192"
129 | LinkLabel "OC-192c"
130 | LinkNote "c"
131 | ]
132 | edge [
133 | source 1
134 | target 10
135 | LinkType "OC-192"
136 | LinkLabel "OC-192c"
137 | LinkNote "c"
138 | ]
139 | edge [
140 | source 2
141 | target 9
142 | LinkType "OC-192"
143 | LinkLabel "OC-192c"
144 | LinkNote "c"
145 | ]
146 | edge [
147 | source 3
148 | target 4
149 | LinkType "OC-192"
150 | LinkLabel "OC-192c"
151 | LinkNote "c"
152 | ]
153 | edge [
154 | source 3
155 | target 6
156 | LinkType "OC-192"
157 | LinkLabel "OC-192c"
158 | LinkNote "c"
159 | ]
160 | edge [
161 | source 4
162 | target 5
163 | LinkType "OC-192"
164 | LinkLabel "OC-192c"
165 | LinkNote "c"
166 | ]
167 | edge [
168 | source 4
169 | target 6
170 | LinkType "OC-192"
171 | LinkLabel "OC-192c"
172 | LinkNote "c"
173 | ]
174 | edge [
175 | source 5
176 | target 8
177 | LinkType "OC-192"
178 | LinkLabel "OC-192c"
179 | LinkNote "c"
180 | ]
181 | edge [
182 | source 6
183 | target 7
184 | LinkType "OC-192"
185 | LinkLabel "OC-192c"
186 | LinkNote "c"
187 | ]
188 | edge [
189 | source 7
190 | target 8
191 | LinkType "OC-192"
192 | LinkLabel "OC-192c"
193 | LinkNote "c"
194 | ]
195 | edge [
196 | source 7
197 | target 10
198 | LinkType "OC-192"
199 | LinkLabel "OC-192c"
200 | LinkNote "c"
201 | ]
202 | edge [
203 | source 8
204 | target 9
205 | LinkType "OC-192"
206 | LinkLabel "OC-192c"
207 | LinkNote "c"
208 | ]
209 | edge [
210 | source 9
211 | target 10
212 | LinkType "OC-192"
213 | LinkLabel "OC-192c"
214 | LinkNote "c"
215 | ]
216 | ]
217 |
--------------------------------------------------------------------------------
/Ours/Claranet.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "19/10/10"
3 | GeoLocation "Europe"
4 | GeoExtent "Continent"
5 | Network "Claranet"
6 | Provenance "Primary"
7 | Note "Technically, Access is provided by Claranet SOHO, a division of Claranet."
8 | Source "http://noc.eu.clara.net/"
9 | Version "1.0"
10 | Type "COM"
11 | DateType "Dynamic"
12 | Backbone 1
13 | Commercial 0
14 | label "Claranet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "08"
21 | LastAccess "3/08/10"
22 | Access 1
23 | Layer "IP"
24 | Creator "Topology Zoo Toolset"
25 | Developed 0
26 | Transit 1
27 | NetworkDate "2010_08"
28 | DateYear "2010"
29 | LastProcessed "2011_09_01"
30 | Testbed 0
31 | node [
32 | id 0
33 | label "Faro"
34 | Country "Portugal"
35 | Longitude -7.93333
36 | Internal 1
37 | Latitude 37.01667
38 | ]
39 | node [
40 | id 1
41 | label "Madrid"
42 | Country "Spain"
43 | Longitude -3.70256
44 | Internal 1
45 | Latitude 40.4165
46 | ]
47 | node [
48 | id 2
49 | label "Porto"
50 | Country "Portugal"
51 | Longitude -8.61667
52 | Internal 1
53 | Latitude 41.15
54 | ]
55 | node [
56 | id 3
57 | label "Lisbon"
58 | Country "Portugal"
59 | Longitude -9.13333
60 | Internal 1
61 | Latitude 38.71667
62 | ]
63 | node [
64 | id 4
65 | label "Barcelona"
66 | Country "Spain"
67 | Longitude 2.15899
68 | Internal 1
69 | Latitude 41.38879
70 | ]
71 | node [
72 | id 5
73 | label "Manchester"
74 | Country "United Kingdom"
75 | Longitude -2.23743
76 | Internal 1
77 | Latitude 53.48095
78 | ]
79 | node [
80 | id 6
81 | label "New York"
82 | Country "United Kingdom"
83 | Longitude -0.14008
84 | Internal 1
85 | Latitude 53.07897
86 | ]
87 | node [
88 | id 7
89 | label "Amsterdam"
90 | Country "Netherlands"
91 | Longitude 4.88969
92 | Internal 1
93 | Latitude 52.37403
94 | ]
95 | node [
96 | id 8
97 | label "Eindhoven"
98 | Country "Netherlands"
99 | Longitude 5.47778
100 | Internal 1
101 | Latitude 51.44083
102 | ]
103 | node [
104 | id 9
105 | label "Berlin"
106 | Country "Germany"
107 | Longitude 13.41053
108 | Internal 1
109 | Latitude 52.52437
110 | ]
111 | node [
112 | id 10
113 | label "Frankfurt"
114 | Country "Germany"
115 | Longitude 8.68333
116 | Internal 1
117 | Latitude 50.11667
118 | ]
119 | node [
120 | id 11
121 | label "Munich"
122 | Country "Germany"
123 | Longitude 11.57549
124 | Internal 1
125 | Latitude 48.13743
126 | ]
127 | node [
128 | id 12
129 | label "Paris"
130 | Country "France"
131 | Longitude 2.3488
132 | Internal 1
133 | Latitude 48.85341
134 | ]
135 | node [
136 | id 13
137 | label "Rennes"
138 | Country "France"
139 | Longitude -1.68333
140 | Internal 1
141 | Latitude 48.08333
142 | ]
143 | node [
144 | id 14
145 | label "London"
146 | Country "United Kingdom"
147 | Longitude -0.12574
148 | Internal 1
149 | Latitude 51.50853
150 | ]
151 | edge [
152 | source 0
153 | target 3
154 | id "e15"
155 | ]
156 | edge [
157 | source 1
158 | target 3
159 | id "e16"
160 | ]
161 | edge [
162 | source 1
163 | target 4
164 | id "e17"
165 | ]
166 | edge [
167 | source 2
168 | target 3
169 | id "e14"
170 | ]
171 | edge [
172 | source 3
173 | target 14
174 | id "e13"
175 | ]
176 | edge [
177 | source 4
178 | target 12
179 | id "e8"
180 | ]
181 | edge [
182 | source 5
183 | target 14
184 | id "e11"
185 | ]
186 | edge [
187 | source 6
188 | target 14
189 | id "e12"
190 | ]
191 | edge [
192 | source 7
193 | target 8
194 | id "e0"
195 | ]
196 | edge [
197 | source 7
198 | target 10
199 | id "e1"
200 | ]
201 | edge [
202 | source 7
203 | target 14
204 | id "e2"
205 | ]
206 | edge [
207 | source 9
208 | target 10
209 | id "e3"
210 | ]
211 | edge [
212 | source 9
213 | target 11
214 | id "e4"
215 | ]
216 | edge [
217 | source 10
218 | target 11
219 | id "e5"
220 | ]
221 | edge [
222 | source 10
223 | target 12
224 | id "e6"
225 | ]
226 | edge [
227 | source 10
228 | target 14
229 | id "e7"
230 | ]
231 | edge [
232 | source 12
233 | target 13
234 | id "e9"
235 | ]
236 | edge [
237 | source 12
238 | target 14
239 | id "e10"
240 | ]
241 | ]
242 |
--------------------------------------------------------------------------------
/Ours/Gridnet.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "14/01/11"
3 | GeoLocation "USA"
4 | GeoExtent "Country"
5 | Network "GridNet"
6 | Provenance "Secondary"
7 | Note "Owned by WorldCom - public data net. http://books.google.com.au/books?id=pw4EAAAAMBAJ&pg=PA24&lpg=PA24&dq=GridNet+Network&source=bl&ots=QrtyD7bAeG&sig=46WUmRkmTyaiQFcJ2IBv3KclZa8&hl=en&ei=SQTaTa2JCo7WtQOzoKWODA&sa=X&oi=book_result&ct=result&resnum=9&ved=0CFIQ6AEwCA#v=onepage&q=GridNet%20Network&f=false"
8 | Source "http://www.nthelp.com/images/gridnet.jpg"
9 | Version "1.0"
10 | Type "COM"
11 | DateType "Current"
12 | Backbone 1
13 | Commercial 0
14 | label "Gridnet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "01"
21 | LastAccess "14/01/11"
22 | Access 1
23 | Layer "IP"
24 | Creator "Topology Zoo Toolset"
25 | Developed 1
26 | Transit 0
27 | NetworkDate "2011_01"
28 | DateYear "2011"
29 | LastProcessed "2011_09_01"
30 | Testbed 0
31 | node [
32 | id 0
33 | label "Houston"
34 | Country "United States"
35 | Longitude -95.36327
36 | Internal 1
37 | Latitude 29.76328
38 | ]
39 | node [
40 | id 1
41 | label "San Francisco"
42 | Country "United States"
43 | Longitude -122.41942
44 | Internal 1
45 | Latitude 37.77493
46 | ]
47 | node [
48 | id 2
49 | label "Los Angeles"
50 | Country "United States"
51 | Longitude -118.24368
52 | Internal 1
53 | Latitude 34.05223
54 | ]
55 | node [
56 | id 3
57 | label "New York"
58 | Country "United States"
59 | Longitude -74.00597
60 | Internal 1
61 | Latitude 40.71427
62 | ]
63 | node [
64 | id 4
65 | label "Newark"
66 | Country "United States"
67 | Longitude -74.17237
68 | Internal 1
69 | Latitude 40.73566
70 | ]
71 | node [
72 | id 5
73 | label "Washington, DC"
74 | Country "United States"
75 | Longitude -77.03637
76 | Internal 1
77 | Latitude 38.89511
78 | ]
79 | node [
80 | id 6
81 | label "Atlanta"
82 | Country "United States"
83 | Longitude -84.38798
84 | Internal 1
85 | Latitude 33.749
86 | ]
87 | node [
88 | id 7
89 | label "Dallas"
90 | Country "United States"
91 | Longitude -96.80667
92 | Internal 1
93 | Latitude 32.78306
94 | ]
95 | node [
96 | id 8
97 | label "Miami"
98 | Country "United States"
99 | Longitude -80.19366
100 | Internal 1
101 | Latitude 25.77427
102 | ]
103 | edge [
104 | source 0
105 | target 8
106 | LinkType "DS-3"
107 | LinkLabel "45 Mbps DS-3"
108 | LinkNote "45 Mbps "
109 | ]
110 | edge [
111 | source 0
112 | target 2
113 | LinkType "DS-3"
114 | LinkLabel "45 Mbps DS-3"
115 | LinkNote "45 Mbps "
116 | ]
117 | edge [
118 | source 0
119 | target 3
120 | LinkType "DS-3"
121 | LinkLabel "45 Mbps DS-3"
122 | LinkNote "45 Mbps "
123 | ]
124 | edge [
125 | source 0
126 | target 7
127 | LinkType "DS-3"
128 | LinkLabel "45 Mbps DS-3"
129 | LinkNote "45 Mbps "
130 | ]
131 | edge [
132 | source 1
133 | target 2
134 | LinkType "DS-3"
135 | LinkLabel "45 Mbps DS-3"
136 | LinkNote "45 Mbps "
137 | ]
138 | edge [
139 | source 1
140 | target 4
141 | LinkType "DS-3"
142 | LinkLabel "45 Mbps DS-3"
143 | LinkNote "45 Mbps "
144 | ]
145 | edge [
146 | source 1
147 | target 5
148 | LinkType "DS-3"
149 | LinkLabel "45 Mbps DS-3"
150 | LinkNote "45 Mbps "
151 | ]
152 | edge [
153 | source 1
154 | target 6
155 | LinkType "DS-3"
156 | LinkLabel "45 Mbps DS-3"
157 | LinkNote "45 Mbps "
158 | ]
159 | edge [
160 | source 1
161 | target 7
162 | LinkType "DS-3"
163 | LinkLabel "45 Mbps DS-3"
164 | LinkNote "45 Mbps "
165 | ]
166 | edge [
167 | source 2
168 | target 3
169 | LinkType "DS-3"
170 | LinkLabel "45 Mbps DS-3"
171 | LinkNote "45 Mbps "
172 | ]
173 | edge [
174 | source 2
175 | target 8
176 | LinkType "DS-3"
177 | LinkLabel "45 Mbps DS-3"
178 | LinkNote "45 Mbps "
179 | ]
180 | edge [
181 | source 3
182 | target 8
183 | LinkType "DS-3"
184 | LinkLabel "45 Mbps DS-3"
185 | LinkNote "45 Mbps "
186 | ]
187 | edge [
188 | source 3
189 | target 4
190 | LinkType "DS-3"
191 | LinkLabel "45 Mbps DS-3"
192 | LinkNote "45 Mbps "
193 | ]
194 | edge [
195 | source 4
196 | target 5
197 | LinkType "DS-3"
198 | LinkLabel "45 Mbps DS-3"
199 | LinkNote "45 Mbps "
200 | ]
201 | edge [
202 | source 4
203 | target 6
204 | LinkType "DS-3"
205 | LinkLabel "45 Mbps DS-3"
206 | LinkNote "45 Mbps "
207 | ]
208 | edge [
209 | source 4
210 | target 7
211 | LinkType "DS-3"
212 | LinkLabel "45 Mbps DS-3"
213 | LinkNote "45 Mbps "
214 | ]
215 | edge [
216 | source 5
217 | target 6
218 | LinkType "DS-3"
219 | LinkLabel "45 Mbps DS-3"
220 | LinkNote "45 Mbps "
221 | ]
222 | edge [
223 | source 5
224 | target 7
225 | LinkType "DS-3"
226 | LinkLabel "45 Mbps DS-3"
227 | LinkNote "45 Mbps "
228 | ]
229 | edge [
230 | source 6
231 | target 8
232 | LinkType "DS-3"
233 | LinkLabel "45 Mbps DS-3"
234 | LinkNote "45 Mbps "
235 | ]
236 | edge [
237 | source 6
238 | target 7
239 | LinkType "DS-3"
240 | LinkLabel "45 Mbps DS-3"
241 | LinkNote "45 Mbps "
242 | ]
243 | ]
244 |
--------------------------------------------------------------------------------
/Ours/NSF.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "14/01/11"
3 | GeoLocation "USA"
4 | GeoExtent "Country"
5 | Network "NSF"
6 | Provenance "Secondary"
7 | Access 0
8 | Source "http://www.nthelp.com/images/nsf.jpg"
9 | Version "1.0"
10 | Type "REN"
11 | DateType "Current"
12 | Backbone 1
13 | Commercial 0
14 | label "Nsfnet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "01"
21 | LastAccess "14/01/11"
22 | Layer "IP"
23 | Creator "Topology Zoo Toolset"
24 | Developed 1
25 | Transit 1
26 | NetworkDate "2011_01"
27 | DateYear "2011"
28 | LastProcessed "2011_09_01"
29 | Testbed 0
30 | node [
31 | id 0
32 | label "SEQSUINET, Rice University, Houston"
33 | Country "United States"
34 | Longitude -95.36327
35 | Internal 1
36 | Latitude 29.76328
37 | ]
38 | node [
39 | id 1
40 | label "Jon Von Neumann Center, Princeton, NJ"
41 | Country "United States"
42 | Longitude -74.65905
43 | Internal 1
44 | Latitude 40.34872
45 | ]
46 | node [
47 | id 2
48 | label "SURANET, Georgia Tech, Atlanta"
49 | Country "United States"
50 | Longitude -84.38798
51 | Internal 1
52 | Latitude 33.749
53 | ]
54 | node [
55 | id 3
56 | label "Pittsburgh Supercomputer Center"
57 | Country "United States"
58 | Longitude -79.99589
59 | Internal 1
60 | Latitude 40.44062
61 | ]
62 | node [
63 | id 4
64 | label "Cornell Theory Center, Ithaca NY"
65 | Country "United States"
66 | Longitude -76.49661
67 | Internal 1
68 | Latitude 42.44063
69 | ]
70 | node [
71 | id 5
72 | label "NorthWestNet, Seattle"
73 | Country "United States"
74 | Longitude -122.33207
75 | Internal 1
76 | Latitude 47.60621
77 | ]
78 | node [
79 | id 6
80 | label "BARRnet, Palo Alto"
81 | Country "United States"
82 | Longitude -122.14302
83 | Internal 1
84 | Latitude 37.44188
85 | ]
86 | node [
87 | id 7
88 | label "San Diego Supercomputer Center"
89 | Country "United States"
90 | Longitude -117.15726
91 | Internal 1
92 | Latitude 32.71533
93 | ]
94 | node [
95 | id 8
96 | label "Westnet, Salt Lake City"
97 | Country "United States"
98 | Longitude -111.89105
99 | Internal 1
100 | Latitude 40.76078
101 | ]
102 | node [
103 | id 9
104 | label "NCAR, Boulder"
105 | Country "United States"
106 | Longitude -105.27055
107 | Internal 1
108 | Latitude 40.01499
109 | ]
110 | node [
111 | id 10
112 | label "MIDnet, Lincoln, NE"
113 | Country "United States"
114 | Longitude -96.66696
115 | Internal 1
116 | Latitude 40.8
117 | ]
118 | node [
119 | id 11
120 | label "NCSA, University of Illinois, Champaign"
121 | Country "United States"
122 | Longitude -88.24338
123 | Internal 1
124 | Latitude 40.11642
125 | ]
126 | node [
127 | id 12
128 | label "Merit Univ of Michigan, Ann Arbor"
129 | Country "United States"
130 | Longitude -83.74088
131 | Internal 1
132 | Latitude 42.27756
133 | ]
134 | edge [
135 | source 0
136 | target 2
137 | id "e14"
138 | ]
139 | edge [
140 | source 0
141 | target 11
142 | id "e8"
143 | ]
144 | edge [
145 | source 0
146 | target 7
147 | id "e4"
148 | ]
149 | edge [
150 | source 1
151 | target 2
152 | id "e13"
153 | ]
154 | edge [
155 | source 1
156 | target 4
157 | id "e12"
158 | ]
159 | edge [
160 | source 3
161 | target 12
162 | id "e10"
163 | ]
164 | edge [
165 | source 4
166 | target 12
167 | id "e11"
168 | ]
169 | edge [
170 | source 5
171 | target 9
172 | id "e1"
173 | ]
174 | edge [
175 | source 5
176 | target 6
177 | id "e0"
178 | ]
179 | edge [
180 | source 6
181 | target 12
182 | LinkType "T1"
183 | LinkLabel "T1"
184 | ]
185 | edge [
186 | source 6
187 | target 7
188 | id "e2"
189 | ]
190 | edge [
191 | source 8
192 | target 9
193 | id "e5"
194 | ]
195 | edge [
196 | source 9
197 | target 11
198 | id "e6"
199 | ]
200 | edge [
201 | source 10
202 | target 11
203 | id "e7"
204 | ]
205 | edge [
206 | source 11
207 | target 12
208 | id "e9"
209 | ]
210 | ]
--------------------------------------------------------------------------------
/Ours/router.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | import copy
7 |
8 | class router:
9 | def __init__(self, K_paths):
10 | self.K_paths = K_paths
11 | self.info = []
12 | self.state = []
13 | self.actions = []
14 | self.max_hop = 0
15 | self.rate_info = []
16 | self.local_rewards = []
17 | self.total_state = []
18 | self.total_rewards = []
19 |
20 | def reset(self):
21 | self.info = []
22 | self.state = []
23 | self.FedState = []
24 | self.actions = []
25 | self.max_hop = 0
26 | self.rate_info = []
27 | self.local_rewards = []
28 | self.total_state = []
29 | self.total_rewards = []
30 |
31 | def add_info(self, index, pathNum):
32 | self.info.append([index, pathNum])
33 |
34 | def add_state(self, part_state):
35 | self.state.append(part_state)
36 |
37 | def add_total_state(self, total_state):
38 | self.total_state.append(total_state)
39 |
40 | def add_FedState(self, state):
41 | new_state = copy.deepcopy(self.state[0])
42 | for i in range(len(state[0])):
43 | new_state.append(state[0][i])
44 | self.FedState.append(new_state)
45 |
46 | def add_action(self, actions):
47 | for i in range(len(actions)):
48 | for j in range(self.K_paths - self.info[i][1]):
49 | actions[i][self.K_paths-1-j] = 0
50 | actionSum = sum(actions[i])
51 | if actionSum == 0:
52 | actions[i][0] = 1
53 | else:
54 | for j in range(len(actions[i])):
55 | actions[i][j] /= actionSum
56 | actions[i][j] = round(actions[i][j], 2)
57 | self.actions = actions
58 |
59 | def add_rateInfo(self, index, rate):
60 | self.rate_info.append([index, rate])
61 |
62 | def add_local_reward(self, reward):
63 | self.local_rewards.append(reward)
64 |
65 | def add_total_reward(self, total_reward):
66 | self.total_rewards.append(total_reward)
67 |
68 |
69 | def getInfo(self):
70 | return self.info
71 |
72 | def getLocalState(self):
73 | return self.state
74 |
75 | def getState(self):
76 | return self.total_state
77 |
78 | def getFedState(self):
79 | return self.FedState
80 |
81 | def getAction(self):
82 | return self.actions
83 |
84 | def getRateInfo(self):
85 | return self.rate_info
86 |
87 | def getLocalRewards(self):
88 | return self.local_rewards
89 |
90 | def getRewards(self):
91 | return self.total_rewards
92 |
93 | def getRewards_load(self):
94 | return self.load
--------------------------------------------------------------------------------
/Ours/switch.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | class switch:
7 | def __init__(self, splitNum):
8 | self.reminderPath = []
9 | self.InRate = []
10 | self.OutRate = []
11 | self.splitNum = splitNum
12 |
13 | def reset(self):
14 | self.reminderPath = []
15 | self.InRate = []
16 | self.OutRate = []
17 |
18 | def addReminderPath(self, flowIndex, splitIndex, reminderPath):
19 | index = flowIndex * self.splitNum + splitIndex
20 | self.reminderPath.append([index, reminderPath])
21 |
22 | def addInRate(self, flowIndex, splitIndex, InRate):
23 | add = True
24 | index = flowIndex * self.splitNum + splitIndex # Multiply the flow identifier by the partition number
25 | for i in range(len(self.InRate)):
26 | if index == self.InRate[i][0]:
27 | self.InRate[i][1] = InRate
28 | add = False
29 | break
30 | if add:
31 | self.InRate.append([index, InRate])
32 |
33 | def addInRate2(self, index, InRate):
34 | add = True
35 | for i in range(len(self.InRate)):
36 | if index == self.InRate[i][0]:
37 | self.InRate[i][1] = InRate
38 | add = False
39 | break
40 | if add:
41 | self.InRate.append([index, InRate])
42 |
43 | def addOutRate(self, flowIndex, splitIndex, OutRate):
44 | index = flowIndex * self.splitNum + splitIndex
45 | self.OutRate.append([index, OutRate])
46 |
47 | def addOutRate2(self, index, OutRate):
48 | self.OutRate.append([index, OutRate])
49 |
50 | def getSumInrate(self):
51 | ans = 0
52 | for i in range(len(self.InRate)):
53 | ans += self.InRate[i][1]
54 | return ans
55 |
56 | def getOutRate(self, flowIndex, splitIndex):
57 | index = flowIndex * self.splitNum + splitIndex
58 | for i in range(len(self.OutRate)):
59 | if (self.OutRate[i][0] == index):
60 | return self.OutRate[i][1]
61 |
62 | def addEdgeRate(self, pathNode, next_pathNode, rate):
63 | self.G.edges[(pathNode, next_pathNode)]['load'] += rate
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Scalable QoS-Aware Multipath Routing in Hybrid Knowledge-Defined Networking with Multi-Agent Deep Reinforcement Learning
2 |
3 | Yang Xiao, Ying Yang, Huihan Yu, Jun Liu
4 |
5 | Intelligent Networking Group @ Intelligent Perception and Computing Center
6 |
7 | School of Artificial Intelligence, Beijing University of Posts and Telecommunications
8 |
9 | Email: zackxy@bupt.edu.cn (Yang Xiao)
10 |
--------------------------------------------------------------------------------
/RoundRobin/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/RoundRobin/.idea/RoundRobin.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/RoundRobin/.idea/deployment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/RoundRobin/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/RoundRobin/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/RoundRobin/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/RoundRobin/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/RoundRobin/Abilene.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "3/02/11"
3 | GeoLocation "US"
4 | GeoExtent "Country"
5 | Network "Abilene"
6 | Provenance "Primary"
7 | Access 0
8 | Source "http://www.internet2.edu/pubs/200502-IS-AN.pdf"
9 | Version "1.0"
10 | Type "REN"
11 | DateType "Historic"
12 | Backbone 1
13 | Commercial 0
14 | label "Abilene"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 0
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "02"
21 | LastAccess "3/02/11"
22 | Layer "IP"
23 | Creator "Topology Zoo Toolset"
24 | Developed 0
25 | Transit 0
26 | NetworkDate "2005_02"
27 | DateYear "2005"
28 | LastProcessed "2011_09_01"
29 | Testbed 0
30 | node [
31 | id 0
32 | label "New York"
33 | Country "United States"
34 | Longitude -74.00597
35 | Internal 1
36 | Latitude 40.71427
37 | ]
38 | node [
39 | id 1
40 | label "Chicago"
41 | Country "United States"
42 | Longitude -87.65005
43 | Internal 1
44 | Latitude 41.85003
45 | ]
46 | node [
47 | id 2
48 | label "Washington DC"
49 | Country "United States"
50 | Longitude -77.03637
51 | Internal 1
52 | Latitude 38.89511
53 | ]
54 | node [
55 | id 3
56 | label "Seattle"
57 | Country "United States"
58 | Longitude -122.33207
59 | Internal 1
60 | Latitude 47.60621
61 | ]
62 | node [
63 | id 4
64 | label "Sunnyvale"
65 | Country "United States"
66 | Longitude -122.03635
67 | Internal 1
68 | Latitude 37.36883
69 | ]
70 | node [
71 | id 5
72 | label "Los Angeles"
73 | Country "United States"
74 | Longitude -118.24368
75 | Internal 1
76 | Latitude 34.05223
77 | ]
78 | node [
79 | id 6
80 | label "Denver"
81 | Country "United States"
82 | Longitude -104.9847
83 | Internal 1
84 | Latitude 39.73915
85 | ]
86 | node [
87 | id 7
88 | label "Kansas City"
89 | Country "United States"
90 | Longitude -94.62746
91 | Internal 1
92 | Latitude 39.11417
93 | ]
94 | node [
95 | id 8
96 | label "Houston"
97 | Country "United States"
98 | Longitude -95.36327
99 | Internal 1
100 | Latitude 29.76328
101 | ]
102 | node [
103 | id 9
104 | label "Atlanta"
105 | Country "United States"
106 | Longitude -84.38798
107 | Internal 1
108 | Latitude 33.749
109 | ]
110 | node [
111 | id 10
112 | label "Indianapolis"
113 | Country "United States"
114 | Longitude -86.15804
115 | Internal 1
116 | Latitude 39.76838
117 | ]
118 | edge [
119 | source 0
120 | target 1
121 | LinkType "OC-192"
122 | LinkLabel "OC-192c"
123 | LinkNote "c"
124 | ]
125 | edge [
126 | source 0
127 | target 2
128 | LinkType "OC-192"
129 | LinkLabel "OC-192c"
130 | LinkNote "c"
131 | ]
132 | edge [
133 | source 1
134 | target 10
135 | LinkType "OC-192"
136 | LinkLabel "OC-192c"
137 | LinkNote "c"
138 | ]
139 | edge [
140 | source 2
141 | target 9
142 | LinkType "OC-192"
143 | LinkLabel "OC-192c"
144 | LinkNote "c"
145 | ]
146 | edge [
147 | source 3
148 | target 4
149 | LinkType "OC-192"
150 | LinkLabel "OC-192c"
151 | LinkNote "c"
152 | ]
153 | edge [
154 | source 3
155 | target 6
156 | LinkType "OC-192"
157 | LinkLabel "OC-192c"
158 | LinkNote "c"
159 | ]
160 | edge [
161 | source 4
162 | target 5
163 | LinkType "OC-192"
164 | LinkLabel "OC-192c"
165 | LinkNote "c"
166 | ]
167 | edge [
168 | source 4
169 | target 6
170 | LinkType "OC-192"
171 | LinkLabel "OC-192c"
172 | LinkNote "c"
173 | ]
174 | edge [
175 | source 5
176 | target 8
177 | LinkType "OC-192"
178 | LinkLabel "OC-192c"
179 | LinkNote "c"
180 | ]
181 | edge [
182 | source 6
183 | target 7
184 | LinkType "OC-192"
185 | LinkLabel "OC-192c"
186 | LinkNote "c"
187 | ]
188 | edge [
189 | source 7
190 | target 8
191 | LinkType "OC-192"
192 | LinkLabel "OC-192c"
193 | LinkNote "c"
194 | ]
195 | edge [
196 | source 7
197 | target 10
198 | LinkType "OC-192"
199 | LinkLabel "OC-192c"
200 | LinkNote "c"
201 | ]
202 | edge [
203 | source 8
204 | target 9
205 | LinkType "OC-192"
206 | LinkLabel "OC-192c"
207 | LinkNote "c"
208 | ]
209 | edge [
210 | source 9
211 | target 10
212 | LinkType "OC-192"
213 | LinkLabel "OC-192c"
214 | LinkNote "c"
215 | ]
216 | ]
217 |
--------------------------------------------------------------------------------
/RoundRobin/Claranet.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "19/10/10"
3 | GeoLocation "Europe"
4 | GeoExtent "Continent"
5 | Network "Claranet"
6 | Provenance "Primary"
7 | Note "Technically, Access is provided by Claranet SOHO, a division of Claranet."
8 | Source "http://noc.eu.clara.net/"
9 | Version "1.0"
10 | Type "COM"
11 | DateType "Dynamic"
12 | Backbone 1
13 | Commercial 0
14 | label "Claranet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "08"
21 | LastAccess "3/08/10"
22 | Access 1
23 | Layer "IP"
24 | Creator "Topology Zoo Toolset"
25 | Developed 0
26 | Transit 1
27 | NetworkDate "2010_08"
28 | DateYear "2010"
29 | LastProcessed "2011_09_01"
30 | Testbed 0
31 | node [
32 | id 0
33 | label "Faro"
34 | Country "Portugal"
35 | Longitude -7.93333
36 | Internal 1
37 | Latitude 37.01667
38 | ]
39 | node [
40 | id 1
41 | label "Madrid"
42 | Country "Spain"
43 | Longitude -3.70256
44 | Internal 1
45 | Latitude 40.4165
46 | ]
47 | node [
48 | id 2
49 | label "Porto"
50 | Country "Portugal"
51 | Longitude -8.61667
52 | Internal 1
53 | Latitude 41.15
54 | ]
55 | node [
56 | id 3
57 | label "Lisbon"
58 | Country "Portugal"
59 | Longitude -9.13333
60 | Internal 1
61 | Latitude 38.71667
62 | ]
63 | node [
64 | id 4
65 | label "Barcelona"
66 | Country "Spain"
67 | Longitude 2.15899
68 | Internal 1
69 | Latitude 41.38879
70 | ]
71 | node [
72 | id 5
73 | label "Manchester"
74 | Country "United Kingdom"
75 | Longitude -2.23743
76 | Internal 1
77 | Latitude 53.48095
78 | ]
79 | node [
80 | id 6
81 | label "New York"
82 | Country "United Kingdom"
83 | Longitude -0.14008
84 | Internal 1
85 | Latitude 53.07897
86 | ]
87 | node [
88 | id 7
89 | label "Amsterdam"
90 | Country "Netherlands"
91 | Longitude 4.88969
92 | Internal 1
93 | Latitude 52.37403
94 | ]
95 | node [
96 | id 8
97 | label "Eindhoven"
98 | Country "Netherlands"
99 | Longitude 5.47778
100 | Internal 1
101 | Latitude 51.44083
102 | ]
103 | node [
104 | id 9
105 | label "Berlin"
106 | Country "Germany"
107 | Longitude 13.41053
108 | Internal 1
109 | Latitude 52.52437
110 | ]
111 | node [
112 | id 10
113 | label "Frankfurt"
114 | Country "Germany"
115 | Longitude 8.68333
116 | Internal 1
117 | Latitude 50.11667
118 | ]
119 | node [
120 | id 11
121 | label "Munich"
122 | Country "Germany"
123 | Longitude 11.57549
124 | Internal 1
125 | Latitude 48.13743
126 | ]
127 | node [
128 | id 12
129 | label "Paris"
130 | Country "France"
131 | Longitude 2.3488
132 | Internal 1
133 | Latitude 48.85341
134 | ]
135 | node [
136 | id 13
137 | label "Rennes"
138 | Country "France"
139 | Longitude -1.68333
140 | Internal 1
141 | Latitude 48.08333
142 | ]
143 | node [
144 | id 14
145 | label "London"
146 | Country "United Kingdom"
147 | Longitude -0.12574
148 | Internal 1
149 | Latitude 51.50853
150 | ]
151 | edge [
152 | source 0
153 | target 3
154 | id "e15"
155 | ]
156 | edge [
157 | source 1
158 | target 3
159 | id "e16"
160 | ]
161 | edge [
162 | source 1
163 | target 4
164 | id "e17"
165 | ]
166 | edge [
167 | source 2
168 | target 3
169 | id "e14"
170 | ]
171 | edge [
172 | source 3
173 | target 14
174 | id "e13"
175 | ]
176 | edge [
177 | source 4
178 | target 12
179 | id "e8"
180 | ]
181 | edge [
182 | source 5
183 | target 14
184 | id "e11"
185 | ]
186 | edge [
187 | source 6
188 | target 14
189 | id "e12"
190 | ]
191 | edge [
192 | source 7
193 | target 8
194 | id "e0"
195 | ]
196 | edge [
197 | source 7
198 | target 10
199 | id "e1"
200 | ]
201 | edge [
202 | source 7
203 | target 14
204 | id "e2"
205 | ]
206 | edge [
207 | source 9
208 | target 10
209 | id "e3"
210 | ]
211 | edge [
212 | source 9
213 | target 11
214 | id "e4"
215 | ]
216 | edge [
217 | source 10
218 | target 11
219 | id "e5"
220 | ]
221 | edge [
222 | source 10
223 | target 12
224 | id "e6"
225 | ]
226 | edge [
227 | source 10
228 | target 14
229 | id "e7"
230 | ]
231 | edge [
232 | source 12
233 | target 13
234 | id "e9"
235 | ]
236 | edge [
237 | source 12
238 | target 14
239 | id "e10"
240 | ]
241 | ]
242 |
--------------------------------------------------------------------------------
/RoundRobin/Gridnet.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "14/01/11"
3 | GeoLocation "USA"
4 | GeoExtent "Country"
5 | Network "GridNet"
6 | Provenance "Secondary"
7 | Note "Owned by WorldCom - public data net. http://books.google.com.au/books?id=pw4EAAAAMBAJ&pg=PA24&lpg=PA24&dq=GridNet+Network&source=bl&ots=QrtyD7bAeG&sig=46WUmRkmTyaiQFcJ2IBv3KclZa8&hl=en&ei=SQTaTa2JCo7WtQOzoKWODA&sa=X&oi=book_result&ct=result&resnum=9&ved=0CFIQ6AEwCA#v=onepage&q=GridNet%20Network&f=false"
8 | Source "http://www.nthelp.com/images/gridnet.jpg"
9 | Version "1.0"
10 | Type "COM"
11 | DateType "Current"
12 | Backbone 1
13 | Commercial 0
14 | label "Gridnet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "01"
21 | LastAccess "14/01/11"
22 | Access 1
23 | Layer "IP"
24 | Creator "Topology Zoo Toolset"
25 | Developed 1
26 | Transit 0
27 | NetworkDate "2011_01"
28 | DateYear "2011"
29 | LastProcessed "2011_09_01"
30 | Testbed 0
31 | node [
32 | id 0
33 | label "Houston"
34 | Country "United States"
35 | Longitude -95.36327
36 | Internal 1
37 | Latitude 29.76328
38 | ]
39 | node [
40 | id 1
41 | label "San Francisco"
42 | Country "United States"
43 | Longitude -122.41942
44 | Internal 1
45 | Latitude 37.77493
46 | ]
47 | node [
48 | id 2
49 | label "Los Angeles"
50 | Country "United States"
51 | Longitude -118.24368
52 | Internal 1
53 | Latitude 34.05223
54 | ]
55 | node [
56 | id 3
57 | label "New York"
58 | Country "United States"
59 | Longitude -74.00597
60 | Internal 1
61 | Latitude 40.71427
62 | ]
63 | node [
64 | id 4
65 | label "Newark"
66 | Country "United States"
67 | Longitude -74.17237
68 | Internal 1
69 | Latitude 40.73566
70 | ]
71 | node [
72 | id 5
73 | label "Washington, DC"
74 | Country "United States"
75 | Longitude -77.03637
76 | Internal 1
77 | Latitude 38.89511
78 | ]
79 | node [
80 | id 6
81 | label "Atlanta"
82 | Country "United States"
83 | Longitude -84.38798
84 | Internal 1
85 | Latitude 33.749
86 | ]
87 | node [
88 | id 7
89 | label "Dallas"
90 | Country "United States"
91 | Longitude -96.80667
92 | Internal 1
93 | Latitude 32.78306
94 | ]
95 | node [
96 | id 8
97 | label "Miami"
98 | Country "United States"
99 | Longitude -80.19366
100 | Internal 1
101 | Latitude 25.77427
102 | ]
103 | edge [
104 | source 0
105 | target 8
106 | LinkType "DS-3"
107 | LinkLabel "45 Mbps DS-3"
108 | LinkNote "45 Mbps "
109 | ]
110 | edge [
111 | source 0
112 | target 2
113 | LinkType "DS-3"
114 | LinkLabel "45 Mbps DS-3"
115 | LinkNote "45 Mbps "
116 | ]
117 | edge [
118 | source 0
119 | target 3
120 | LinkType "DS-3"
121 | LinkLabel "45 Mbps DS-3"
122 | LinkNote "45 Mbps "
123 | ]
124 | edge [
125 | source 0
126 | target 7
127 | LinkType "DS-3"
128 | LinkLabel "45 Mbps DS-3"
129 | LinkNote "45 Mbps "
130 | ]
131 | edge [
132 | source 1
133 | target 2
134 | LinkType "DS-3"
135 | LinkLabel "45 Mbps DS-3"
136 | LinkNote "45 Mbps "
137 | ]
138 | edge [
139 | source 1
140 | target 4
141 | LinkType "DS-3"
142 | LinkLabel "45 Mbps DS-3"
143 | LinkNote "45 Mbps "
144 | ]
145 | edge [
146 | source 1
147 | target 5
148 | LinkType "DS-3"
149 | LinkLabel "45 Mbps DS-3"
150 | LinkNote "45 Mbps "
151 | ]
152 | edge [
153 | source 1
154 | target 6
155 | LinkType "DS-3"
156 | LinkLabel "45 Mbps DS-3"
157 | LinkNote "45 Mbps "
158 | ]
159 | edge [
160 | source 1
161 | target 7
162 | LinkType "DS-3"
163 | LinkLabel "45 Mbps DS-3"
164 | LinkNote "45 Mbps "
165 | ]
166 | edge [
167 | source 2
168 | target 3
169 | LinkType "DS-3"
170 | LinkLabel "45 Mbps DS-3"
171 | LinkNote "45 Mbps "
172 | ]
173 | edge [
174 | source 2
175 | target 8
176 | LinkType "DS-3"
177 | LinkLabel "45 Mbps DS-3"
178 | LinkNote "45 Mbps "
179 | ]
180 | edge [
181 | source 3
182 | target 8
183 | LinkType "DS-3"
184 | LinkLabel "45 Mbps DS-3"
185 | LinkNote "45 Mbps "
186 | ]
187 | edge [
188 | source 3
189 | target 4
190 | LinkType "DS-3"
191 | LinkLabel "45 Mbps DS-3"
192 | LinkNote "45 Mbps "
193 | ]
194 | edge [
195 | source 4
196 | target 5
197 | LinkType "DS-3"
198 | LinkLabel "45 Mbps DS-3"
199 | LinkNote "45 Mbps "
200 | ]
201 | edge [
202 | source 4
203 | target 6
204 | LinkType "DS-3"
205 | LinkLabel "45 Mbps DS-3"
206 | LinkNote "45 Mbps "
207 | ]
208 | edge [
209 | source 4
210 | target 7
211 | LinkType "DS-3"
212 | LinkLabel "45 Mbps DS-3"
213 | LinkNote "45 Mbps "
214 | ]
215 | edge [
216 | source 5
217 | target 6
218 | LinkType "DS-3"
219 | LinkLabel "45 Mbps DS-3"
220 | LinkNote "45 Mbps "
221 | ]
222 | edge [
223 | source 5
224 | target 7
225 | LinkType "DS-3"
226 | LinkLabel "45 Mbps DS-3"
227 | LinkNote "45 Mbps "
228 | ]
229 | edge [
230 | source 6
231 | target 8
232 | LinkType "DS-3"
233 | LinkLabel "45 Mbps DS-3"
234 | LinkNote "45 Mbps "
235 | ]
236 | edge [
237 | source 6
238 | target 7
239 | LinkType "DS-3"
240 | LinkLabel "45 Mbps DS-3"
241 | LinkNote "45 Mbps "
242 | ]
243 | ]
244 |
--------------------------------------------------------------------------------
/RoundRobin/NSF.gml:
--------------------------------------------------------------------------------
1 | graph [
2 | DateObtained "14/01/11"
3 | GeoLocation "USA"
4 | GeoExtent "Country"
5 | Network "NSF"
6 | Provenance "Secondary"
7 | Access 0
8 | Source "http://www.nthelp.com/images/nsf.jpg"
9 | Version "1.0"
10 | Type "REN"
11 | DateType "Current"
12 | Backbone 1
13 | Commercial 0
14 | label "Nsfnet"
15 | ToolsetVersion "0.3.34dev-20120328"
16 | Customer 1
17 | IX 0
18 | SourceGitVersion "e278b1b"
19 | DateModifier "="
20 | DateMonth "01"
21 | LastAccess "14/01/11"
22 | Layer "IP"
23 | Creator "Topology Zoo Toolset"
24 | Developed 1
25 | Transit 1
26 | NetworkDate "2011_01"
27 | DateYear "2011"
28 | LastProcessed "2011_09_01"
29 | Testbed 0
30 | node [
31 | id 0
32 | label "SEQSUINET, Rice University, Houston"
33 | Country "United States"
34 | Longitude -95.36327
35 | Internal 1
36 | Latitude 29.76328
37 | ]
38 | node [
39 | id 1
40 | label "Jon Von Neumann Center, Princeton, NJ"
41 | Country "United States"
42 | Longitude -74.65905
43 | Internal 1
44 | Latitude 40.34872
45 | ]
46 | node [
47 | id 2
48 | label "SURANET, Georgia Tech, Atlanta"
49 | Country "United States"
50 | Longitude -84.38798
51 | Internal 1
52 | Latitude 33.749
53 | ]
54 | node [
55 | id 3
56 | label "Pittsburgh Supercomputer Center"
57 | Country "United States"
58 | Longitude -79.99589
59 | Internal 1
60 | Latitude 40.44062
61 | ]
62 | node [
63 | id 4
64 | label "Cornell Theory Center, Ithaca NY"
65 | Country "United States"
66 | Longitude -76.49661
67 | Internal 1
68 | Latitude 42.44063
69 | ]
70 | node [
71 | id 5
72 | label "NorthWestNet, Seattle"
73 | Country "United States"
74 | Longitude -122.33207
75 | Internal 1
76 | Latitude 47.60621
77 | ]
78 | node [
79 | id 6
80 | label "BARRnet, Palo Alto"
81 | Country "United States"
82 | Longitude -122.14302
83 | Internal 1
84 | Latitude 37.44188
85 | ]
86 | node [
87 | id 7
88 | label "San Diego Supercomputer Center"
89 | Country "United States"
90 | Longitude -117.15726
91 | Internal 1
92 | Latitude 32.71533
93 | ]
94 | node [
95 | id 8
96 | label "Westnet, Salt Lake City"
97 | Country "United States"
98 | Longitude -111.89105
99 | Internal 1
100 | Latitude 40.76078
101 | ]
102 | node [
103 | id 9
104 | label "NCAR, Boulder"
105 | Country "United States"
106 | Longitude -105.27055
107 | Internal 1
108 | Latitude 40.01499
109 | ]
110 | node [
111 | id 10
112 | label "MIDnet, Lincoln, NE"
113 | Country "United States"
114 | Longitude -96.66696
115 | Internal 1
116 | Latitude 40.8
117 | ]
118 | node [
119 | id 11
120 | label "NCSA, University of Illinois, Champaign"
121 | Country "United States"
122 | Longitude -88.24338
123 | Internal 1
124 | Latitude 40.11642
125 | ]
126 | node [
127 | id 12
128 | label "Merit Univ of Michigan, Ann Arbor"
129 | Country "United States"
130 | Longitude -83.74088
131 | Internal 1
132 | Latitude 42.27756
133 | ]
134 | edge [
135 | source 0
136 | target 2
137 | id "e14"
138 | ]
139 | edge [
140 | source 0
141 | target 11
142 | id "e8"
143 | ]
144 | edge [
145 | source 0
146 | target 7
147 | id "e4"
148 | ]
149 | edge [
150 | source 1
151 | target 2
152 | id "e13"
153 | ]
154 | edge [
155 | source 1
156 | target 4
157 | id "e12"
158 | ]
159 | edge [
160 | source 3
161 | target 12
162 | id "e10"
163 | ]
164 | edge [
165 | source 4
166 | target 12
167 | id "e11"
168 | ]
169 | edge [
170 | source 5
171 | target 9
172 | id "e1"
173 | ]
174 | edge [
175 | source 5
176 | target 6
177 | id "e0"
178 | ]
179 | edge [
180 | source 6
181 | target 12
182 | LinkType "T1"
183 | LinkLabel "T1"
184 | ]
185 | edge [
186 | source 6
187 | target 7
188 | id "e2"
189 | ]
190 | edge [
191 | source 8
192 | target 9
193 | id "e5"
194 | ]
195 | edge [
196 | source 9
197 | target 11
198 | id "e6"
199 | ]
200 | edge [
201 | source 10
202 | target 11
203 | id "e7"
204 | ]
205 | edge [
206 | source 11
207 | target 12
208 | id "e9"
209 | ]
210 | ]
--------------------------------------------------------------------------------
/RoundRobin/RoundRobin.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | import argparse
7 | import torch
8 | from routingEnv import routingEnv
9 | from torch.utils.tensorboard import SummaryWriter
10 | import tqdm
11 | import os
12 | version = 2
13 |
14 | #################################################################################
15 |
16 | ################################## set device ##################################
17 |
18 | print("============================================================================================")
19 |
20 | # set device to cpu or cuda
21 | device = torch.device('cpu')
22 |
23 | if (torch.cuda.is_available()):
24 | device = torch.device('cuda:5')
25 | torch.cuda.empty_cache()
26 | print("Device set to : " + str(torch.cuda.get_device_name(device)))
27 | else:
28 | print("Device set to : cpu")
29 |
30 | print("============================================================================================")
31 |
32 | parser = argparse.ArgumentParser()
33 |
34 | parser.add_argument('--mode', default='train', type=str) # mode = 'train' or 'test'
35 | parser.add_argument("--env_name", default="Pendulum-v0") # OpenAI gym environment name, BipedalWalker-v2
36 | parser.add_argument('--tau', default=0.005, type=float) # target smoothing coefficient
37 | parser.add_argument('--target_update_interval', default=1, type=int)
38 | parser.add_argument('--iteration', default=5, type=int) #test
39 |
40 | parser.add_argument('--learning_rate', default=3e-4, type=float)
41 | parser.add_argument('--gamma', default=0.9, type=int) # discounted factor 0.9
42 | parser.add_argument('--capacity', default=50000, type=int) # replay buffer size 50000
43 | parser.add_argument('--num_iteration', default=500000, type=int) # num of games train
44 | parser.add_argument('--batch_size', default=256, type=int) # mini batch size 256
45 | parser.add_argument('--seed', default=1500, type=int)
46 |
47 | # optional parameters
48 | parser.add_argument('--num_hidden_layers', default=2, type=int)
49 | parser.add_argument('--sample_frequency', default=256, type=int)
50 | parser.add_argument('--activation', default='Relu', type=str)
51 | parser.add_argument('--render', default=False, type=bool) # show UI or not
52 | parser.add_argument('--log_interval', default=80000, type=int) #
53 | parser.add_argument('--load', default=False, type=bool) # load model
54 | parser.add_argument('--render_interval', default=100, type=int) # after render_interval, the env.render() will work
55 | parser.add_argument('--policy_noise', default=0.2, type=float)
56 | parser.add_argument('--noise_clip', default=0.5, type=float)
57 | parser.add_argument('--policy_delay', default=2, type=int)
58 | parser.add_argument('--exploration_noise', default=0.1, type=float)
59 | parser.add_argument('--max_episode', default=2000, type=int)
60 | parser.add_argument('--print_log', default=5, type=int)
61 | args = parser.parse_args()
62 |
63 | script_name = os.path.basename(__file__)
64 | directory = './exp' + script_name + args.env_name +'./1'
65 |
66 | def main():
67 | summary_writer = SummaryWriter()
68 | num_iteration = 40000
69 | num_step = 50
70 | env = routingEnv(621)
71 |
72 | step = 0
73 | for i in tqdm.tqdm(range(num_iteration)):
74 | episode = i
75 | states = env.reset(episode)
76 | ep_total_reward = 0
77 | ep_local_reward = 0
78 | ep_rd = 0
79 | ep_rp = 0
80 |
81 | for j in range(num_step):
82 | for node in range(env.node_num):
83 | state = states[node].getState()[0]
84 | if j % 3 == 0:
85 | act = [[1, 0, 0]]
86 | elif j % 3 == 1:
87 | act = [[0, 1, 0]]
88 | elif j % 3 == 2:
89 | act = [[0, 0, 1]]
90 | env.store_action(node, act)
91 |
92 | states__, st_rd, st_rp, done = env.step()
93 | ep_rd += st_rd
94 | ep_rp += st_rp
95 | if j == num_step - 1:
96 | done = True
97 | for node in range(env.node_num):
98 | reward = states__[node].getRewards()
99 | local_reward = states__[node].getLocalRewards()
100 | ep_local_reward += local_reward[0][0]
101 | for re in range(len(reward)):
102 | ep_total_reward += reward[re][0]
103 | states_ = env.get_state()
104 |
105 | step += 1
106 | states = states_
107 | ep_total_reward /= num_step
108 | ep_total_reward /= env.node_num
109 | ep_local_reward /= num_step
110 | ep_local_reward /= env.node_num
111 | ep_rd /= num_step
112 | ep_rp /= num_step
113 | print("local_reward", ep_local_reward)
114 | summary_writer.add_scalar('total_reward_change 15 30 zif standard round2', ep_total_reward, global_step=i)
115 | summary_writer.add_scalar('local_reward', ep_local_reward, global_step=i)
116 | summary_writer.add_scalar('ep_rd', ep_rd, i)
117 | summary_writer.add_scalar('ep_rp', ep_rp, i)
118 |
119 | if __name__ == '__main__':
120 | main()
--------------------------------------------------------------------------------
/RoundRobin/router.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | import copy
7 |
8 | class router:
9 | def __init__(self, K_paths):
10 | self.K_paths = K_paths
11 | self.info = []
12 | self.state = []
13 | self.actions = []
14 | self.max_hop = 0
15 | self.rate_info = []
16 | self.local_rewards = []
17 | self.total_state = []
18 | self.total_rewards = []
19 |
20 | def reset(self):
21 | self.info = []
22 | self.state = []
23 | self.FedState = []
24 | self.actions = []
25 | self.max_hop = 0
26 | self.rate_info = []
27 | self.local_rewards = []
28 | self.total_state = []
29 | self.total_rewards = []
30 |
31 | def add_info(self, index, pathNum):
32 | self.info.append([index, pathNum])
33 |
34 | def add_state(self, part_state):
35 | self.state.append(part_state)
36 |
37 | def add_total_state(self, total_state):
38 | self.total_state.append(total_state)
39 |
40 | def add_FedState(self, state):
41 | new_state = copy.deepcopy(self.state[0])
42 | for i in range(len(state[0])):
43 | new_state.append(state[0][i])
44 | self.FedState.append(new_state)
45 |
46 | def add_action(self, actions):
47 | for i in range(len(actions)):
48 | for j in range(self.K_paths - self.info[i][1]):
49 | actions[i][self.K_paths-1-j] = 0
50 | actionSum = sum(actions[i])
51 | if actionSum == 0:
52 | actions[i][0] = 1
53 | else:
54 | for j in range(len(actions[i])):
55 | actions[i][j] /= actionSum
56 | actions[i][j] = round(actions[i][j], 2)
57 | self.actions = actions
58 |
59 | def add_rateInfo(self, index, rate):
60 | self.rate_info.append([index, rate])
61 |
62 | def add_local_reward(self, reward):
63 | self.local_rewards.append(reward)
64 |
65 | def add_total_reward(self, total_reward):
66 | self.total_rewards.append(total_reward)
67 |
68 |
69 | def getInfo(self):
70 | return self.info
71 |
72 | def getLocalState(self):
73 | return self.state
74 |
75 | def getState(self):
76 | return self.total_state
77 |
78 | def getFedState(self):
79 | return self.FedState
80 |
81 | def getAction(self):
82 | return self.actions
83 |
84 | def getRateInfo(self):
85 | return self.rate_info
86 |
87 | def getLocalRewards(self):
88 | return self.local_rewards
89 |
90 | def getRewards(self):
91 | return self.total_rewards
92 |
93 | def getRewards_load(self):
94 | return self.load
--------------------------------------------------------------------------------
/RoundRobin/switch.py:
--------------------------------------------------------------------------------
1 | """
2 | Created on Fri May 19 16:07:55 2023
3 |
4 | @author: YangYing
5 | """
6 | class switch:
7 | def __init__(self, splitNum):
8 | self.reminderPath = []
9 | self.InRate = []
10 | self.OutRate = []
11 | self.splitNum = splitNum
12 |
13 | def reset(self):
14 | self.reminderPath = []
15 | self.InRate = []
16 | self.OutRate = []
17 |
18 | def addReminderPath(self, flowIndex, splitIndex, reminderPath):
19 | index = flowIndex * self.splitNum + splitIndex
20 | self.reminderPath.append([index, reminderPath])
21 |
22 | def addInRate(self, flowIndex, splitIndex, InRate):
23 | add = True
24 | index = flowIndex * self.splitNum + splitIndex
25 | for i in range(len(self.InRate)):
26 | if index == self.InRate[i][0]:
27 | self.InRate[i][1] = InRate
28 | add = False
29 | break
30 | if add:
31 | self.InRate.append([index, InRate])
32 |
33 | def addInRate2(self, index, InRate):
34 | add = True
35 | for i in range(len(self.InRate)):
36 | if index == self.InRate[i][0]:
37 | self.InRate[i][1] = InRate
38 | add = False
39 | break
40 | if add:
41 | self.InRate.append([index, InRate])
42 |
43 | def addOutRate(self, flowIndex, splitIndex, OutRate):
44 | index = flowIndex * self.splitNum + splitIndex
45 | self.OutRate.append([index, OutRate])
46 |
47 | def addOutRate2(self, index, OutRate):
48 | self.OutRate.append([index, OutRate])
49 |
50 | def getSumInrate(self):
51 | ans = 0
52 | for i in range(len(self.InRate)):
53 | ans += self.InRate[i][1]
54 | return ans
55 |
56 | def getOutRate(self, flowIndex, splitIndex):
57 | index = flowIndex * self.splitNum + splitIndex
58 | for i in range(len(self.OutRate)):
59 | if (self.OutRate[i][0] == index):
60 | return self.OutRate[i][1]
61 |
62 | def addEdgeRate(self, pathNode, next_pathNode, rate):
63 | self.G.edges[(pathNode, next_pathNode)]['load'] += rate
--------------------------------------------------------------------------------