├── 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 | 41 | -------------------------------------------------------------------------------- /Dec_MAPPO/.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 | 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 | 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 | 41 | -------------------------------------------------------------------------------- /ECMP/.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 | 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 | 41 | -------------------------------------------------------------------------------- /LB/.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 | 41 | -------------------------------------------------------------------------------- /MA-TD3/.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 | 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 | 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 | 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 | 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 | 41 | -------------------------------------------------------------------------------- /RoundRobin/.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 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 --------------------------------------------------------------------------------