├── .gitattributes ├── .gitignore ├── EECS ├── EECCS100.m ├── EECCS150.m ├── EECCS200.m ├── EECCS250.m └── EECCS300.m ├── HEEPSCC ├── working_HEEPSCC_100.m ├── working_HEEPSCC_150.m ├── working_HEEPSCC_200.m ├── working_HEEPSCC_250.m └── working_HEEPSCC_300.m ├── README.md └── SEP ├── SEP100.m ├── SEP150.m ├── SEP200.m ├── SEP250.m └── SEP300.m /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | 46 | [Dd]ebug/ 47 | [Rr]elease/ 48 | x64/ 49 | build/ 50 | [Bb]in/ 51 | [Oo]bj/ 52 | 53 | # MSTest test Results 54 | [Tt]est[Rr]esult*/ 55 | [Bb]uild[Ll]og.* 56 | 57 | *_i.c 58 | *_p.c 59 | *.ilk 60 | *.meta 61 | *.obj 62 | *.pch 63 | *.pdb 64 | *.pgc 65 | *.pgd 66 | *.rsp 67 | *.sbr 68 | *.tlb 69 | *.tli 70 | *.tlh 71 | *.tmp 72 | *.tmp_proj 73 | *.log 74 | *.vspscc 75 | *.vssscc 76 | .builds 77 | *.pidb 78 | *.log 79 | *.scc 80 | 81 | # Visual C++ cache files 82 | ipch/ 83 | *.aps 84 | *.ncb 85 | *.opensdf 86 | *.sdf 87 | *.cachefile 88 | 89 | # Visual Studio profiler 90 | *.psess 91 | *.vsp 92 | *.vspx 93 | 94 | # Guidance Automation Toolkit 95 | *.gpState 96 | 97 | # ReSharper is a .NET coding add-in 98 | _ReSharper*/ 99 | *.[Rr]e[Ss]harper 100 | 101 | # TeamCity is a build add-in 102 | _TeamCity* 103 | 104 | # DotCover is a Code Coverage Tool 105 | *.dotCover 106 | 107 | # NCrunch 108 | *.ncrunch* 109 | .*crunch*.local.xml 110 | 111 | # Installshield output folder 112 | [Ee]xpress/ 113 | 114 | # DocProject is a documentation generator add-in 115 | DocProject/buildhelp/ 116 | DocProject/Help/*.HxT 117 | DocProject/Help/*.HxC 118 | DocProject/Help/*.hhc 119 | DocProject/Help/*.hhk 120 | DocProject/Help/*.hhp 121 | DocProject/Help/Html2 122 | DocProject/Help/html 123 | 124 | # Click-Once directory 125 | publish/ 126 | 127 | # Publish Web Output 128 | *.Publish.xml 129 | *.pubxml 130 | 131 | # NuGet Packages Directory 132 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 133 | #packages/ 134 | 135 | # Windows Azure Build Output 136 | csx 137 | *.build.csdef 138 | 139 | # Windows Store app package directory 140 | AppPackages/ 141 | 142 | # Others 143 | sql/ 144 | *.Cache 145 | ClientBin/ 146 | [Ss]tyle[Cc]op.* 147 | ~$* 148 | *~ 149 | *.dbmdl 150 | *.[Pp]ublish.xml 151 | *.pfx 152 | *.publishsettings 153 | 154 | # RIA/Silverlight projects 155 | Generated_Code/ 156 | 157 | # Backup & report files from converting an old project file to a newer 158 | # Visual Studio version. Backup files are not needed, because we have git ;-) 159 | _UpgradeReport_Files/ 160 | Backup*/ 161 | UpgradeLog*.XML 162 | UpgradeLog*.htm 163 | 164 | # SQL Server files 165 | App_Data/*.mdf 166 | App_Data/*.ldf 167 | 168 | ############# 169 | ## Windows detritus 170 | ############# 171 | 172 | # Windows image file caches 173 | Thumbs.db 174 | ehthumbs.db 175 | 176 | # Folder config file 177 | Desktop.ini 178 | 179 | # Recycle Bin used on file shares 180 | $RECYCLE.BIN/ 181 | 182 | # Mac crap 183 | .DS_Store 184 | 185 | 186 | ############# 187 | ## Python 188 | ############# 189 | 190 | *.py[co] 191 | 192 | # Packages 193 | *.egg 194 | *.egg-info 195 | dist/ 196 | build/ 197 | eggs/ 198 | parts/ 199 | var/ 200 | sdist/ 201 | develop-eggs/ 202 | .installed.cfg 203 | 204 | # Installer logs 205 | pip-log.txt 206 | 207 | # Unit test / coverage reports 208 | .coverage 209 | .tox 210 | 211 | #Translations 212 | *.mo 213 | 214 | #Mr Developer 215 | .mr.developer.cfg 216 | -------------------------------------------------------------------------------- /EECS/EECCS100.m: -------------------------------------------------------------------------------- 1 | %%%%%% 2 | % % 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | 5 | clear; 6 | 7 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%%% 8 | 9 | %Field Dimensions - x and y maximum (in meters) 10 | xm=200; 11 | ym=100; 12 | 13 | %x and y Coordinates of the Sink 14 | sink.x=0.0*xm; 15 | sink.y=0.0*ym; 16 | 17 | %Number of Nodes in the field 18 | n=100 19 | 20 | 21 | 22 | %Energy Model (all values in Joules) 23 | %Initial Energy 24 | %Eelec=Etx=Erx 25 | ETX=50*0.000000001; 26 | ERX=50*0.000000001; 27 | %Transmit Amplifier types 28 | Efs=10*0.000000000001; 29 | Emp=0.0013*0.000000000001; 30 | %Data Aggregation Energy 31 | EDA=5*0.000000001; 32 | 33 | %Values for Hetereogeneity 34 | %Percentage of nodes than are advanced 35 | m=0.0; 36 | %\alpha 37 | a=1; 38 | 39 | %maximum number of rounds 40 | rmax=800; 41 | 42 | %%%%%%%%%%%%%%%%%%%%%%%%% END OF PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%% 43 | 44 | %Computation of do 45 | do=sqrt(Efs/Emp); 46 | 47 | %Creation of the random Sensor Network 48 | %figure(1); 49 | 50 | 51 | 52 | 53 | 54 | s(1).xd=35.0; % ad 55 | s(1).yd=22.0; 56 | s(1).E= 6.5; 57 | 58 | s(2).xd=10.0; 59 | s(2).yd=10.0; 60 | s(2).E= 1.5; 61 | 62 | s(3).xd=15.0; 63 | s(3).yd=22.0; 64 | s(3).E= 2.1; 65 | 66 | s(4).xd=25.0; 67 | s(4).yd=13.0; 68 | s(4).E= 1.7; 69 | 70 | s(5).xd=26.0; 71 | s(5).yd=28.0; 72 | s(5).E= 4.6; 73 | 74 | s(6).xd=5.0; 75 | s(6).yd=32.0; 76 | s(6).E= 3.8; 77 | 78 | 79 | %2 cluster 80 | 81 | s(7).xd=60.0; %ad 82 | s(7).yd=50.0; 83 | s(7).E= 8.4; 84 | 85 | s(8).xd=55.0; 86 | s(8).yd=12.0; 87 | s(8).E= 3.1; 88 | 89 | s(9).xd=71.0; 90 | s(9).yd=13.0; 91 | s(9).E= 1.4; 92 | 93 | s(10).xd=67.0; 94 | s(10).yd=26.0; 95 | s(10).E= 3.7; 96 | 97 | s(11).xd=44.0; 98 | s(11).yd=37.0; 99 | s(11).E= 3.01; 100 | 101 | s(12).xd=60.0; 102 | s(12).yd=40.0; 103 | s(12).E= 4.1; 104 | 105 | 106 | 107 | s(13).xd=35.0; % ad 108 | s(13).yd=40.0; 109 | s(13).E=2.3 ; 110 | 111 | s(14).xd=40.0; 112 | s(14).yd=46.0; 113 | s(14).E= 1.1; 114 | 115 | s(15).xd=43.0; 116 | s(15).yd=58.0; 117 | s(15).E=2.1 ; 118 | 119 | s(16).xd=26.0; 120 | s(16).yd=55.0; 121 | s(16).E=3.3 ; 122 | 123 | s(17).xd=28.0; 124 | s(17).yd=72.0; 125 | s(17).E=2.8 ; 126 | 127 | %3 cluster 128 | 129 | s(18).xd=100.0; %ad 130 | s(18).yd=66.0; 131 | s(18).E=9.9 ; 132 | 133 | s(19).xd=90.0; 134 | s(19).yd=3.0; 135 | s(19).E=3.9 ; 136 | 137 | s(20).xd=106.0; 138 | s(20).yd=6.0; 139 | s(20).E=3.7 ; 140 | 141 | s(21).xd=85.0; 142 | s(21).yd=15.0; 143 | s(21).E=3.6 ; 144 | 145 | 146 | s(22).xd=100.0; 147 | s(22).yd=18.0; 148 | s(22).E=2.5 ; 149 | 150 | s(23).xd=110.0; 151 | s(23).yd=19.0; 152 | s(23).E=2.9 ; 153 | 154 | s(24).xd=112.0; 155 | s(24).yd=33.0; 156 | s(24).E= 2.2; 157 | 158 | s(25).xd=85.0; 159 | s(25).yd=32.0; 160 | s(25).E=4.3 ; 161 | 162 | s(26).xd=102.0; 163 | s(26).yd=42.0; 164 | s(26).E=3.7 ; 165 | 166 | s(27).xd=93.0; 167 | s(27).yd=38.0; 168 | s(27).E=3.9 ; 169 | 170 | s(28).xd=108.0; 171 | s(28).yd=48.0; 172 | s(28).E=4.1 ; 173 | 174 | s(29).xd=98.0; 175 | s(29).yd=62.0; 176 | s(29).E= 3.4; 177 | 178 | s(30).xd=90.0; 179 | s(30).yd=52.0; 180 | s(30).E=2.2 ; 181 | 182 | s(31).xd=80.0; 183 | s(31).yd=46.0; 184 | s(31).E=3.1 ; 185 | 186 | s(32).xd=76.0; 187 | s(32).yd=45.0; 188 | s(32).E=3.2 ; 189 | 190 | s(33).xd=75.0; 191 | s(33).yd=60.0; 192 | s(33).E= 2.4; 193 | 194 | s(34).xd=85.0; 195 | s(34).yd=68.0; 196 | s(34).E=4.1 ; 197 | 198 | s(35).xd=94.0; 199 | s(35).yd=72.0; 200 | s(35).E=3.4 ; 201 | 202 | s(36).xd=75.0; 203 | s(36).yd=70.0; 204 | s(36).E=2.2 ; 205 | 206 | s(37).xd=80.0; 207 | s(37).yd=82.0; 208 | s(37).E=3.3 ; 209 | 210 | s(38).xd=74.0; 211 | s(38).yd=92.0; 212 | s(38).E=4.4 ; 213 | 214 | s(39).xd=65.0; 215 | s(39).yd=78.0; 216 | s(39).E=3.5 ; 217 | 218 | s(40).xd=50.0; 219 | s(40).yd=75.0; 220 | s(40).E=2.4 ; 221 | 222 | s(41).xd=53.0; 223 | s(41).yd=95.0; 224 | s(41).E=2.7 ; 225 | 226 | s(42).xd=40.0; 227 | s(42).yd=88.0; 228 | s(42).E=3.9 ; 229 | 230 | 231 | s(43).xd=22.0; 232 | s(43).yd=78.0; 233 | s(43).E=2.9 ; 234 | 235 | 236 | s(44).xd=24.0; 237 | s(44).yd=90.0; 238 | s(44).E=3.0 ; 239 | 240 | s(45).xd=4.0; 241 | s(45).yd=79.0; 242 | s(45).E=1.9 ; 243 | 244 | %fourth cluster 245 | 246 | s(46).xd=145.0; 247 | s(46).yd=18.0; 248 | s(46).E=9.3; 249 | 250 | s(47).xd=133.0; 251 | s(47).yd=8.0; 252 | s(47).E=4.1 ; 253 | 254 | s(48).xd=125.0; 255 | s(48).yd=18.0; 256 | s(48).E=3.7; 257 | 258 | s(49).xd=135.0; 259 | s(49).yd=34.0; 260 | s(49).E=2.3 ; 261 | 262 | s(50).xd=123.0; 263 | s(50).yd=42.0; 264 | s(50).E=4.6 ; 265 | 266 | s(51).xd=134.0; 267 | s(51).yd=52.0; 268 | s(51).E=2.1 ; 269 | 270 | s(52).xd=118.0; 271 | s(52).yd=50.0; 272 | s(52).E=4.6 ; 273 | 274 | s(53).xd=123.0; 275 | s(53).yd=60.0; 276 | s(53).E=4.1 ; 277 | 278 | s(54).xd=126.0; 279 | s(54).yd=65.0; 280 | s(54).E=2.5 ; 281 | 282 | s(55).xd=113.0; 283 | s(55).yd=65.0; 284 | s(55).E=3.0 ; 285 | 286 | s(56).xd=125.0; 287 | s(56).yd=70.0; 288 | s(56).E=4.1 ; 289 | 290 | s(57).xd=120.0; 291 | s(57).yd=72.0; 292 | s(57).E=3.6 ; 293 | 294 | s(58).xd=124.0; 295 | s(58).yd=80.0; 296 | s(58).E=3.9 ; 297 | 298 | s(59).xd=105.0; 299 | s(59).yd=82.0; 300 | s(59).E=3.2 ; 301 | 302 | s(60).xd=124.0; 303 | s(60).yd=90.0; 304 | s(60).E=2.9 ; 305 | 306 | s(61).xd=116.0; 307 | s(61).yd=92.0; 308 | s(61).E=3.6 ; 309 | 310 | s(62).xd=110.0; 311 | s(62).yd=90.0; 312 | s(62).E=3.6 ; 313 | 314 | s(63).xd=95.0; 315 | s(63).yd=85.0; 316 | s(63).E=2.9 ; 317 | 318 | s(64).xd=90.0; 319 | s(64).yd=95.0; 320 | s(64).E=4.3 ; 321 | 322 | %fifth 323 | 324 | s(65).xd=155.0; %ad 325 | s(65).yd=85.0; 326 | s(65).E=8.9 ; 327 | 328 | s(66).xd=158.0; 329 | s(66).yd=12.0; 330 | s(66).E= 3.8; 331 | 332 | s(67).xd=167.0; 333 | s(67).yd=22.0; 334 | s(67).E=2.9 ; 335 | 336 | s(68).xd=155.0; 337 | s(68).yd=24.0; 338 | s(68).E=2.4 ; 339 | 340 | s(69).xd=147.0; 341 | s(69).yd=31.0; 342 | s(69).E=2.3 ; 343 | 344 | s(70).xd=162; 345 | s(70).yd=35.0; 346 | s(70).E=2.6 ; 347 | 348 | 349 | 350 | s(71).xd=148.0; 351 | s(71).yd=43.0; 352 | s(71).E=4.8 ; 353 | 354 | s(72).xd=154.0; 355 | s(72).yd=55.0; 356 | s(72).E=2.9 ; 357 | 358 | s(73).xd=148.0; 359 | s(73).yd=58.0; 360 | s(73).E=3.8 ; 361 | 362 | s(74).xd=156.0; 363 | s(74).yd=70.0; 364 | s(74).E=3.7 ; 365 | 366 | s(75).xd=149.0; 367 | s(75).yd=69.0; 368 | s(75).E=3.5 ; 369 | 370 | s(76).xd=150.0; 371 | s(76).yd=80.0; 372 | s(76).E=3.2 ; 373 | 374 | s(77).xd=142.0; 375 | s(77).yd=82.0; 376 | s(77).E=2.7 ; 377 | 378 | s(78).xd=143.0; 379 | s(78).yd=88.0; 380 | s(78).E=3.5 ; 381 | 382 | s(79).xd=128.0; 383 | s(79).yd=96.0; 384 | s(79).E=4.3 ; 385 | 386 | %sixth 387 | 388 | s(80).xd=195.0;% ad 389 | s(80).yd=10.0; 390 | s(80).E=9.4 ; 391 | 392 | s(81).xd=183.0; 393 | s(81).yd=12.0; 394 | s(81).E=3.7 ; 395 | 396 | s(82).xd=182.0; 397 | s(82).yd=20.0; 398 | s(82).E=3.1 ; 399 | 400 | s(83).xd=195.0; 401 | s(83).yd=25.0; 402 | s(83).E=3.5 ; 403 | 404 | s(84).xd=184.0; 405 | s(84).yd=38.0; 406 | s(84).E=3.8 ; 407 | 408 | s(85).xd=192.0; 409 | s(85).yd=43.0; 410 | s(85).E=3.9 ; 411 | 412 | s(86).xd=185.0; 413 | s(86).yd=52.0; 414 | s(86).E=3.5 ; 415 | 416 | s(87).xd=171.0; 417 | s(87).yd=50.0; 418 | s(87).E=2.9 ; 419 | 420 | s(88).xd=165.0; 421 | s(88).yd=64.0; 422 | s(88).E= 4.9; 423 | 424 | s(89).xd=118.0; 425 | s(89).yd=68.0; 426 | s(89).E=4.3 ; 427 | 428 | s(90).xd=180.0; 429 | s(90).yd=73.0; 430 | s(90).E=4.4 ; 431 | 432 | 433 | 434 | s(91).xd=190.0; 435 | s(91).yd=75.0; 436 | s(91).E=3.2 ; 437 | 438 | s(92).xd=186.0; 439 | s(92).yd=83.0; 440 | s(92).E=2.2 ; 441 | 442 | s(93).xd=173.0; 443 | s(93).yd=83.0; 444 | s(93).E= 3.7; 445 | 446 | s(94).xd=184.0; 447 | s(94).yd=92.0; 448 | s(94).E=1.3 ; 449 | 450 | s(95).xd=169.0; 451 | s(95).yd=88.0; 452 | s(95).E=2.9 ; 453 | 454 | s(96).xd=148.0; 455 | s(96).yd=89.0; 456 | s(96).E=3.1 ; 457 | 458 | s(97).xd=155.0; 459 | s(97).yd=96.0; 460 | s(97).E=1.6 ; 461 | 462 | s(98).xd=146.0; 463 | s(98).yd=75.0; 464 | s(98).E= 2.3; 465 | 466 | s(99).xd=170.0; 467 | s(99).yd=55.0; 468 | s(99).E=2.8 ; 469 | 470 | s(100).xd=183.0; 471 | s(100).yd=38.0; 472 | s(100).E=1.3 ; %100 nodes 473 | 474 | 475 | for i=1:1:n 476 | if((s(i).E)>0) 477 | %plot(s(i).xd,s(i).yd,'o'); 478 | end 479 | % hold on; 480 | end 481 | cl=0; 482 | for i=25:25:xm 483 | cl=cl+1; 484 | if(i<=ym) 485 | th = linspace( 0, pi/2, 100); 486 | x = i*cos(th) + 0; 487 | y = i*sin(th) + 0; 488 | %plot(x,y); 489 | else 490 | th = linspace( 0,asin(ym/i), 100); 491 | x=i*cos(th)+0; 492 | y=i*sin(th)+0; 493 | % plot(x,y); 494 | end 495 | end 496 | for i=1:1:n 497 | R=sqrt(abs(s(i).xd)^2+(s(i).yd)^2); 498 | for j=1:1:xm/25 499 | if((R>((j-1)*25))&&((j*25)>R)) 500 | s(i).n=j; 501 | break; 502 | end 503 | if(R>xm) 504 | s(i).n=9; 505 | end 506 | end 507 | end 508 | for i=1:1:cl+1 509 | clusterhead(i).number=0; 510 | clusterhead(i).value=0; 511 | for j=1:1:n 512 | if((s(j).n)==i) 513 | if((s(j).n)==1) 514 | value=((s(j).E)/(((s(i).xd)^2)+((s(i).yd)^2))); 515 | if(value>clusterhead(i).value) 516 | clusterhead(i).number=j; 517 | end 518 | else 519 | value=((s(j).E)/(((s(i).xd-s(clusterhead(i-1).number).xd)^2)+(s(i).yd-s(clusterhead(i-1).number).xd)^2)); 520 | if(value>clusterhead(i).value) 521 | clusterhead(i).number=j; 522 | end 523 | end 524 | end 525 | end 526 | end 527 | 528 | for i=1:1:cl 529 | % plot(s(clusterhead(i).number).xd,s(clusterhead(i).number).yd,'green o'); 530 | end 531 | for r =1:1:rmax 532 | 533 | ener=0; 534 | energy=0; 535 | total=0; 536 | % hold off; 537 | % figure(1); 538 | % hold on; 539 | dead=0; 540 | for i=1:1:n 541 | s(i).a=0; 542 | if((s(i).E)>0) 543 | % plot(s(i).xd,s(i).yd,'blue o'); 544 | s(i).useful=1; 545 | % hold on; 546 | end 547 | if((s(i).E)<=0) 548 | % plot(s(i).xd,s(i).yd,'red o'); 549 | s(i).useful=0; 550 | % hold on; 551 | dead=dead+1; 552 | end 553 | end 554 | 555 | for i=25:25:xm 556 | if(i<=ym) 557 | th = linspace( 0, pi/2, 100); 558 | x = i*cos(th) + 0; 559 | y = i*sin(th) + 0; 560 | %plot(x,y); 561 | else 562 | th = linspace( 0,asin(ym/i), 100); 563 | x=i*cos(th)+0; 564 | y=i*sin(th)+0; 565 | % plot(x,y); 566 | end 567 | end 568 | 569 | Statistics(r).dead=dead; 570 | 571 | for i=1:1:cl+1 572 | clusterhead(i).number=0; 573 | clusterhead(i).value=-1; 574 | for j=1:1:100 575 | if(s(j).n==i&&s(j).E>0) 576 | if(s(j).n==1) 577 | value=((s(j).E)/(((s(i).xd)^2)+((s(i).yd)^2))); 578 | if(value>clusterhead(i).value) 579 | clusterhead(i).number=j; 580 | end 581 | else 582 | if(i~=1) 583 | if(clusterhead(i-1).number>0) 584 | if(s(clusterhead(i-1).number).E>0) 585 | value=((s(j).E)/(((s(i).xd-s(clusterhead(i-1).number).xd)^2)+(s(i).yd-s(clusterhead(i-1).number).xd)^2)); 586 | else 587 | value=((s(j).E)/(((s(i).xd)^2)+(s(i).yd)^2)); 588 | end 589 | if(value>clusterhead(i).value) 590 | clusterhead(i).number=j; 591 | end 592 | end 593 | end 594 | end 595 | end 596 | end 597 | % clusterhead(i).number 598 | 599 | % hold on; 600 | % plot(s(clusterhead(i).number).xd,s(clusterhead(i).number).yd,'green o'); 601 | % hold on; 602 | end 603 | 604 | for i=1:1:cl+1 605 | for j=1:1:100 606 | if(s(j).n==i & j~=clusterhead(i).number & s(j).E>0) 607 | dis=sqrt(abs((s(j).xd)-(s(clusterhead(i).number).xd))^2+((s(j).yd)-(s(clusterhead(i).number).yd))^2); 608 | x=[s(j).xd,s(clusterhead(i).number).xd]; 609 | y=[s(j).yd,s(clusterhead(i).number).yd]; 610 | %hold on; 611 | % plot(x,y,'red'); 612 | % hold on; 613 | if (dis>do) 614 | s(j).E=s(j).E- ( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 615 | end 616 | if (dis<=do) 617 | s(j).E=s(j).E- ( (ETX+EDA)*(4000) + Efs*4000*( dis * dis )); 618 | end 619 | energy=energy+s(j).E; 620 | if(s(clusterhead(i).number).E>0) 621 | s(clusterhead(i).number).E = s(clusterhead(i).number).E- ( (ERX + EDA)*4000 ); 622 | end 623 | ener=ener+s(clusterhead(i).number).E; 624 | end 625 | end 626 | end 627 | for i=1:1:cl+1 628 | nequal=1; 629 | j=i; 630 | k=i-1; 631 | while(nequal==1) 632 | if(k==0) 633 | dis=sqrt(abs((s(clusterhead(j).number).xd))^2+((s(clusterhead(j).number).yd))^2); 634 | if(dis>do) 635 | s(clusterhead(j).number).E=s(clusterhead(j).number).E-( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 636 | end 637 | if(dis<=do) 638 | s(clusterhead(j).number).E=s(clusterhead(j).number).E-( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 639 | end 640 | 641 | ener=ener+s(clusterhead(i).number).E; 642 | 643 | x=[s(clusterhead(j).number).xd,0]; 644 | y=[s(clusterhead(j).number).yd,0]; 645 | % plot(x,y,'black'); 646 | nequal=0; 647 | elseif(s(k).E<=0) 648 | k=k-1; 649 | else 650 | dis=sqrt(abs((s(clusterhead(j).number).xd)-(s(clusterhead(k).number).xd))^2+((s(clusterhead(j).number).yd)-(s(clusterhead(k).number).yd))^2); 651 | if (dis>do) 652 | s(clusterhead(j).number).E=s(clusterhead(j).number).E- ( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 653 | end 654 | if (dis<=do) 655 | s(clusterhead(j).number).E=s(clusterhead(j).number).E- ( (ETX+EDA)*(4000) + Efs*4000*( dis * dis )); 656 | end 657 | ener=ener+s(clusterhead(i).number).E; 658 | x=[s(clusterhead(j).number).xd,s(clusterhead(k).number).xd]; 659 | y=[s(clusterhead(j).number).yd,s(clusterhead(k).number).yd]; 660 | % plot(x,y,'black'); 661 | j=k; 662 | k=j-1; 663 | end 664 | end 665 | end 666 | %hold on; 667 | total= (ener+energy)/(n-dead); 668 | 669 | figure(99); 670 | hold on; 671 | plot(r,dead,'red .'); 672 | 673 | 674 | figure(10); 675 | hold on; 676 | xlabel('Round'); 677 | ylabel('average energy of normal nodes'); 678 | plot(r,energy,'black .'); 679 | 680 | figure(20); 681 | hold on; 682 | xlabel('Round'); 683 | ylabel('average energy of cluster heads'); 684 | plot(r,ener,'magenta .'); 685 | 686 | figure(30); 687 | hold on; 688 | xlabel('Round'); 689 | ylabel('average energy of network'); 690 | plot(r,total,'green .'); 691 | 692 | end 693 | 694 | 695 | 696 | 697 | 698 | 699 | -------------------------------------------------------------------------------- /EECS/EECCS150.m: -------------------------------------------------------------------------------- 1 | %%%%%% 2 | % % 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | 5 | clear; 6 | 7 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%%% 8 | 9 | %Field Dimensions - x and y maximum (in meters) 10 | xm=200; 11 | ym=100; 12 | 13 | %x and y Coordinates of the Sink 14 | sink.x=0.0*xm; 15 | sink.y=0.0*ym; 16 | 17 | %Number of Nodes in the field 18 | n=150 19 | 20 | 21 | 22 | %Energy Model (all values in Joules) 23 | %Initial Energy 24 | %Eelec=Etx=Erx 25 | ETX=50*0.000000001; 26 | ERX=50*0.000000001; 27 | %Transmit Amplifier types 28 | Efs=10*0.000000000001; 29 | Emp=0.0013*0.000000000001; 30 | %Data Aggregation Energy 31 | EDA=5*0.000000001; 32 | 33 | %Values for Hetereogeneity 34 | %Percentage of nodes than are advanced 35 | m=0.0; 36 | %\alpha 37 | a=1; 38 | 39 | %maximum number of rounds 40 | rmax=800; 41 | 42 | %%%%%%%%%%%%%%%%%%%%%%%%% END OF PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%% 43 | 44 | %Computation of do 45 | do=sqrt(Efs/Emp); 46 | 47 | %Creation of the random Sensor Network 48 | %figure(1); 49 | 50 | 51 | 52 | 53 | 54 | 55 | s(1).xd=35.0;% ad 56 | s(1).yd=22.0; 57 | s(1).E= 6.5; 58 | 59 | s(2).xd=10.0; 60 | s(2).yd=10.0; 61 | s(2).E= 1.5; 62 | 63 | s(3).xd=15.0; 64 | s(3).yd=22.0; 65 | s(3).E= 2.1; 66 | 67 | s(4).xd=25.0; 68 | s(4).yd=13.0; 69 | s(4).E= 1.7; 70 | 71 | s(5).xd=26.0; 72 | s(5).yd=28.0; 73 | s(5).E= 4.6; 74 | 75 | s(6).xd=5.0; 76 | s(6).yd=32.0; 77 | s(6).E= 3.8; 78 | 79 | 80 | s(7).xd=5.0;% ad 81 | s(7).yd=19.0; 82 | s(7).E= 2.4; 83 | 84 | 85 | s(8).xd=15.0; 86 | s(8).yd=29.0; 87 | s(8).E= 3.1; 88 | 89 | 90 | s(9).xd=18.0; 91 | s(9).yd=5.0; 92 | s(9).E= 3.1; 93 | 94 | 95 | s(10).xd=32.0; 96 | s(10).yd=10.0; 97 | s(10).E= 3.1; 98 | 99 | %2 cluster 100 | 101 | s(11).xd=60.0;% ad 102 | s(11).yd=50.0; 103 | s(11).E= 8.4; 104 | 105 | s(12).xd=55.0; 106 | s(12).yd=12.0; 107 | s(12).E= 3.1; 108 | 109 | s(13).xd=71.0; 110 | s(13).yd=13.0; 111 | s(13).E= 1.4; 112 | 113 | s(14).xd=67.0; 114 | s(14).yd=26.0; 115 | s(14).E= 3.7; 116 | 117 | s(15).xd=44.0; 118 | s(15).yd=37.0; 119 | s(15).E= 3.01; 120 | 121 | s(16).xd=60.0; 122 | s(16).yd=40.0; 123 | s(16).E= 4.1; 124 | 125 | 126 | 127 | s(17).xd=35.0; % ad 128 | s(17).yd=40.0; 129 | s(17).E=2.3 ; 130 | 131 | s(18).xd=40.0; 132 | s(18).yd=46.0; 133 | s(18).E= 1.1; 134 | 135 | s(19).xd=43.0; 136 | s(19).yd=58.0; 137 | s(19).E=2.1 ; 138 | 139 | s(20).xd=26.0; 140 | s(20).yd=55.0; 141 | s(20).E=3.3 ; 142 | 143 | s(21).xd=28.0; 144 | s(21).yd=72.0; 145 | s(21).E=2.8 ; 146 | 147 | s(22).xd=16.0; 148 | s(22).yd=45.0; 149 | s(22).E=2.8 ; 150 | 151 | s(23).xd=21.0; 152 | s(23).yd=62.0; 153 | s(23).E=2.8 ; 154 | 155 | s(24).xd=35.0; 156 | s(24).yd=60.0; 157 | s(24).E=2.8 ; 158 | 159 | s(25).xd=35.0; 160 | s(25).yd=48.0; 161 | s(25).E=2.8 ; 162 | 163 | s(26).xd=30.0; 164 | s(26).yd=37.0; 165 | s(26).E=2.8 ; 166 | 167 | s(27).xd=50.0; 168 | s(27).yd=40.0; 169 | s(27).E=2.8 ; 170 | 171 | s(28).xd=47.0; 172 | s(28).yd=20.0; 173 | s(28).E=2.8 ; 174 | 175 | s(29).xd=63.0; 176 | s(29).yd=20.0; 177 | s(29).E=2.8 ; 178 | 179 | 180 | 181 | %3 cluster 182 | 183 | s(30).xd=100.0; %ad 184 | s(30).yd=66.0; 185 | s(30).E=9.9 ; 186 | 187 | s(31).xd=90.0; 188 | s(31).yd=3.0; 189 | s(31).E=3.9 ; 190 | 191 | s(32).xd=106.0; 192 | s(32).yd=6.0; 193 | s(32).E=3.7 ; 194 | 195 | s(33).xd=85.0; 196 | s(33).yd=15.0; 197 | s(33).E=3.6 ; 198 | 199 | 200 | s(34).xd=100.0; 201 | s(34).yd=18.0; 202 | s(34).E=2.5 ; 203 | 204 | s(35).xd=110.0; 205 | s(35).yd=19.0; 206 | s(35).E=2.9 ; 207 | 208 | s(36).xd=112.0; 209 | s(36).yd=33.0; 210 | s(36).E= 2.2; 211 | 212 | s(37).xd=85.0; 213 | s(37).yd=32.0; 214 | s(37).E=4.3 ; 215 | 216 | s(38).xd=102.0; 217 | s(38).yd=42.0; 218 | s(38).E=3.7 ; 219 | 220 | s(39).xd=93.0; 221 | s(39).yd=38.0; 222 | s(39).E=3.9 ; 223 | 224 | s(40).xd=108.0; 225 | s(40).yd=48.0; 226 | s(40).E=4.1 ; 227 | 228 | s(41).xd=98.0; 229 | s(41).yd=62.0; 230 | s(41).E= 3.4; 231 | 232 | s(42).xd=90.0; 233 | s(42).yd=52.0; 234 | s(42).E=2.2 ; 235 | 236 | s(43).xd=80.0; 237 | s(43).yd=46.0; 238 | s(43).E=3.1 ; 239 | 240 | s(44).xd=76.0; 241 | s(44).yd=45.0; 242 | s(44).E=3.2 ; 243 | 244 | s(45).xd=75.0; 245 | s(45).yd=60.0; 246 | s(45).E= 2.4; 247 | 248 | s(46).xd=85.0; 249 | s(46).yd=68.0; 250 | s(46).E=4.1 ; 251 | 252 | s(47).xd=94.0; 253 | s(47).yd=72.0; 254 | s(47).E=3.4 ; 255 | 256 | s(48).xd=75.0; 257 | s(48).yd=70.0; 258 | s(48).E=2.2 ; 259 | 260 | s(49).xd=80.0; 261 | s(49).yd=82.0; 262 | s(49).E=3.3 ; 263 | 264 | s(50).xd=74.0; 265 | s(50).yd=92.0; 266 | s(50).E=4.4 ; 267 | 268 | s(51).xd=65.0; 269 | s(51).yd=78.0; 270 | s(51).E=3.5 ; 271 | 272 | s(52).xd=50.0; 273 | s(52).yd=75.0; 274 | s(52).E=2.4 ; 275 | 276 | s(53).xd=53.0; 277 | s(53).yd=95.0; 278 | s(53).E=2.7 ; 279 | 280 | s(54).xd=40.0; 281 | s(54).yd=88.0; 282 | s(54).E=3.9 ; 283 | 284 | 285 | s(55).xd=22.0; 286 | s(55).yd=78.0; 287 | s(55).E=2.9 ; 288 | 289 | 290 | s(56).xd=24.0; 291 | s(56).yd=90.0; 292 | s(56).E=3.0 ; 293 | 294 | s(57).xd=4.0; 295 | s(57).yd=79.0; 296 | s(57).E=3.9 ; 297 | 298 | 299 | s(58).xd=38.0; 300 | s(58).yd=79.0; 301 | s(58).E=3.5 ; 302 | 303 | 304 | s(59).xd=55.0; 305 | s(59).yd=85.0; 306 | s(59).E=2.9 ; 307 | 308 | 309 | s(60).xd=59.0; 310 | s(60).yd=68.0; 311 | s(60).E=3.7 ; 312 | 313 | s(61).xd=69.0; 314 | s(61).yd=88.0; 315 | s(61).E=2.7 ; 316 | 317 | 318 | s(62).xd=78.0; 319 | s(62).yd=75.0; 320 | s(62).E=2.6 ; 321 | 322 | 323 | s(63).xd=90.0; 324 | s(63).yd=60.0; 325 | s(63).E=3.2 ; 326 | 327 | 328 | s(64).xd=86.0; 329 | s(64).yd=47.0; 330 | s(64).E=4.1 ; 331 | 332 | 333 | s(65).xd=96.0; 334 | s(65).yd=47.0; 335 | s(65).E=3.9 ; 336 | 337 | 338 | s(66).xd=80.0; 339 | s(66).yd=38.0; 340 | s(66).E=3.6 ; 341 | 342 | 343 | s(67).xd=81.0; 344 | s(67).yd=21.0; 345 | s(67).E=4.1 ; 346 | 347 | 348 | s(68).xd=95.0; 349 | s(68).yd=25.0; 350 | s(68).E=3.3 ; 351 | 352 | 353 | s(69).xd=110.0; 354 | s(69).yd=15.0; 355 | s(69).E=3.7 ; 356 | 357 | 358 | %fourth cluster 359 | 360 | s(70).xd=145.0; 361 | s(70).yd=18.0; 362 | s(70).E=9.3; 363 | 364 | s(71).xd=133.0; 365 | s(71).yd=8.0; 366 | s(71).E=4.1 ; 367 | 368 | s(72).xd=125.0; 369 | s(72).yd=18.0; 370 | s(72).E=3.7; 371 | 372 | s(73).xd=135.0; 373 | s(73).yd=34.0; 374 | s(73).E=2.3 ; 375 | 376 | s(74).xd=123.0; 377 | s(74).yd=42.0; 378 | s(74).E=4.6 ; 379 | 380 | s(75).xd=134.0; 381 | s(75).yd=52.0; 382 | s(75).E=2.1 ; 383 | 384 | s(76).xd=118.0; 385 | s(76).yd=50.0; 386 | s(76).E=4.6 ; 387 | 388 | s(77).xd=123.0; 389 | s(77).yd=60.0; 390 | s(77).E=4.1 ; 391 | 392 | s(78).xd=126.0; 393 | s(78).yd=65.0; 394 | s(78).E=2.5 ; 395 | 396 | s(79).xd=113.0; 397 | s(79).yd=65.0; 398 | s(79).E=3.0 ; 399 | 400 | s(80).xd=125.0; 401 | s(80).yd=70.0; 402 | s(80).E=4.1 ; 403 | 404 | s(81).xd=120.0; 405 | s(81).yd=72.0; 406 | s(81).E=3.6 ; 407 | 408 | s(82).xd=124.0; 409 | s(82).yd=80.0; 410 | s(82).E=3.9 ; 411 | 412 | s(83).xd=105.0; 413 | s(83).yd=82.0; 414 | s(83).E=3.2 ; 415 | 416 | s(84).xd=124.0; 417 | s(84).yd=90.0; 418 | s(84).E=2.9 ; 419 | 420 | s(85).xd=116.0; 421 | s(85).yd=92.0; 422 | s(85).E=3.6 ; 423 | 424 | s(86).xd=110.0; 425 | s(86).yd=90.0; 426 | s(86).E=3.6 ; 427 | 428 | s(87).xd=95.0; 429 | s(87).yd=85.0; 430 | s(87).E=2.9 ; 431 | 432 | s(88).xd=90.0; 433 | s(88).yd=95.0; 434 | s(88).E=4.3 ; 435 | 436 | s(89).xd=98.0; 437 | s(89).yd=95.0; 438 | s(89).E=3.3 ; 439 | 440 | s(90).xd=115.0; 441 | s(90).yd=80.0; 442 | s(90).E=2.3 ; 443 | 444 | s(91).xd=116.0; 445 | s(91).yd=73.0; 446 | s(91).E=2.4 ; 447 | 448 | s(92).xd=118.0; 449 | s(92).yd=70.0; 450 | s(92).E=2.7 ; 451 | 452 | s(93).xd=127.0; 453 | s(93).yd=45.0; 454 | s(93).E=2.5 ; 455 | 456 | s(94).xd=136.0; 457 | s(94).yd=35.0; 458 | s(94).E=3.3 ; 459 | 460 | s(95).xd=122.0; 461 | s(95).yd=25.0; 462 | s(95).E=3.5 ; 463 | 464 | s(96).xd=129.0; 465 | s(96).yd=25.0; 466 | s(96).E=3.6 ; 467 | 468 | s(97).xd=126.0; 469 | s(97).yd=9.0; 470 | s(97).E=3.7 ; 471 | 472 | %fifth 473 | 474 | s(98).xd=155.0; %ad 475 | s(98).yd=85.0; 476 | s(98).E=8.9 ; 477 | 478 | s(99).xd=158.0; 479 | s(99).yd=12.0; 480 | s(99).E= 3.8; 481 | 482 | s(100).xd=167.0; 483 | s(100).yd=22.0; 484 | s(100).E=2.9 ; 485 | 486 | s(101).xd=155.0; 487 | s(101).yd=24.0; 488 | s(101).E=2.4 ; 489 | 490 | s(102).xd=147.0; 491 | s(102).yd=31.0; 492 | s(102).E=2.3 ; 493 | 494 | s(103).xd=162; 495 | s(103).yd=35.0; 496 | s(103).E=2.6 ; 497 | 498 | 499 | 500 | s(104).xd=148.0; 501 | s(104).yd=43.0; 502 | s(104).E=4.8 ; 503 | 504 | s(105).xd=154.0; 505 | s(105).yd=55.0; 506 | s(105).E=2.9 ; 507 | 508 | s(106).xd=148.0; 509 | s(106).yd=58.0; 510 | s(106).E=3.8 ; 511 | 512 | s(107).xd=156.0; 513 | s(107).yd=70.0; 514 | s(107).E=3.7 ; 515 | 516 | s(108).xd=149.0; 517 | s(108).yd=69.0; 518 | s(108).E=3.5 ; 519 | 520 | s(109).xd=150.0; 521 | s(109).yd=80.0; 522 | s(109).E=3.2 ; 523 | 524 | s(110).xd=142.0; 525 | s(110).yd=82.0; 526 | s(110).E=2.7 ; 527 | 528 | s(111).xd=143.0; 529 | s(111).yd=88.0; 530 | s(111).E=3.5 ; 531 | 532 | s(112).xd=128.0; 533 | s(112).yd=96.0; 534 | s(112).E=4.3 ; 535 | 536 | 537 | s(113).xd=130.0; 538 | s(113).yd=90.0; 539 | s(113).E=4.4 ; 540 | 541 | s(114).xd=145.0; 542 | s(114).yd=81.0; 543 | s(114).E=4.6 ; 544 | 545 | 546 | s(115).xd=148.0; 547 | s(115).yd=75.0; 548 | s(115).E=4.8 ; 549 | 550 | 551 | s(116).xd=155.0; 552 | s(116).yd=60.0; 553 | s(116).E=2.3 ; 554 | 555 | 556 | s(117).xd=165.0; 557 | s(117).yd=53.0; 558 | s(117).E=3.5 ; 559 | 560 | 561 | s(118).xd=159.0; 562 | s(118).yd=49.0; 563 | s(118).E=3.9 ; 564 | 565 | 566 | s(119).xd=155.0; 567 | s(119).yd=38.0; 568 | s(119).E=2.7 ; 569 | 570 | 571 | s(120).xd=163.0; 572 | s(120).yd=20.0; 573 | s(120).E=2.9 ; 574 | 575 | %sixth 576 | 577 | s(121).xd=195.0; %ad 578 | s(121).yd=10.0; 579 | s(121).E=2.4 ; 580 | 581 | s(122).xd=183.0; 582 | s(122).yd=12.0; 583 | s(122).E=3.7 ; 584 | 585 | s(123).xd=182.0; 586 | s(123).yd=20.0; 587 | s(123).E=3.1 ; 588 | 589 | s(124).xd=195.0; 590 | s(124).yd=25.0; 591 | s(124).E=3.5 ; 592 | 593 | s(125).xd=184.0; 594 | s(125).yd=38.0; 595 | s(125).E=3.8 ; 596 | 597 | s(126).xd=192.0; 598 | s(126).yd=43.0; 599 | s(126).E=3.9 ; 600 | 601 | s(127).xd=185.0; 602 | s(127).yd=52.0; 603 | s(127).E=3.5 ; 604 | 605 | s(128).xd=171.0; 606 | s(128).yd=50.0; 607 | s(128).E=2.9 ; 608 | 609 | s(129).xd=165.0; 610 | s(129).yd=64.0; 611 | s(129).E= 4.9; 612 | 613 | s(130).xd=118.0; 614 | s(130).yd=68.0; 615 | s(130).E=4.3 ; 616 | 617 | s(131).xd=180.0; 618 | s(131).yd=73.0; 619 | s(131).E=4.4 ; 620 | 621 | 622 | 623 | s(132).xd=190.0; 624 | s(132).yd=75.0; 625 | s(132).E=3.2 ; 626 | 627 | s(133).xd=186.0; 628 | s(133).yd=83.0; 629 | s(133).E=2.2 ; 630 | 631 | s(134).xd=173.0; 632 | s(134).yd=83.0; 633 | s(134).E= 3.7; 634 | 635 | s(135).xd=184.0; 636 | s(135).yd=92.0; 637 | s(135).E=1.3 ; 638 | 639 | s(136).xd=169.0; 640 | s(136).yd=88.0; 641 | s(137).E=2.9 ; 642 | 643 | s(138).xd=148.0; 644 | s(138).yd=89.0; 645 | s(138).E=3.1 ; 646 | 647 | s(139).xd=155.0; 648 | s(139).yd=96.0; 649 | s(139).E=1.6 ; 650 | 651 | s(140).xd=146.0; 652 | s(140).yd=75.0; 653 | s(140).E= 2.3; 654 | 655 | s(141).xd=170.0; 656 | s(141).yd=55.0; 657 | s(141).E=2.8 ; 658 | 659 | s(142).xd=183.0; 660 | s(142).yd=38.0; 661 | s(142).E=1.3 ;% 100 nodes 662 | 663 | 664 | 665 | s(143).xd=179.0; 666 | s(143).yd=89.0; 667 | s(143).E=2.8 ; 668 | 669 | 670 | s(144).xd=178.0; 671 | s(144).yd=85.0; 672 | s(144).E=3.9 ; 673 | 674 | 675 | s(145).xd=174.0; 676 | s(145).yd=72.0; 677 | s(145).E=4.0 ; 678 | 679 | 680 | s(146).xd=179.0; 681 | s(146).yd=60.0; 682 | s(146).E=3.6 ; 683 | 684 | 685 | s(147).xd=182.0; 686 | s(147).yd=45.0; 687 | s(147).E=3.4 ; 688 | 689 | 690 | s(148).xd=195.0; 691 | s(148).yd=40.0; 692 | s(148).E=3.8 ; 693 | 694 | 695 | s(149).xd=184.0; 696 | s(149).yd=35.0; 697 | s(149).E=2.6 ; 698 | 699 | 700 | s(150).xd=191.0; 701 | s(150).yd=20.0; 702 | s(150).E=4.2 ; 703 | 704 | 705 | for i=1:1:n 706 | if((s(i).E)>0) 707 | % plot(s(i).xd,s(i).yd,'o'); 708 | end 709 | % hold on; 710 | end 711 | cl=0; 712 | for i=25:25:xm 713 | cl=cl+1; 714 | if(i<=ym) 715 | th = linspace( 0, pi/2, 100); 716 | x = i*cos(th) + 0; 717 | y = i*sin(th) + 0; 718 | %plot(x,y); 719 | else 720 | th = linspace( 0,asin(ym/i), 100); 721 | x=i*cos(th)+0; 722 | y=i*sin(th)+0; 723 | % plot(x,y); 724 | end 725 | end 726 | for i=1:1:n 727 | R=sqrt((s(i).xd)^2+(s(i).yd)^2); 728 | for j=1:1:xm/25 729 | if((R>((j-1)*25))&((j*25)>R)) 730 | s(i).n=j; 731 | break; 732 | end 733 | if(R>xm) 734 | s(i).n=9; 735 | end 736 | end 737 | end 738 | for i=1:1:cl+1 739 | clusterhead(i).number=0; 740 | clusterhead(i).value=0; 741 | for j=1:1:n 742 | if((s(j).n)==i) 743 | if((s(j).n)==1) 744 | value=((s(j).E)/(((s(i).xd)^2)+((s(i).yd)^2))); 745 | if(value>clusterhead(i).value) 746 | clusterhead(i).number=j; 747 | end 748 | else 749 | value=((s(j).E)/(((s(i).xd-s(clusterhead(i-1).number).xd)^2)+(s(i).yd-s(clusterhead(i-1).number).xd)^2)); 750 | if(value>clusterhead(i).value) 751 | clusterhead(i).number=j; 752 | end 753 | end 754 | end 755 | end 756 | end 757 | 758 | for i=1:1:cl 759 | % plot(s(clusterhead(i).number).xd,s(clusterhead(i).number).yd,'green o'); 760 | end 761 | for r =1:1:rmax 762 | 763 | energy=0; 764 | ener=0; 765 | total=0; 766 | % hold off; 767 | % figure(1); 768 | % hold on; 769 | dead=0; 770 | for i=1:1:n 771 | s(i).a=0; 772 | if((s(i).E)>0) 773 | % plot(s(i).xd,s(i).yd,'blue o'); 774 | s(i).useful=1; 775 | % hold on; 776 | end 777 | if((s(i).E)<=0) 778 | % plot(s(i).xd,s(i).yd,'red o'); 779 | s(i).useful=0; 780 | % hold on; 781 | dead=dead+1; 782 | end 783 | end 784 | 785 | for i=25:25:xm 786 | if(i<=ym) 787 | th = linspace( 0, pi/2, 100); 788 | x = i*cos(th) + 0; 789 | y = i*sin(th) + 0; 790 | %plot(x,y); 791 | else 792 | th = linspace( 0,asin(ym/i), 100); 793 | x=i*cos(th)+0; 794 | y=i*sin(th)+0; 795 | % plot(x,y); 796 | end 797 | end 798 | 799 | Statistics(r).dead=dead; 800 | 801 | for i=1:1:cl+1 802 | clusterhead(i).number=0; 803 | clusterhead(i).value=-1; 804 | for j=1:1:150 805 | if(s(j).n==i) 806 | if(s(j).n==1) 807 | value=((s(j).E)/(((s(i).xd)^2)+((s(i).yd)^2))); 808 | if(value>clusterhead(i).value) 809 | clusterhead(i).number=j; 810 | end 811 | else 812 | value=((s(j).E)/(((s(i).xd-s(clusterhead(i-1).number).xd)^2)+(s(i).yd-s(clusterhead(i-1).number).xd)^2)); 813 | if(value>clusterhead(i).value) 814 | clusterhead(i).number=j; 815 | end 816 | end 817 | end 818 | end 819 | % clusterhead(i).number 820 | 821 | % hold on; 822 | % plot(s(clusterhead(i).number).xd,s(clusterhead(i).number).yd,'green o'); 823 | % hold on; 824 | end 825 | 826 | for i=1:1:cl+1 827 | for j=1:1:150 828 | if(s(j).n==i & j~=clusterhead(i).number & s(j).E>0) 829 | dis=sqrt(((s(j).xd)-(s(clusterhead(i).number).xd))^2+((s(j).yd)-(s(clusterhead(i).number).yd))^2); 830 | x=[s(j).xd,s(clusterhead(i).number).xd]; 831 | y=[s(j).yd,s(clusterhead(i).number).yd]; 832 | % hold on; 833 | % plot(x,y,'red'); 834 | % hold on; 835 | if (dis>do) 836 | s(j).E=s(j).E- ( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 837 | end 838 | if (dis<=do) 839 | s(j).E=s(j).E- ( (ETX+EDA)*(4000) + Efs*4000*( dis * dis )); 840 | end 841 | energy=energy+s(j).E; 842 | if(s(clusterhead(i).number).E>0) 843 | s(clusterhead(i).number).E = s(clusterhead(i).number).E- ( (ERX + EDA)*4000 ); 844 | end 845 | ener=ener+s(clusterhead(i).number).E; 846 | end 847 | end 848 | end 849 | for i=1:1:cl+1 850 | nequal=1; 851 | j=i; 852 | k=i-1; 853 | while(nequal==1) 854 | if(k==0) 855 | dis=sqrt(((s(clusterhead(j).number).xd))^2+((s(clusterhead(j).number).yd))^2); 856 | if(dis>do) 857 | s(clusterhead(j).number).E=s(clusterhead(j).number).E-( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 858 | end 859 | if(dis<=do) 860 | s(clusterhead(j).number).E=s(clusterhead(j).number).E-( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 861 | end 862 | ener=ener+s(clusterhead(i).number).E; 863 | x=[s(clusterhead(j).number).xd,0]; 864 | y=[s(clusterhead(j).number).yd,0]; 865 | % plot(x,y,'black'); 866 | nequal=0; 867 | elseif(s(k).E<=0) 868 | k=k-1; 869 | else 870 | dis=sqrt(((s(clusterhead(j).number).xd)-(s(clusterhead(k).number).xd))^2+((s(clusterhead(j).number).yd)-(s(clusterhead(k).number).yd))^2); 871 | if (dis>do) 872 | s(clusterhead(j).number).E=s(clusterhead(j).number).E- ( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 873 | end 874 | if (dis<=do) 875 | s(clusterhead(j).number).E=s(clusterhead(j).number).E- ( (ETX+EDA)*(4000) + Efs*4000*( dis * dis )); 876 | end 877 | ener=ener+s(clusterhead(i).number).E; 878 | x=[s(clusterhead(j).number).xd,s(clusterhead(k).number).xd]; 879 | y=[s(clusterhead(j).number).yd,s(clusterhead(k).number).yd]; 880 | % plot(x,y,'black'); 881 | j=k; 882 | k=j-1; 883 | end 884 | end 885 | end 886 | total= (ener+energy)/(n-dead); 887 | 888 | figure(99); 889 | hold on; 890 | plot(r,dead,'black .'); 891 | 892 | 893 | %figure(10); 894 | %hold on; 895 | %xlabel('Round'); 896 | %ylabel('average energy of normal nodes'); 897 | %plot(r,energy,'black .'); 898 | 899 | %figure(20); 900 | %hold on; 901 | %xlabel('Round'); 902 | %ylabel('average energy of cluster heads'); 903 | %plot(r,ener,'green .'); 904 | 905 | figure(30); 906 | hold on; 907 | xlabel('Round'); 908 | ylabel('average energy of network'); 909 | plot(r,total,'green .'); 910 | end -------------------------------------------------------------------------------- /EECS/EECCS200.m: -------------------------------------------------------------------------------- 1 | %%%%%% 2 | % % 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | 5 | clear; 6 | 7 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%%% 8 | 9 | %Field Dimensions - x and y maximum (in meters) 10 | xm=200; 11 | ym=100; 12 | 13 | %x and y Coordinates of the Sink 14 | sink.x=0.0*xm; 15 | sink.y=0.0*ym; 16 | 17 | %Number of Nodes in the field 18 | n=200 19 | 20 | 21 | 22 | %Energy Model (all values in Joules) 23 | %Initial Energy 24 | %Eelec=Etx=Erx 25 | ETX=50*0.000000001; 26 | ERX=50*0.000000001; 27 | %Transmit Amplifier types 28 | Efs=10*0.000000000001; 29 | Emp=0.0013*0.000000000001; 30 | %Data Aggregation Energy 31 | EDA=5*0.000000001; 32 | 33 | %Values for Hetereogeneity 34 | %Percentage of nodes than are advanced 35 | m=0.0; 36 | %\alpha 37 | a=1; 38 | 39 | %maximum number of rounds 40 | rmax=800; 41 | 42 | %%%%%%%%%%%%%%%%%%%%%%%%% END OF PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%% 43 | 44 | %Computation of do 45 | do=sqrt(Efs/Emp); 46 | 47 | %Creation of the random Sensor Network 48 | figure(1); 49 | 50 | 51 | 52 | 53 | s(1).xd=35.0; % ad 54 | s(1).yd=22.0; 55 | s(1).E= 6.5; 56 | 57 | s(2).xd=10.0; 58 | s(2).yd=10.0; 59 | s(2).E= 1.5; 60 | 61 | s(3).xd=15.0; 62 | s(3).yd=22.0; 63 | s(3).E= 2.1; 64 | 65 | s(4).xd=25.0; 66 | s(4).yd=13.0; 67 | s(4).E= 1.7; 68 | 69 | s(5).xd=26.0; 70 | s(5).yd=28.0; 71 | s(5).E= 4.6; 72 | 73 | s(6).xd=5.0; 74 | s(6).yd=32.0; 75 | s(6).E= 3.8; 76 | 77 | 78 | s(7).xd=5.0; 79 | s(7).yd=19.0; 80 | s(7).E= 2.4; 81 | 82 | 83 | s(8).xd=15.0; 84 | s(8).yd=29.0; 85 | s(8).E= 3.1; 86 | 87 | 88 | s(9).xd=18.0; 89 | s(9).yd=5.0; 90 | s(9).E= 3.1; 91 | 92 | 93 | s(10).xd=32.0; 94 | s(10).yd=10.0; 95 | s(10).E= 3.1; 96 | 97 | 98 | s(11).xd=5.0; 99 | s(11).yd=10.0; 100 | s(11).E= 3.1; 101 | 102 | s(12).xd=17.0; 103 | s(12).yd=12.0; 104 | s(12).E= 2.8; 105 | 106 | s(13).xd=22.0; 107 | s(13).yd=29.0; 108 | s(13).E= 4.3; 109 | 110 | s(14).xd=26.0; 111 | s(14).yd=19.0; 112 | s(14).E= 2.4; 113 | 114 | %2 cluster 115 | 116 | s(15).xd=60.0; %ad 117 | s(15).yd=50.0; 118 | s(15).E= 8.4; 119 | 120 | s(16).xd=55.0; 121 | s(16).yd=12.0; 122 | s(16).E= 3.1; 123 | 124 | s(17).xd=71.0; 125 | s(17).yd=13.0; 126 | s(17).E= 1.4; 127 | 128 | s(18).xd=67.0; 129 | s(18).yd=26.0; 130 | s(18).E= 3.7; 131 | 132 | s(19).xd=44.0; 133 | s(19).yd=37.0; 134 | s(19).E= 3.01; 135 | 136 | s(20).xd=60.0; 137 | s(20).yd=40.0; 138 | s(20).E= 4.1; 139 | 140 | 141 | s(21).xd=35.0; 142 | s(21).yd=40.0; 143 | s(21).E=3.3 ; 144 | 145 | s(22).xd=40.0; 146 | s(22).yd=46.0; 147 | s(22).E= 1.1; 148 | 149 | s(23).xd=43.0; 150 | s(23).yd=58.0; 151 | s(23).E=2.1 ; 152 | 153 | s(24).xd=26.0; 154 | s(24).yd=55.0; 155 | s(24).E=3.3 ; 156 | 157 | s(25).xd=28.0; 158 | s(25).yd=72.0; 159 | s(25).E=2.8 ; 160 | 161 | s(26).xd=16.0; 162 | s(26).yd=45.0; 163 | s(26).E=2.8 ; 164 | 165 | s(27).xd=21.0; 166 | s(27).yd=62.0; 167 | s(27).E=2.8 ; 168 | 169 | s(28).xd=35.0; 170 | s(28).yd=60.0; 171 | s(28).E=2.8 ; 172 | 173 | s(29).xd=35.0; 174 | s(29).yd=48.0; 175 | s(29).E=2.8 ; 176 | 177 | s(30).xd=30.0; 178 | s(30).yd=37.0; 179 | s(30).E=2.8 ; 180 | 181 | s(31).xd=50.0; 182 | s(31).yd=40.0; 183 | s(31).E=2.8 ; 184 | 185 | s(32).xd=47.0; 186 | s(32).yd=20.0; 187 | s(32).E=2.8 ; 188 | 189 | s(33).xd=63.0; 190 | s(33).yd=20.0; 191 | s(33).E=2.8 ; 192 | 193 | s(34).xd=8.0; 194 | s(34).yd=69.0; 195 | s(34).E= 2.9; 196 | 197 | s(35).xd=8.0; 198 | s(35).yd=52.0; 199 | s(35).E= 1.9; 200 | 201 | s(36).xd=28.0; 202 | s(36).yd=44.0; 203 | s(36).E= 3.3; 204 | 205 | s(37).xd=40.0; 206 | s(37).yd=32.0; 207 | s(37).E= 2.8; 208 | 209 | s(38).xd=50.0; 210 | s(38).yd=49.0; 211 | s(38).E= 4.1; 212 | 213 | s(39).xd=57.0; 214 | s(39).yd=30.0; 215 | s(39).E= 2.8; 216 | 217 | s(40).xd=64.0; 218 | s(40).yd=12.0; 219 | s(40).E= 3.5; 220 | 221 | 222 | %3 cluster 223 | 224 | s(41).xd=100.0; %ad 225 | s(41).yd=66.0; 226 | s(41).E=9.9 ; 227 | 228 | s(42).xd=90.0; 229 | s(42).yd=3.0; 230 | s(42).E=3.9 ; 231 | 232 | s(43).xd=106.0; 233 | s(43).yd=6.0; 234 | s(43).E=3.7 ; 235 | 236 | s(44).xd=85.0; 237 | s(44).yd=15.0; 238 | s(44).E=3.6 ; 239 | 240 | 241 | s(45).xd=100.0; 242 | s(45).yd=18.0; 243 | s(45).E=2.5 ; 244 | 245 | s(46).xd=110.0; 246 | s(46).yd=19.0; 247 | s(46).E=2.9 ; 248 | 249 | s(47).xd=112.0; 250 | s(47).yd=33.0; 251 | s(47).E= 2.2; 252 | 253 | s(48).xd=85.0; 254 | s(48).yd=32.0; 255 | s(48).E=4.3 ; 256 | 257 | s(49).xd=102.0; 258 | s(49).yd=42.0; 259 | s(49).E=3.7 ; 260 | 261 | s(50).xd=93.0; 262 | s(50).yd=38.0; 263 | s(50).E=3.9 ; 264 | 265 | s(51).xd=108.0; 266 | s(51).yd=48.0; 267 | s(51).E=4.1 ; 268 | 269 | s(52).xd=98.0; 270 | s(52).yd=62.0; 271 | s(52).E= 3.4; 272 | 273 | s(53).xd=90.0; 274 | s(53).yd=52.0; 275 | s(53).E=2.2 ; 276 | 277 | s(54).xd=80.0; 278 | s(54).yd=46.0; 279 | s(54).E=3.1 ; 280 | 281 | s(55).xd=76.0; 282 | s(55).yd=45.0; 283 | s(55).E=3.2 ; 284 | 285 | s(56).xd=75.0; 286 | s(56).yd=60.0; 287 | s(56).E= 2.4; 288 | 289 | s(57).xd=85.0; 290 | s(57).yd=68.0; 291 | s(57).E=4.1 ; 292 | 293 | s(58).xd=94.0; 294 | s(58).yd=72.0; 295 | s(58).E=3.4 ; 296 | 297 | s(59).xd=75.0; 298 | s(59).yd=70.0; 299 | s(59).E=2.2 ; 300 | 301 | s(60).xd=80.0; 302 | s(60).yd=82.0; 303 | s(60).E=3.3 ; 304 | 305 | s(61).xd=74.0; 306 | s(61).yd=92.0; 307 | s(61).E=4.4 ; 308 | 309 | s(62).xd=65.0; 310 | s(62).yd=78.0; 311 | s(62).E=3.5 ; 312 | 313 | s(63).xd=50.0; 314 | s(63).yd=75.0; 315 | s(63).E=2.4 ; 316 | 317 | s(64).xd=53.0; 318 | s(64).yd=95.0; 319 | s(64).E=2.7 ; 320 | 321 | s(65).xd=40.0; 322 | s(65).yd=88.0; 323 | s(65).E=3.9 ; 324 | 325 | 326 | s(66).xd=22.0; 327 | s(66).yd=78.0; 328 | s(66).E=2.9 ; 329 | 330 | 331 | s(67).xd=24.0; 332 | s(67).yd=90.0; 333 | s(67).E=3.0 ; 334 | 335 | s(68).xd=4.0; 336 | s(68).yd=79.0; 337 | s(68).E=3.9 ; 338 | 339 | 340 | s(69).xd=38.0; 341 | s(69).yd=79.0; 342 | s(69).E=3.5 ; 343 | 344 | 345 | s(70).xd=55.0; 346 | s(70).yd=85.0; 347 | s(70).E=2.9 ; 348 | 349 | 350 | s(71).xd=59.0; 351 | s(71).yd=68.0; 352 | s(71).E=3.7 ; 353 | 354 | s(72).xd=69.0; 355 | s(72).yd=88.0; 356 | s(72).E=2.7 ; 357 | 358 | 359 | s(73).xd=78.0; 360 | s(73).yd=75.0; 361 | s(73).E=2.6 ; 362 | 363 | 364 | s(74).xd=90.0; 365 | s(74).yd=60.0; 366 | s(74).E=3.2 ; 367 | 368 | 369 | s(75).xd=86.0; 370 | s(75).yd=47.0; 371 | s(75).E=4.1 ; 372 | 373 | 374 | s(76).xd=96.0; 375 | s(76).yd=47.0; 376 | s(76).E=3.9 ; 377 | 378 | 379 | s(77).xd=80.0; 380 | s(77).yd=38.0; 381 | s(77).E=3.6 ; 382 | 383 | 384 | s(78).xd=81.0; 385 | s(78).yd=21.0; 386 | s(78).E=4.1 ; 387 | 388 | 389 | s(79).xd=95.0; 390 | s(79).yd=25.0; 391 | s(79).E=3.3 ; 392 | 393 | 394 | s(80).xd=110.0; 395 | s(80).yd=15.0; 396 | s(80).E=3.7 ; 397 | 398 | s(81).xd=9.0; 399 | s(81).yd=88.0; 400 | s(81).E= 2.4; 401 | 402 | s(82).xd=29.0; 403 | s(82).yd=98.0; 404 | s(82).E= 3.1; 405 | 406 | s(83).xd=46.0; 407 | s(83).yd=80.0; 408 | s(83).E= 2.9; 409 | 410 | s(84).xd=59.0; 411 | s(84).yd=95.0; 412 | s(84).E= 3.2; 413 | 414 | s(85).xd=72.0; 415 | s(85).yd=79.0; 416 | s(85).E= 2.8; 417 | 418 | s(86).xd=65.0; 419 | s(86).yd=65.0; 420 | s(86).E= 3.8; 421 | 422 | s(87).xd=70.0; 423 | s(87).yd=50.0; 424 | s(87).E= 3.1; 425 | 426 | s(88).xd=80.0; 427 | s(88).yd=62.0; 428 | s(88).E= 1.1; 429 | 430 | s(89).xd=92.0; 431 | s(89).yd=69.0; 432 | s(89).E= 4.1; 433 | 434 | s(90).xd=104.0; 435 | s(90).yd=30.0; 436 | s(90).E= 3.1; 437 | 438 | s(91).xd=92.0; 439 | s(91).yd=19.0; 440 | s(91).E= 2.7; 441 | 442 | s(92).xd=88.0; 443 | s(92).yd=42.0; 444 | s(92).E= 2.9; 445 | 446 | 447 | 448 | %fourth cluster 449 | 450 | s(93).xd=145.0; 451 | s(93).yd=18.0; 452 | s(93).E=9.3; 453 | 454 | s(94).xd=133.0; 455 | s(94).yd=8.0; 456 | s(94).E=4.1 ; 457 | 458 | s(95).xd=125.0; 459 | s(95).yd=18.0; 460 | s(95).E=3.7 461 | 462 | s(96).xd=135.0; 463 | s(96).yd=34.0; 464 | s(96).E=8.3 ; 465 | 466 | s(97).xd=123.0; 467 | s(97).yd=42.0; 468 | s(97).E=4.6 ; 469 | 470 | s(98).xd=134.0; 471 | s(98).yd=52.0; 472 | s(98).E=2.1 ; 473 | 474 | s(99).xd=118.0; 475 | s(99).yd=50.0; 476 | s(99).E=4.6 ; 477 | 478 | s(100).xd=123.0; 479 | s(100).yd=60.0; 480 | s(100).E=4.1 ; 481 | 482 | s(101).xd=126.0; 483 | s(101).yd=65.0; 484 | s(101).E=2.5 ; 485 | 486 | s(102).xd=113.0; 487 | s(102).yd=65.0; 488 | s(102).E=3.0 ; 489 | 490 | s(103).xd=125.0; 491 | s(103).yd=70.0; 492 | s(103).E=4.1 ; 493 | 494 | s(104).xd=120.0; 495 | s(104).yd=72.0; 496 | s(104).E=3.6 ; 497 | 498 | s(105).xd=124.0; 499 | s(105).yd=80.0; 500 | s(105).E=3.9 ; 501 | 502 | s(106).xd=105.0; 503 | s(106).yd=82.0; 504 | s(106).E=3.2 ; 505 | 506 | s(107).xd=124.0; 507 | s(107).yd=90.0; 508 | s(107).E=2.9 ; 509 | 510 | s(108).xd=116.0; 511 | s(108).yd=92.0; 512 | s(108).E=3.6 ; 513 | 514 | s(109).xd=110.0; 515 | s(109).yd=90.0; 516 | s(109).E=3.6 ; 517 | 518 | s(110).xd=95.0; 519 | s(110).yd=85.0; 520 | s(110).E=2.9 ; 521 | 522 | s(111).xd=90.0; 523 | s(111).yd=95.0; 524 | s(111).E=4.3 ; 525 | 526 | s(112).xd=98.0; 527 | s(112).yd=95.0; 528 | s(112).E=3.3 ; 529 | 530 | s(113).xd=115.0; 531 | s(113).yd=80.0; 532 | s(113).E=2.3 ; 533 | 534 | s(114).xd=116.0; 535 | s(114).yd=73.0; 536 | s(114).E=2.4 ; 537 | 538 | s(115).xd=118.0; 539 | s(115).yd=70.0; 540 | s(115).E=2.7 ; 541 | 542 | s(116).xd=127.0; 543 | s(116).yd=45.0; 544 | s(116).E=2.5 ; 545 | 546 | s(117).xd=136.0; 547 | s(117).yd=35.0; 548 | s(117).E=3.3 ; 549 | 550 | s(118).xd=122.0; 551 | s(118).yd=25.0; 552 | s(118).E=3.5 ; 553 | 554 | s(119).xd=129.0; 555 | s(119).yd=25.0; 556 | s(119).E=3.6 ; 557 | 558 | s(120).xd=126.0; 559 | s(120).yd=9.0; 560 | s(120).E=3.7 ; 561 | 562 | s(121).xd=85.0; 563 | s(121).yd=98.0; 564 | s(121).E=3.2; 565 | 566 | s(122).xd=100.0; 567 | s(122).yd=84.0; 568 | s(122).E=2.7; 569 | 570 | s(123).xd=104.0; 571 | s(123).yd=78.0; 572 | s(123).E=3.1; 573 | 574 | s(124).xd=113.0; 575 | s(124).yd=69.0; 576 | s(124).E=3.5; 577 | 578 | s(125).xd=134.0; 579 | s(125).yd=60.0; 580 | s(125).E=2.5; 581 | 582 | s(126).xd=138.0; 583 | s(126).yd=48.0; 584 | s(126).E=2.2; 585 | 586 | s(127).xd=119.0; 587 | s(127).yd=45.0; 588 | s(127).E=2.9; 589 | 590 | s(128).xd=130.0; 591 | s(128).yd=35.0; 592 | s(128).E=3.6; 593 | 594 | s(129).xd=135.0; 595 | s(129).yd=15.0; 596 | s(129).E=3.8; 597 | 598 | %fifth 599 | 600 | s(130).xd=155.0; %ad 601 | s(130).yd=85.0; 602 | s(130).E=8.9 ; 603 | 604 | s(131).xd=158.0; 605 | s(131).yd=12.0; 606 | s(131).E= 3.8; 607 | 608 | s(132).xd=167.0; 609 | s(132).yd=22.0; 610 | s(132).E=2.9 ; 611 | 612 | s(133).xd=155.0; 613 | s(133).yd=24.0; 614 | s(133).E=2.4 ; 615 | 616 | s(134).xd=147.0; 617 | s(134).yd=31.0; 618 | s(134).E=2.3 ; 619 | 620 | s(135).xd=162; 621 | s(135).yd=35.0; 622 | s(135).E=2.6 ; 623 | 624 | 625 | 626 | s(136).xd=148.0; 627 | s(136).yd=43.0; 628 | s(136).E=4.8 ; 629 | 630 | s(137).xd=154.0; 631 | s(137).yd=55.0; 632 | s(137).E=2.9 ; 633 | 634 | s(138).xd=148.0; 635 | s(138).yd=58.0; 636 | s(138).E=3.8 ; 637 | 638 | s(139).xd=156.0; 639 | s(139).yd=70.0; 640 | s(139).E=3.7 ; 641 | 642 | s(140).xd=149.0; 643 | s(140).yd=69.0; 644 | s(140).E=3.5 ; 645 | 646 | s(141).xd=150.0; 647 | s(141).yd=80.0; 648 | s(141).E=3.2 ; 649 | 650 | s(142).xd=142.0; 651 | s(142).yd=82.0; 652 | s(142).E=2.7 ; 653 | 654 | s(143).xd=143.0; 655 | s(143).yd=88.0; 656 | s(143).E=3.5 ; 657 | 658 | s(144).xd=128.0; 659 | s(144).yd=96.0; 660 | s(144).E=4.3 ; 661 | 662 | 663 | s(145).xd=130.0; 664 | s(145).yd=90.0; 665 | s(145).E=4.4 ; 666 | 667 | s(146).xd=145.0; 668 | s(146).yd=81.0; 669 | s(146).E=4.6 ; 670 | 671 | 672 | s(147).xd=148.0; 673 | s(147).yd=75.0; 674 | s(147).E=4.8 ; 675 | 676 | 677 | s(148).xd=155.0; 678 | s(148).yd=60.0; 679 | s(148).E=2.3 ; 680 | 681 | 682 | s(149).xd=165.0; 683 | s(149).yd=53.0; 684 | s(149).E=3.5 ; 685 | 686 | 687 | s(150).xd=159.0; 688 | s(150).yd=49.0; 689 | s(150).E=3.9 ; 690 | 691 | 692 | s(151).xd=155.0; 693 | s(151).yd=38.0; 694 | s(151).E=2.7 ; 695 | 696 | 697 | s(152).xd=163.0; 698 | s(152).yd=20.0; 699 | s(152).E=2.9 ; 700 | 701 | s(153).xd=123.0; 702 | s(153).yd=98.0; 703 | s(153).E=3.6; 704 | 705 | s(154).xd=135.0; 706 | s(154).yd=85.0; 707 | s(154).E=2.9; 708 | 709 | s(155).xd=150.0; 710 | s(155).yd=65.0; 711 | s(155).E=2.7; 712 | 713 | s(156).xd=146.0; 714 | s(156).yd=52.0; 715 | s(156).E=1.5; 716 | 717 | s(157).xd=170.0; 718 | s(157).yd=45.0; 719 | s(157).E=2.3; 720 | 721 | s(158).xd=170.0; 722 | s(158).yd=37.0; 723 | s(158).E=2.6; 724 | 725 | s(159).xd=154.0; 726 | s(159).yd=20.0; 727 | s(159).E=1.1; 728 | 729 | s(160).xd=165.0; 730 | s(160).yd=15.0; 731 | s(160).E=2.8; 732 | 733 | %sixth 734 | 735 | s(161).xd=195.0; %ad 736 | s(161).yd=10.0; 737 | s(161).E=9.4 ; 738 | 739 | s(162).xd=183.0; 740 | s(162).yd=12.0; 741 | s(162).E=3.7 ; 742 | 743 | s(163).xd=182.0; 744 | s(163).yd=20.0; 745 | s(163).E=3.1 ; 746 | 747 | s(164).xd=195.0; 748 | s(164).yd=25.0; 749 | s(164).E=3.5 ; 750 | 751 | s(165).xd=184.0; 752 | s(165).yd=38.0; 753 | s(165).E=3.8 ; 754 | 755 | s(166).xd=192.0; 756 | s(166).yd=43.0; 757 | s(166).E=3.9 ; 758 | 759 | s(167).xd=185.0; 760 | s(167).yd=52.0; 761 | s(167).E=3.5 ; 762 | 763 | s(168).xd=171.0; 764 | s(168).yd=50.0; 765 | s(168).E=2.9 ; 766 | 767 | s(169).xd=165.0; 768 | s(169).yd=64.0; 769 | s(169).E= 4.9; 770 | 771 | s(170).xd=118.0; 772 | s(170).yd=68.0; 773 | s(170).E=4.3 ; 774 | 775 | s(171).xd=180.0; 776 | s(171).yd=73.0; 777 | s(171).E=4.4 ; 778 | 779 | 780 | 781 | s(172).xd=190.0; 782 | s(172).yd=75.0; 783 | s(172).E=3.2 ; 784 | 785 | s(173).xd=186.0; 786 | s(173).yd=83.0; 787 | s(173).E=2.2 ; 788 | 789 | s(174).xd=173.0; 790 | s(174).yd=83.0; 791 | s(174).E= 3.7; 792 | 793 | s(175).xd=184.0; 794 | s(175).yd=92.0; 795 | s(175).E=1.3 ; 796 | 797 | s(176).xd=169.0; 798 | s(176).yd=88.0; 799 | s(176).E=2.9 ; 800 | 801 | s(178).xd=148.0; 802 | s(178).yd=89.0; 803 | s(178).E=3.1 ; 804 | 805 | s(179).xd=155.0; 806 | s(179).yd=96.0; 807 | s(179).E=1.6 ; 808 | 809 | s(180).xd=146.0; 810 | s(180).yd=75.0; 811 | s(180).E= 2.3; 812 | 813 | s(181).xd=170.0; 814 | s(181).yd=55.0; 815 | s(181).E=2.8 ; 816 | 817 | s(182).xd=183.0; 818 | s(182).yd=38.0; 819 | s(182).E=1.3 ; 820 | 821 | 822 | 823 | s(183).xd=179.0; 824 | s(183).yd=89.0; 825 | s(183).E=2.8 ; 826 | 827 | 828 | s(184).xd=178.0; 829 | s(184).yd=85.0; 830 | s(184).E=3.9 ; 831 | 832 | 833 | s(185).xd=174.0; 834 | s(185).yd=72.0; 835 | s(185).E=4.0 ; 836 | 837 | 838 | s(186).xd=179.0; 839 | s(186).yd=60.0; 840 | s(186).E=3.6 ; 841 | 842 | 843 | s(187).xd=182.0; 844 | s(187).yd=45.0; 845 | s(187).E=3.4 ; 846 | 847 | 848 | s(188).xd=195.0; 849 | s(188).yd=40.0; 850 | s(188).E=3.8 ; 851 | 852 | 853 | s(189).xd=184.0; 854 | s(189).yd=35.0; 855 | s(189).E=2.6 ; 856 | 857 | 858 | s(190).xd=191.0; 859 | s(190).yd=20.0; 860 | s(190).E=4.2 ; 861 | 862 | s(191).xd=164.0; 863 | s(191).yd=85.0; 864 | s(191).E=1.9; 865 | 866 | s(192).xd=155.0; 867 | s(192).yd=94.0; 868 | s(192).E=3.9; 869 | 870 | s(193).xd=172.0; 871 | s(193).yd=98.0; 872 | s(193).E=3.1; 873 | 874 | s(194).xd=189.0; 875 | s(194).yd=98.0; 876 | s(194).E=2.7; 877 | 878 | s(195).xd=195.0; 879 | s(195).yd=85.0; 880 | s(195).E=3.3; 881 | 882 | s(196).xd=179.0; 883 | s(196).yd=65.0; 884 | s(196).E=4.0; 885 | 886 | s(197).xd=195.0; 887 | s(197).yd=59.0; 888 | s(197).E=2.6; 889 | 890 | s(198).xd=179.0; 891 | s(198).yd=39.0; 892 | s(198).E=1.8; 893 | 894 | s(199).xd=195.0; 895 | s(199).yd=30.0; 896 | s(199).E=3.3; 897 | 898 | s(200).xd=190.0; 899 | s(200).yd=10.0; 900 | s(200).E=3.7; 901 | sum=0; 902 | for i=1:1:n 903 | if((s(i).E)>0) 904 | %plot(s(i).xd,s(i).yd,'o'); 905 | end 906 | %hold on; 907 | end 908 | cl=0; 909 | for i=25:25:xm 910 | cl=cl+1; 911 | if(i<=ym) 912 | th = linspace( 0, pi/2, 100); 913 | x = i*cos(th) + 0; 914 | y = i*sin(th) + 0; 915 | %plot(x,y); 916 | else 917 | th = linspace( 0,asin(ym/i), 100); 918 | x=i*cos(th)+0; 919 | y=i*sin(th)+0; 920 | % plot(x,y); 921 | end 922 | end 923 | for i=1:1:n 924 | R=sqrt((s(i).xd)^2+(s(i).yd)^2); 925 | for j=1:1:xm/25 926 | if((R>((j-1)*25))&((j*25)>R)) 927 | s(i).n=j; 928 | break; 929 | end 930 | if(R>xm) 931 | s(i).n=9; 932 | end 933 | end 934 | end 935 | for i=1:1:cl+1 936 | clusterhead(i).number=0; 937 | clusterhead(i).value=0; 938 | for j=1:1:n 939 | if((s(j).n)==i) 940 | if((s(j).n)==1) 941 | value=((s(j).E)/(((s(i).xd)^2)+((s(i).yd)^2))); 942 | if(value>clusterhead(i).value) 943 | clusterhead(i).number=j; 944 | end 945 | else 946 | value=((s(j).E)/(((s(i).xd-s(clusterhead(i-1).number).xd)^2)+(s(i).yd-s(clusterhead(i-1).number).xd)^2)); 947 | if(value>clusterhead(i).value) 948 | clusterhead(i).number=j; 949 | end 950 | end 951 | end 952 | end 953 | end 954 | 955 | for i=1:1:cl 956 | % plot(s(clusterhead(i).number).xd,s(clusterhead(i).number).yd,'green o'); 957 | end 958 | for r =1:1:rmax 959 | r 960 | energy=0; 961 | ener=0; 962 | total=0; 963 | % hold off; 964 | % figure(1); 965 | % hold on; 966 | dead=0; 967 | for i=1:1:n 968 | s(i).a=0; 969 | if((s(i).E)>0) 970 | % plot(s(i).xd,s(i).yd,'blue o'); 971 | s(i).useful=1; 972 | hold on; 973 | end 974 | if((s(i).E)<=0) 975 | % plot(s(i).xd,s(i).yd,'red o'); 976 | s(i).useful=0; 977 | % hold on; 978 | dead=dead+1; 979 | end 980 | end 981 | 982 | for i=25:25:xm 983 | if(i<=ym) 984 | th = linspace( 0, pi/2, 100); 985 | x = i*cos(th) + 0; 986 | y = i*sin(th) + 0; 987 | %plot(x,y); 988 | else 989 | th = linspace( 0,asin(ym/i), 100); 990 | x=i*cos(th)+0; 991 | y=i*sin(th)+0; 992 | % plot(x,y); 993 | end 994 | end 995 | 996 | Statistics(r).dead=dead; 997 | 998 | for i=1:1:cl+1 999 | clusterhead(i).number=0; 1000 | clusterhead(i).value=-1; 1001 | for j=1:1:200 1002 | if(s(j).n==i) 1003 | if(s(j).n==1) 1004 | value=((s(j).E)/(((s(i).xd)^2)+((s(i).yd)^2))); 1005 | if(value>clusterhead(i).value) 1006 | clusterhead(i).number=j; 1007 | end 1008 | else 1009 | value=((s(j).E)/(((s(i).xd-s(clusterhead(i-1).number).xd)^2)+(s(i).yd-s(clusterhead(i-1).number).xd)^2)); 1010 | if(value>clusterhead(i).value) 1011 | clusterhead(i).number=j; 1012 | end 1013 | end 1014 | end 1015 | end 1016 | % clusterhead(i).number 1017 | 1018 | hold on; 1019 | % plot(s(clusterhead(i).number).xd,s(clusterhead(i).number).yd,'green o'); 1020 | hold on; 1021 | end 1022 | 1023 | for i=1:1:cl+1 1024 | for j=1:1:200 1025 | if(s(j).n==i & j~=clusterhead(i).number & s(j).E>0) 1026 | dis=sqrt(((s(j).xd)-(s(clusterhead(i).number).xd))^2+((s(j).yd)-(s(clusterhead(i).number).yd))^2); 1027 | x=[s(j).xd,s(clusterhead(i).number).xd]; 1028 | y=[s(j).yd,s(clusterhead(i).number).yd]; 1029 | % hold on; 1030 | % plot(x,y,'red'); 1031 | % hold on; 1032 | if (dis>do) 1033 | s(j).E=s(j).E- ( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 1034 | end 1035 | if (dis<=do) 1036 | s(j).E=s(j).E- ( (ETX+EDA)*(4000) + Efs*4000*( dis * dis )); 1037 | end 1038 | energy=energy+s(j).E; 1039 | if(s(clusterhead(i).number).E>0) 1040 | s(clusterhead(i).number).E = s(clusterhead(i).number).E- ( (ERX + EDA)*4000 ); 1041 | end 1042 | ener=ener+s(clusterhead(i).number).E; 1043 | end 1044 | end 1045 | end 1046 | for i=1:1:cl+1 1047 | nequal=1; 1048 | j=i; 1049 | k=i-1; 1050 | while(nequal==1) 1051 | if(k==0) 1052 | dis=sqrt(((s(clusterhead(j).number).xd))^2+((s(clusterhead(j).number).yd))^2); 1053 | if(dis>do) 1054 | s(clusterhead(j).number).E=s(clusterhead(j).number).E-( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 1055 | end 1056 | if(dis<=do) 1057 | s(clusterhead(j).number).E=s(clusterhead(j).number).E-( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 1058 | end 1059 | ener=ener+s(clusterhead(i).number).E; 1060 | x=[s(clusterhead(j).number).xd,0]; 1061 | y=[s(clusterhead(j).number).yd,0]; 1062 | % plot(x,y,'black'); 1063 | nequal=0; 1064 | elseif(s(k).E<=0) 1065 | k=k-1; 1066 | else 1067 | dis=sqrt(((s(clusterhead(j).number).xd)-(s(clusterhead(k).number).xd))^2+((s(clusterhead(j).number).yd)-(s(clusterhead(k).number).yd))^2); 1068 | if (dis>do) 1069 | s(clusterhead(j).number).E=s(clusterhead(j).number).E- ( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 1070 | end 1071 | if (dis<=do) 1072 | s(clusterhead(j).number).E=s(clusterhead(j).number).E- ( (ETX+EDA)*(4000) + Efs*4000*( dis * dis )); 1073 | end 1074 | ener=ener+s(clusterhead(i).number).E; 1075 | x=[s(clusterhead(j).number).xd,s(clusterhead(k).number).xd]; 1076 | y=[s(clusterhead(j).number).yd,s(clusterhead(k).number).yd]; 1077 | %plot(x,y,'black'); 1078 | j=k; 1079 | k=j-1; 1080 | end 1081 | end 1082 | end 1083 | total= (ener+energy)/(n-dead); 1084 | 1085 | figure(99); 1086 | hold on; 1087 | plot(r,dead,'black .'); 1088 | 1089 | 1090 | %figure(10); 1091 | %hold on; 1092 | %xlabel('Round'); 1093 | %ylabel('average energy of normal nodes'); 1094 | %plot(r,energy,'black .'); 1095 | 1096 | %figure(20); 1097 | %hold on; 1098 | %xlabel('Round'); 1099 | %ylabel('average energy of cluster heads'); 1100 | %plot(r,ener,'green .'); 1101 | 1102 | figure(30); 1103 | hold on; 1104 | xlabel('Round'); 1105 | ylabel('average energy of network'); 1106 | plot(r,total,'green .'); 1107 | end -------------------------------------------------------------------------------- /EECS/EECCS250.m: -------------------------------------------------------------------------------- 1 | %%%%%% 2 | % % 3 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 4 | 5 | clear; 6 | 7 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%%% 8 | 9 | %Field Dimensions - x and y maximum (in meters) 10 | xm=200; 11 | ym=100; 12 | 13 | %x and y Coordinates of the Sink 14 | sink.x=0.0*xm; 15 | sink.y=0.0*ym; 16 | 17 | %Number of Nodes in the field 18 | n=250 19 | 20 | 21 | 22 | %Energy Model (all values in Joules) 23 | %Initial Energy 24 | %Eelec=Etx=Erx 25 | ETX=50*0.000000001; 26 | ERX=50*0.000000001; 27 | %Transmit Amplifier types 28 | Efs=10*0.000000000001; 29 | Emp=0.0013*0.000000000001; 30 | %Data Aggregation Energy 31 | EDA=5*0.000000001; 32 | 33 | %Values for Hetereogeneity 34 | %Percentage of nodes than are advanced 35 | m=0.0; 36 | %\alpha 37 | a=1; 38 | 39 | %maximum number of rounds 40 | rmax=800; 41 | 42 | %%%%%%%%%%%%%%%%%%%%%%%%% END OF PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%% 43 | 44 | %Computation of do 45 | do=sqrt(Efs/Emp); 46 | 47 | %Creation of the random Sensor Network 48 | figure(1); 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | s(1).xd=35.0;% ad 62 | s(1).yd=22.0; 63 | s(1).E= 6.5; 64 | 65 | s(2).xd=10.0; 66 | s(2).yd=10.0; 67 | s(2).E= 1.5; 68 | 69 | s(3).xd=15.0; 70 | s(3).yd=22.0; 71 | s(3).E= 2.1; 72 | 73 | s(4).xd=25.0; 74 | s(4).yd=13.0; 75 | s(4).E= 1.7; 76 | 77 | s(5).xd=26.0; 78 | s(5).yd=28.0; 79 | s(5).E= 4.6; 80 | 81 | s(6).xd=5.0; 82 | s(6).yd=32.0; 83 | s(6).E= 3.8; 84 | 85 | 86 | s(7).xd=5.0; 87 | s(7).yd=19.0; 88 | s(7).E= 2.4; 89 | 90 | 91 | s(8).xd=15.0; 92 | s(8).yd=29.0; 93 | s(8).E= 3.1; 94 | 95 | 96 | s(9).xd=18.0; 97 | s(9).yd=5.0; 98 | s(9).E= 3.1; 99 | 100 | 101 | s(10).xd=32.0; 102 | s(10).yd=10.0; 103 | s(10).E= 3.1; 104 | 105 | 106 | s(11).xd=5.0; 107 | s(11).yd=10.0; 108 | s(11).E= 3.1; 109 | 110 | s(12).xd=17.0; 111 | s(12).yd=12.0; 112 | s(12).E= 2.8; 113 | 114 | s(13).xd=22.0; 115 | s(13).yd=29.0; 116 | s(13).E= 4.3; 117 | 118 | s(14).xd=26.0; 119 | s(14).yd=19.0; 120 | s(14).E= 2.4; 121 | 122 | s(15).xd=9.0; 123 | s(15).yd=5.0; 124 | s(15).E= 1.8; 125 | 126 | s(16).xd=10.0; 127 | s(16).yd=42.0; 128 | s(16).E= 3.1; 129 | 130 | s(17).xd=11.0; 131 | s(17).yd=22.0; 132 | s(17).E= 2.3; 133 | 134 | s(18).xd=26.0; 135 | s(18).yd=20.0; 136 | s(18).E= 2.6; 137 | 138 | s(19).xd=37.0; 139 | s(19).yd=14.0; 140 | s(19).E= 4.2; 141 | 142 | % cluster 143 | 144 | s(20).xd=60.0; % ad 145 | s(20).yd=50.0; 146 | s(20).E= 8.4; 147 | 148 | s(21).xd=55.0; 149 | s(21).yd=12.0; 150 | s(21).E= 3.1; 151 | 152 | s(22).xd=71.0; 153 | s(22).yd=13.0; 154 | s(22).E= 1.4; 155 | 156 | s(23).xd=67.0; 157 | s(23).yd=26.0; 158 | s(23).E= 3.7; 159 | 160 | s(24).xd=44.0; 161 | s(24).yd=37.0; 162 | s(24).E= 3.01; 163 | 164 | s(25).xd=60.0; 165 | s(25).yd=40.0; 166 | s(25).E= 4.1; 167 | 168 | 169 | s(26).xd=35.0; 170 | s(26).yd=40.0; 171 | s(26).E=3.3 ; 172 | 173 | s(27).xd=40.0; 174 | s(27).yd=46.0; 175 | s(27).E= 1.1; 176 | 177 | s(28).xd=43.0; 178 | s(28).yd=58.0; 179 | s(28).E=2.1 ; 180 | 181 | s(29).xd=26.0; 182 | s(29).yd=55.0; 183 | s(29).E=3.3 ; 184 | 185 | s(30).xd=28.0; 186 | s(30).yd=72.0; 187 | s(30).E=2.8 ; 188 | 189 | s(31).xd=16.0; 190 | s(31).yd=45.0; 191 | s(31).E=2.8 ; 192 | 193 | s(32).xd=21.0; 194 | s(32).yd=62.0; 195 | s(32).E=2.8 ; 196 | 197 | s(33).xd=35.0; 198 | s(33).yd=60.0; 199 | s(33).E=2.8 ; 200 | 201 | s(34).xd=35.0; 202 | s(34).yd=48.0; 203 | s(34).E=2.8 ; 204 | 205 | s(35).xd=30.0; 206 | s(35).yd=37.0; 207 | s(35).E=2.8 ; 208 | 209 | s(36).xd=50.0; 210 | s(36).yd=40.0; 211 | s(36).E=2.8 ; 212 | 213 | s(37).xd=47.0; 214 | s(37).yd=20.0; 215 | s(37).E=2.8 ; 216 | 217 | s(38).xd=63.0; 218 | s(38).yd=20.0; 219 | s(38).E=2.8 ; 220 | 221 | s(39).xd=8.0; 222 | s(39).yd=69.0; 223 | s(39).E= 2.9; 224 | 225 | s(40).xd=8.0; 226 | s(40).yd=52.0; 227 | s(40).E= 1.9; 228 | 229 | s(41).xd=28.0; 230 | s(41).yd=44.0; 231 | s(41).E= 3.3; 232 | 233 | s(42).xd=40.0; 234 | s(42).yd=32.0; 235 | s(42).E= 2.8; 236 | 237 | s(43).xd=50.0; 238 | s(43).yd=49.0; 239 | s(43).E= 4.1; 240 | 241 | s(44).xd=57.0; 242 | s(44).yd=30.0; 243 | s(44).E= 2.8; 244 | 245 | s(45).xd=64.0; 246 | s(45).yd=12.0; 247 | s(45).E= 3.5; 248 | 249 | 250 | s(46).xd=15.0; 251 | s(46).yd=17.0; 252 | s(46).E= 2.9; 253 | 254 | s(47).xd=20.0; 255 | s(47).yd=51.0; 256 | s(47).E= 1.9; 257 | 258 | s(48).xd=40.0; 259 | s(48).yd=55.0; 260 | s(48).E= 3.8; 261 | 262 | s(49).xd=52.0; 263 | s(49).yd=44.0; 264 | s(49).E= 2.6; 265 | 266 | s(50).xd=52.0; 267 | s(50).yd=25.0; 268 | s(50).E= 1.6; 269 | 270 | s(51).xd=66.0; 271 | s(51).yd=35.0; 272 | s(51).E= 2.1; 273 | 274 | s(52).xd=49.0; 275 | s(52).yd=10.0; 276 | s(52).E= 3.3; 277 | 278 | s(53).xd=71.0; 279 | s(53).yd=20.0; 280 | s(53).E= 1.5; 281 | 282 | 283 | %3 cluster 284 | 285 | s(54).xd=100.0; %ad 286 | s(54).yd=66.0; 287 | s(54).E=9.9 ; 288 | 289 | s(55).xd=90.0; 290 | s(55).yd=3.0; 291 | s(55).E=3.9 ; 292 | 293 | s(56).xd=106.0; 294 | s(56).yd=6.0; 295 | s(56).E=3.7 ; 296 | 297 | s(57).xd=85.0; 298 | s(57).yd=15.0; 299 | s(57).E=3.6 ; 300 | 301 | 302 | s(58).xd=100.0; 303 | s(58).yd=18.0; 304 | s(58).E=2.5 ; 305 | 306 | s(59).xd=110.0; 307 | s(59).yd=19.0; 308 | s(59).E=2.9 ; 309 | 310 | s(60).xd=112.0; 311 | s(60).yd=33.0; 312 | s(60).E= 2.2; 313 | 314 | s(61).xd=85.0; 315 | s(61).yd=32.0; 316 | s(61).E=4.3 ; 317 | 318 | s(62).xd=102.0; 319 | s(62).yd=42.0; 320 | s(62).E=3.7 ; 321 | 322 | s(63).xd=93.0; 323 | s(63).yd=38.0; 324 | s(63).E=3.9 ; 325 | 326 | s(64).xd=108.0; 327 | s(64).yd=48.0; 328 | s(64).E=4.1 ; 329 | 330 | s(65).xd=98.0; 331 | s(65).yd=62.0; 332 | s(65).E= 3.4; 333 | 334 | s(66).xd=90.0; 335 | s(66).yd=52.0; 336 | s(66).E=2.2 ; 337 | 338 | s(67).xd=80.0; 339 | s(67).yd=46.0; 340 | s(67).E=3.1 ; 341 | 342 | s(68).xd=76.0; 343 | s(68).yd=45.0; 344 | s(68).E=3.2 ; 345 | 346 | s(69).xd=75.0; 347 | s(69).yd=60.0; 348 | s(69).E= 2.4; 349 | 350 | s(70).xd=85.0; 351 | s(70).yd=68.0; 352 | s(70).E=4.1 ; 353 | 354 | s(71).xd=94.0; 355 | s(71).yd=72.0; 356 | s(71).E=3.4 ; 357 | 358 | s(72).xd=75.0; 359 | s(72).yd=70.0; 360 | s(72).E=2.2 ; 361 | 362 | s(73).xd=80.0; 363 | s(73).yd=82.0; 364 | s(73).E=3.3 ; 365 | 366 | s(74).xd=74.0; 367 | s(74).yd=92.0; 368 | s(74).E=4.4 ; 369 | 370 | s(75).xd=65.0; 371 | s(75).yd=78.0; 372 | s(75).E=3.5 ; 373 | 374 | s(76).xd=50.0; 375 | s(76).yd=75.0; 376 | s(76).E=2.4 ; 377 | 378 | s(77).xd=53.0; 379 | s(77).yd=95.0; 380 | s(77).E=2.7 ; 381 | 382 | s(78).xd=40.0; 383 | s(78).yd=88.0; 384 | s(78).E=3.9 ; 385 | 386 | 387 | s(79).xd=22.0; 388 | s(79).yd=78.0; 389 | s(79).E=2.9 ; 390 | 391 | 392 | s(80).xd=24.0; 393 | s(80).yd=90.0; 394 | s(80).E=3.0 ; 395 | 396 | s(81).xd=4.0; 397 | s(81).yd=79.0; 398 | s(81).E=3.9 ; 399 | 400 | 401 | s(82).xd=38.0; 402 | s(82).yd=79.0; 403 | s(82).E=3.5 ; 404 | 405 | 406 | s(83).xd=55.0; 407 | s(83).yd=85.0; 408 | s(83).E=2.9 ; 409 | 410 | 411 | s(84).xd=59.0; 412 | s(84).yd=68.0; 413 | s(84).E=3.7 ; 414 | 415 | s(85).xd=69.0; 416 | s(85).yd=88.0; 417 | s(85).E=2.7 ; 418 | 419 | 420 | s(86).xd=78.0; 421 | s(86).yd=75.0; 422 | s(86).E=2.6 ; 423 | 424 | 425 | s(87).xd=90.0; 426 | s(87).yd=60.0; 427 | s(87).E=3.2 ; 428 | 429 | 430 | s(88).xd=86.0; 431 | s(88).yd=47.0; 432 | s(88).E=4.1 ; 433 | 434 | 435 | s(89).xd=96.0; 436 | s(89).yd=47.0; 437 | s(89).E=3.9 ; 438 | 439 | 440 | s(90).xd=80.0; 441 | s(90).yd=38.0; 442 | s(90).E=3.6 ; 443 | 444 | 445 | s(91).xd=81.0; 446 | s(91).yd=21.0; 447 | s(91).E=4.1 ; 448 | 449 | 450 | s(92).xd=95.0; 451 | s(92).yd=25.0; 452 | s(92).E=3.3 ; 453 | 454 | 455 | s(93).xd=110.0; 456 | s(93).yd=15.0; 457 | s(93).E=3.7 ; 458 | 459 | s(94).xd=9.0; 460 | s(94).yd=88.0; 461 | s(94).E= 2.4; 462 | 463 | s(95).xd=29.0; 464 | s(95).yd=98.0; 465 | s(95).E= 3.1; 466 | 467 | s(96).xd=46.0; 468 | s(96).yd=80.0; 469 | s(96).E= 2.9; 470 | 471 | s(97).xd=59.0; 472 | s(97).yd=95.0; 473 | s(97).E= 3.2; 474 | 475 | s(98).xd=72.0; 476 | s(98).yd=79.0; 477 | s(98).E= 2.8; 478 | 479 | s(99).xd=65.0; 480 | s(99).yd=65.0; 481 | s(99).E= 3.8; 482 | 483 | s(100).xd=70.0; 484 | s(100).yd=50.0; 485 | s(100).E= 3.1; 486 | 487 | s(101).xd=80.0; 488 | s(101).yd=62.0; 489 | s(101).E= 1.1; 490 | 491 | s(102).xd=92.0; 492 | s(102).yd=69.0; 493 | s(102).E= 4.1; 494 | 495 | s(103).xd=104.0; 496 | s(103).yd=30.0; 497 | s(103).E= 3.1; 498 | 499 | s(104).xd=92.0; 500 | s(104).yd=19.0; 501 | s(104).E= 2.7; 502 | 503 | s(105).xd=88.0; 504 | s(105).yd=42.0; 505 | s(105).E= 2.9; 506 | 507 | s(106).xd=13.0; 508 | s(106).yd=94.0; 509 | s(106).E= 3.7; 510 | 511 | s(107).xd=17.0; 512 | s(107).yd=83.0; 513 | s(107).E= 3.1; 514 | 515 | s(108).xd=29.0; 516 | s(108).yd=85.0; 517 | s(108).E= 1.9; 518 | 519 | s(109).xd=48.0; 520 | s(109).yd=95.0; 521 | s(109).E= 3.3; 522 | 523 | s(110).xd=54.0; 524 | s(110).yd=80.0; 525 | s(110).E= 3.0; 526 | 527 | s(111).xd=59.0; 528 | s(111).yd=60.0; 529 | s(111).E= 2.7; 530 | 531 | s(112).xd=82.0; 532 | s(112).yd=79.0; 533 | s(112).E= 3.3; 534 | 535 | s(113).xd=79.0; 536 | s(113).yd=55.0; 537 | s(113).E= 3.2; 538 | 539 | s(114).xd=98.0; 540 | s(114).yd=54.0; 541 | s(114).E= 2.2; 542 | 543 | s(115).xd=71.0; 544 | s(115).yd=45.0; 545 | s(115).E= 2.6; 546 | 547 | s(116).xd=109.0; 548 | s(116).yd=40.0; 549 | s(116).E= 3.9; 550 | 551 | s(117).xd=89.0; 552 | s(117).yd=25.0; 553 | s(117).E= 1.6; 554 | 555 | s(118).xd=81.0; 556 | s(118).yd=10.0; 557 | s(118).E= 2.7; 558 | 559 | s(119).xd=98.0; 560 | s(119).yd=15.0; 561 | s(119).E=4.2; 562 | 563 | 564 | 565 | 566 | %fourth cluster 567 | 568 | s(120).xd=145.0; 569 | s(120).yd=18.0; 570 | s(120).E=9.3; 571 | 572 | s(121).xd=133.0; 573 | s(121).yd=8.0; 574 | s(121).E=4.1 ; 575 | 576 | s(122).xd=125.0; 577 | s(122).yd=18.0; 578 | s(122).E=3.7; 579 | 580 | s(123).xd=135.0; 581 | s(123).yd=34.0; 582 | s(123).E=8.3 ; 583 | 584 | s(124).xd=123.0; 585 | s(124).yd=42.0; 586 | s(124).E=4.6 ; 587 | 588 | s(125).xd=134.0; 589 | s(125).yd=52.0; 590 | s(125).E=2.1 ; 591 | 592 | s(126).xd=118.0; 593 | s(126).yd=50.0; 594 | s(126).E=4.6 ; 595 | 596 | s(127).xd=123.0; 597 | s(127).yd=60.0; 598 | s(127).E=4.1 ; 599 | 600 | s(128).xd=126.0; 601 | s(128).yd=65.0; 602 | s(128).E=2.5 ; 603 | 604 | s(129).xd=113.0; 605 | s(129).yd=65.0; 606 | s(129).E=3.0 ; 607 | 608 | s(130).xd=125.0; 609 | s(130).yd=70.0; 610 | s(130).E=4.1 ; 611 | 612 | s(131).xd=120.0; 613 | s(131).yd=72.0; 614 | s(131).E=3.6 ; 615 | 616 | s(132).xd=124.0; 617 | s(132).yd=80.0; 618 | s(132).E=3.9 ; 619 | 620 | s(133).xd=105.0; 621 | s(133).yd=82.0; 622 | s(133).E=3.2 ; 623 | 624 | s(134).xd=124.0; 625 | s(134).yd=90.0; 626 | s(134).E=2.9 ; 627 | 628 | s(135).xd=116.0; 629 | s(135).yd=92.0; 630 | s(135).E=3.6 ; 631 | 632 | s(136).xd=110.0; 633 | s(136).yd=90.0; 634 | s(136).E=3.6 ; 635 | 636 | s(137).xd=95.0; 637 | s(137).yd=85.0; 638 | s(137).E=2.9 ; 639 | 640 | s(138).xd=90.0; 641 | s(138).yd=95.0; 642 | s(138).E=4.3 ; 643 | 644 | s(139).xd=98.0; 645 | s(139).yd=95.0; 646 | s(139).E=3.3 ; 647 | 648 | s(140).xd=115.0; 649 | s(140).yd=80.0; 650 | s(140).E=2.3 ; 651 | 652 | s(141).xd=116.0; 653 | s(141).yd=73.0; 654 | s(141).E=2.4 ; 655 | 656 | s(142).xd=118.0; 657 | s(142).yd=70.0; 658 | s(142).E=2.7 ; 659 | 660 | s(143).xd=127.0; 661 | s(143).yd=45.0; 662 | s(143).E=2.5 ; 663 | 664 | s(144).xd=136.0; 665 | s(144).yd=35.0; 666 | s(144).E=3.3 ; 667 | 668 | s(145).xd=122.0; 669 | s(145).yd=25.0; 670 | s(145).E=3.5 ; 671 | 672 | s(146).xd=129.0; 673 | s(146).yd=25.0; 674 | s(146).E=3.6 ; 675 | 676 | s(147).xd=126.0; 677 | s(147).yd=9.0; 678 | s(147).E=3.7 ; 679 | 680 | s(148).xd=85.0; 681 | s(148).yd=98.0; 682 | s(148).E=3.2; 683 | 684 | s(149).xd=100.0; 685 | s(149).yd=84.0; 686 | s(149).E=2.7; 687 | 688 | s(150).xd=104.0; 689 | s(150).yd=78.0; 690 | s(150).E=3.1; 691 | 692 | s(151).xd=113.0; 693 | s(151).yd=69.0; 694 | s(151).E=3.5; 695 | 696 | s(152).xd=134.0; 697 | s(152).yd=60.0; 698 | s(152).E=2.5; 699 | 700 | s(153).xd=138.0; 701 | s(153).yd=48.0; 702 | s(153).E=2.2; 703 | 704 | s(154).xd=119.0; 705 | s(154).yd=45.0; 706 | s(154).E=2.9; 707 | 708 | s(155).xd=130.0; 709 | s(155).yd=35.0; 710 | s(155).E=3.6; 711 | 712 | s(156).xd=135.0; 713 | s(156).yd=15.0; 714 | s(156).E=3.8; 715 | 716 | s(157).xd=99.0; 717 | s(157).yd=90.0; 718 | s(157).E=2.9; 719 | 720 | s(158).xd=115.0; 721 | s(158).yd=85.0; 722 | s(158).E=3.2; 723 | 724 | s(159).xd=114.0; 725 | s(159).yd=72.0; 726 | s(159).E=4.0; 727 | 728 | s(160).xd=139.0; 729 | s(160).yd=65.0; 730 | s(160).E=1.9; 731 | 732 | s(161).xd=119.0; 733 | s(161).yd=60.0; 734 | s(161).E=3.6; 735 | 736 | s(162).xd=140.0; 737 | s(162).yd=29.0; 738 | s(162).E=3.1; 739 | 740 | s(163).xd=140.0; 741 | s(163).yd=15.0; 742 | s(163).E=2.6; 743 | 744 | s(164).xd=120.0; 745 | s(164).yd=22.0; 746 | s(164).E=1.6; 747 | 748 | s(165).xd=134.0; 749 | s(165).yd=7.0; 750 | s(165).E=2.2; 751 | 752 | %fifth 753 | 754 | s(167).xd=155.0; %ad 755 | s(167).yd=85.0; 756 | s(167).E=8.9 ; 757 | 758 | s(168).xd=158.0; 759 | s(168).yd=12.0; 760 | s(168).E= 3.8; 761 | 762 | s(169).xd=167.0; 763 | s(169).yd=22.0; 764 | s(169).E=2.9 ; 765 | 766 | s(170).xd=155.0; 767 | s(170).yd=24.0; 768 | s(170).E=2.4; 769 | 770 | s(171).xd=147.0; 771 | s(171).yd=31.0; 772 | s(171).E=2.3 ; 773 | 774 | s(172).xd=162; 775 | s(172).yd=35.0; 776 | s(172).E=2.6 ; 777 | 778 | s(173).xd=148.0; 779 | s(173).yd=43.0; 780 | s(173).E=4.8 ; 781 | 782 | s(174).xd=154.0; 783 | s(174).yd=55.0; 784 | s(174).E=2.9 ; 785 | 786 | s(175).xd=148.0; 787 | s(175).yd=58.0; 788 | s(175).E=3.8 ; 789 | 790 | s(176).xd=156.0; 791 | s(176).yd=70.0; 792 | s(176).E=3.7 ; 793 | 794 | s(177).xd=149.0; 795 | s(177).yd=69.0; 796 | s(177).E=3.5 ; 797 | 798 | s(178).xd=150.0; 799 | s(178).yd=80.0; 800 | s(178).E=3.2 ; 801 | 802 | s(179).xd=142.0; 803 | s(179).yd=82.0; 804 | s(179).E=2.7 ; 805 | 806 | s(180).xd=143.0; 807 | s(180).yd=88.0; 808 | s(180).E=3.5 ; 809 | 810 | s(181).xd=128.0; 811 | s(181).yd=96.0; 812 | s(181).E=4.3 ; 813 | 814 | 815 | s(182).xd=130.0; 816 | s(182).yd=90.0; 817 | s(182).E=4.4 ; 818 | 819 | s(183).xd=145.0; 820 | s(183).yd=81.0; 821 | s(183).E=4.6 ; 822 | 823 | 824 | s(184).xd=148.0; 825 | s(184).yd=75.0; 826 | s(184).E=4.8 ; 827 | 828 | 829 | s(185).xd=155.0; 830 | s(185).yd=60.0; 831 | s(185).E=2.3 ; 832 | 833 | 834 | s(186).xd=165.0; 835 | s(186).yd=53.0; 836 | s(186).E=3.5 ; 837 | 838 | 839 | s(187).xd=159.0; 840 | s(187).yd=49.0; 841 | s(187).E=3.9 ; 842 | 843 | 844 | s(188).xd=155.0; 845 | s(188).yd=38.0; 846 | s(188).E=2.7 ; 847 | 848 | 849 | s(189).xd=163.0; 850 | s(189).yd=20.0; 851 | s(189).E=2.9 ; 852 | 853 | s(190).xd=123.0; 854 | s(190).yd=98.0; 855 | s(190).E=3.6; 856 | 857 | s(191).xd=135.0; 858 | s(191).yd=85.0; 859 | s(191).E=2.9; 860 | 861 | s(192).xd=150.0; 862 | s(192).yd=65.0; 863 | s(192).E=2.7; 864 | 865 | s(193).xd=146.0; 866 | s(193).yd=52.0; 867 | s(193).E=1.5; 868 | 869 | s(194).xd=170.0; 870 | s(194).yd=45.0; 871 | s(194).E=2.3; 872 | 873 | s(195).xd=170.0; 874 | s(195).yd=37.0; 875 | s(195).E=2.6; 876 | 877 | s(196).xd=154.0; 878 | s(196).yd=20.0; 879 | s(196).E=1.1; 880 | 881 | s(197).xd=165.0; 882 | s(197).yd=15.0; 883 | s(197).E=2.8; 884 | 885 | s(198).xd=134.0; 886 | s(198).yd=99.0; 887 | s(198).E=1.9; 888 | 889 | s(199).xd=145.0; 890 | s(199).yd=90.0; 891 | s(199).E=3.5; 892 | 893 | s(200).xd=140.0; 894 | s(200).yd=75.0; 895 | s(200).E=3.1; 896 | 897 | s(201).xd=162.0; 898 | s(201).yd=65.0; 899 | s(201).E=2.0; 900 | 901 | s(202).xd=145.0; 902 | s(202).yd=60.0; 903 | s(202).E=3.0; 904 | 905 | s(203).xd=165.0; 906 | s(203).yd=45.0; 907 | s(203).E=4.0; 908 | 909 | s(204).xd=162.0; 910 | s(204).yd=25.0; 911 | s(204).E=1.5; 912 | 913 | s(205).xd=152.0; 914 | s(205).yd=5.0; 915 | s(205).E=2.8; 916 | 917 | %sixth 918 | 919 | s(206).xd=195.0; %ad 920 | s(206).yd=10.0; 921 | s(206).E=9.4 ; 922 | 923 | s(207).xd=183.0; 924 | s(207).yd=12.0; 925 | s(207).E=3.7 ; 926 | 927 | s(208).xd=182.0; 928 | s(208).yd=20.0; 929 | s(208).E=3.1 ; 930 | 931 | s(209).xd=195.0; 932 | s(209).yd=25.0; 933 | s(209).E=3.5 ; 934 | 935 | s(210).xd=184.0; 936 | s(210).yd=38.0; 937 | s(210).E=3.8 ; 938 | 939 | s(211).xd=192.0; 940 | s(211).yd=43.0; 941 | s(211).E=3.9 ; 942 | 943 | s(212).xd=185.0; 944 | s(212).yd=52.0; 945 | s(212).E=3.5 ; 946 | 947 | s(213).xd=171.0; 948 | s(213).yd=50.0; 949 | s(213).E=2.9 ; 950 | 951 | s(214).xd=165.0; 952 | s(214).yd=64.0; 953 | s(214).E= 4.9; 954 | 955 | s(215).xd=118.0; 956 | s(215).yd=68.0; 957 | s(215).E=4.3 ; 958 | 959 | s(216).xd=180.0; 960 | s(216).yd=73.0; 961 | s(216).E=4.4 ; 962 | 963 | 964 | s(217).xd=190.0; 965 | s(217).yd=75.0; 966 | s(217).E=3.2 ; 967 | 968 | s(218).xd=186.0; 969 | s(218).yd=83.0; 970 | s(218).E=2.2 ; 971 | 972 | s(219).xd=173.0; 973 | s(219).yd=83.0; 974 | s(219).E= 3.7; 975 | 976 | s(220).xd=184.0; 977 | s(220).yd=92.0; 978 | s(220).E=1.3 ; 979 | 980 | s(221).xd=169.0; 981 | s(221).yd=88.0; 982 | s(221).E=2.9 ; 983 | 984 | s(222).xd=148.0; 985 | s(222).yd=89.0; 986 | s(222).E=3.1 ; 987 | 988 | s(223).xd=155.0; 989 | s(223).yd=96.0; 990 | s(223).E=1.6 ; 991 | 992 | s(224).xd=146.0; 993 | s(224).yd=75.0; 994 | s(224).E= 2.3; 995 | 996 | s(225).xd=170.0; 997 | s(225).yd=55.0; 998 | s(225).E=2.8 ; 999 | 1000 | s(226).xd=183.0; 1001 | s(226).yd=38.0; 1002 | s(226).E=1.3 ; 1003 | 1004 | 1005 | 1006 | s(227).xd=179.0; 1007 | s(227).yd=89.0; 1008 | s(227).E=2.8 ; 1009 | 1010 | 1011 | s(228).xd=178.0; 1012 | s(228).yd=85.0; 1013 | s(228).E=3.9 ; 1014 | 1015 | 1016 | s(229).xd=174.0; 1017 | s(229).yd=72.0; 1018 | s(229).E=4.0 ; 1019 | 1020 | 1021 | s(230).xd=179.0; 1022 | s(230).yd=60.0; 1023 | s(230).E=3.6 ; 1024 | 1025 | 1026 | s(231).xd=182.0; 1027 | s(231).yd=45.0; 1028 | s(231).E=3.4 ; 1029 | 1030 | 1031 | s(232).xd=195.0; 1032 | s(232).yd=40.0; 1033 | s(232).E=3.8 ; 1034 | 1035 | 1036 | s(233).xd=184.0; 1037 | s(233).yd=35.0; 1038 | s(233).E=2.6 ; 1039 | 1040 | 1041 | s(233).xd=191.0; 1042 | s(233).yd=20.0; 1043 | s(233).E=4.2 ; 1044 | 1045 | s(234).xd=164.0; 1046 | s(234).yd=85.0; 1047 | s(234).E=1.9; 1048 | 1049 | s(235).xd=155.0; 1050 | s(235).yd=94.0; 1051 | s(235).E=3.9; 1052 | 1053 | s(236).xd=172.0; 1054 | s(236).yd=98.0; 1055 | s(236).E=3.1; 1056 | 1057 | s(237).xd=189.0; 1058 | s(237).yd=98.0; 1059 | s(237).E=2.7; 1060 | 1061 | s(238).xd=195.0; 1062 | s(238).yd=85.0; 1063 | s(238).E=3.3; 1064 | 1065 | s(239).xd=179.0; 1066 | s(239).yd=65.0; 1067 | s(239).E=4.0; 1068 | 1069 | s(240).xd=195.0; 1070 | s(240).yd=59.0; 1071 | s(240).E=2.6; 1072 | 1073 | s(241).xd=179.0; 1074 | s(241).yd=39.0; 1075 | s(241).E=1.8; 1076 | 1077 | s(242).xd=195.0; 1078 | s(242).yd=30.0; 1079 | s(242).E=3.3; 1080 | 1081 | s(243).xd=190.0; 1082 | s(243).yd=10.0; 1083 | s(243).E=3.7; 1084 | 1085 | s(244).xd=165.0; 1086 | s(244).yd=90.0; 1087 | s(244).E=2.5; 1088 | 1089 | s(245).xd=195.0; 1090 | s(245).yd=89.0; 1091 | s(245).E=3.5; 1092 | 1093 | s(246).xd=189.0; 1094 | s(246).yd=72.0; 1095 | s(246).E=2.7; 1096 | 1097 | s(247).xd=195.0; 1098 | s(247).yd=56.0; 1099 | s(247).E=3.3; 1100 | 1101 | s(248).xd=189.0; 1102 | s(248).yd=42.0; 1103 | s(248).E=2.5; 1104 | 1105 | s(249).xd=197.0; 1106 | s(249).yd=17.0; 1107 | s(249).E=3.5; 1108 | 1109 | s(250).xd=192.0; 1110 | s(250).yd=41.0; 1111 | s(250).E=1.2; 1112 | 1113 | sum=0; 1114 | 1115 | for i=1:1:n 1116 | if((s(i).E)>0) 1117 | % plot(s(i).xd,s(i).yd,'o'); 1118 | end 1119 | % hold on; 1120 | end 1121 | cl=0; 1122 | for i=25:25:xm 1123 | cl=cl+1; 1124 | if(i<=ym) 1125 | th = linspace( 0, pi/2, 100); 1126 | x = i*cos(th) + 0; 1127 | y = i*sin(th) + 0; 1128 | %plot(x,y); 1129 | else 1130 | th = linspace( 0,asin(ym/i), 100); 1131 | x=i*cos(th)+0; 1132 | y=i*sin(th)+0; 1133 | % plot(x,y); 1134 | end 1135 | end 1136 | for i=1:1:n 1137 | R=sqrt((s(i).xd)^2+(s(i).yd)^2); 1138 | for j=1:1:xm/25 1139 | if((R>((j-1)*25))&((j*25)>R)) 1140 | s(i).n=j; 1141 | break; 1142 | end 1143 | if(R>xm) 1144 | s(i).n=9; 1145 | end 1146 | end 1147 | end 1148 | for i=1:1:cl+1 1149 | clusterhead(i).number=0; 1150 | clusterhead(i).value=0; 1151 | for j=1:1:n 1152 | if((s(j).n)==i) 1153 | if((s(j).n)==1) 1154 | value=((s(j).E)/(((s(i).xd)^2)+((s(i).yd)^2))); 1155 | if(value>clusterhead(i).value) 1156 | clusterhead(i).number=j; 1157 | end 1158 | else 1159 | value=((s(j).E)/(((s(i).xd-s(clusterhead(i-1).number).xd)^2)+(s(i).yd-s(clusterhead(i-1).number).xd)^2)); 1160 | if(value>clusterhead(i).value) 1161 | clusterhead(i).number=j; 1162 | end 1163 | end 1164 | end 1165 | end 1166 | end 1167 | 1168 | for i=1:1:cl 1169 | % plot(s(clusterhead(i).number).xd,s(clusterhead(i).number).yd,'green o'); 1170 | end 1171 | for r =1:1:rmax 1172 | r 1173 | energy=0; 1174 | ener=0; 1175 | total=0; 1176 | % hold off; 1177 | % figure(1); 1178 | % hold on; 1179 | dead=0; 1180 | for i=1:1:n 1181 | s(i).a=0; 1182 | if((s(i).E)>0) 1183 | % plot(s(i).xd,s(i).yd,'blue o'); 1184 | s(i).useful=1; 1185 | hold on; 1186 | end 1187 | if((s(i).E)<=0) 1188 | % plot(s(i).xd,s(i).yd,'red o'); 1189 | s(i).useful=0; 1190 | % hold on; 1191 | dead=dead+1; 1192 | end 1193 | end 1194 | 1195 | for i=25:25:xm 1196 | if(i<=ym) 1197 | th = linspace( 0, pi/2, 100); 1198 | x = i*cos(th) + 0; 1199 | y = i*sin(th) + 0; 1200 | %plot(x,y); 1201 | else 1202 | th = linspace( 0,asin(ym/i), 100); 1203 | x=i*cos(th)+0; 1204 | y=i*sin(th)+0; 1205 | % plot(x,y); 1206 | end 1207 | end 1208 | 1209 | Statistics(r).dead=dead; 1210 | 1211 | for i=1:1:cl+1 1212 | clusterhead(i).number=0; 1213 | clusterhead(i).value=-1; 1214 | for j=1:1:250 1215 | if(s(j).n==i) 1216 | if(s(j).n==1) 1217 | value=((s(j).E)/(((s(i).xd)^2)+((s(i).yd)^2))); 1218 | if(value>clusterhead(i).value) 1219 | clusterhead(i).number=j; 1220 | end 1221 | else 1222 | value=((s(j).E)/(((s(i).xd-s(clusterhead(i-1).number).xd)^2)+(s(i).yd-s(clusterhead(i-1).number).xd)^2)); 1223 | if(value>clusterhead(i).value) 1224 | clusterhead(i).number=j; 1225 | end 1226 | end 1227 | end 1228 | end 1229 | % clusterhead(i).number 1230 | 1231 | % hold on; 1232 | % plot(s(clusterhead(i).number).xd,s(clusterhead(i).number).yd,'green o'); 1233 | %hold on; 1234 | end 1235 | 1236 | for i=1:1:cl+1 1237 | for j=1:1:250 1238 | if(s(j).n==i & j~=clusterhead(i).number & s(j).E>0) 1239 | dis=sqrt(((s(j).xd)-(s(clusterhead(i).number).xd))^2+((s(j).yd)-(s(clusterhead(i).number).yd))^2); 1240 | x=[s(j).xd,s(clusterhead(i).number).xd]; 1241 | y=[s(j).yd,s(clusterhead(i).number).yd]; 1242 | % hold on; 1243 | % plot(x,y,'red'); 1244 | % hold on; 1245 | if (dis>do) 1246 | s(j).E=s(j).E- ( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 1247 | end 1248 | if (dis<=do) 1249 | s(j).E=s(j).E- ( (ETX+EDA)*(4000) + Efs*4000*( dis * dis )); 1250 | end 1251 | energy=energy+s(j).E; 1252 | if(s(clusterhead(i).number).E>0) 1253 | s(clusterhead(i).number).E = s(clusterhead(i).number).E- ( (ERX + EDA)*4000 ); 1254 | end 1255 | ener=ener+s(clusterhead(i).number).E; 1256 | end 1257 | end 1258 | end 1259 | for i=1:1:cl+1 1260 | nequal=1; 1261 | j=i; 1262 | k=i-1; 1263 | while(nequal==1) 1264 | if(k==0) 1265 | dis=sqrt(((s(clusterhead(j).number).xd))^2+((s(clusterhead(j).number).yd))^2); 1266 | if(dis>do) 1267 | s(clusterhead(j).number).E=s(clusterhead(j).number).E-( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 1268 | end 1269 | if(dis<=do) 1270 | s(clusterhead(j).number).E=s(clusterhead(j).number).E-( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 1271 | end 1272 | ener=ener+s(clusterhead(i).number).E; 1273 | x=[s(clusterhead(j).number).xd,0]; 1274 | y=[s(clusterhead(j).number).yd,0]; 1275 | % plot(x,y,'black'); 1276 | nequal=0; 1277 | elseif(s(k).E<=0) 1278 | k=k-1; 1279 | else 1280 | dis=sqrt(((s(clusterhead(j).number).xd)-(s(clusterhead(k).number).xd))^2+((s(clusterhead(j).number).yd)-(s(clusterhead(k).number).yd))^2); 1281 | if (dis>do) 1282 | s(clusterhead(j).number).E=s(clusterhead(j).number).E- ( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 1283 | end 1284 | if (dis<=do) 1285 | s(clusterhead(j).number).E=s(clusterhead(j).number).E- ( (ETX+EDA)*(4000) + Efs*4000*( dis * dis )); 1286 | end 1287 | ener=ener+s(clusterhead(i).number).E; 1288 | x=[s(clusterhead(j).number).xd,s(clusterhead(k).number).xd]; 1289 | y=[s(clusterhead(j).number).yd,s(clusterhead(k).number).yd]; 1290 | % plot(x,y,'black'); 1291 | j=k; 1292 | k=j-1; 1293 | end 1294 | end 1295 | end 1296 | total= (ener+energy)/(n-dead); 1297 | 1298 | figure(99); 1299 | hold on; 1300 | plot(r,dead,'black .'); 1301 | 1302 | 1303 | %figure(10); 1304 | %hold on; 1305 | %xlabel('Round'); 1306 | %ylabel('average energy of normal nodes'); 1307 | %plot(r,energy,'black .'); 1308 | 1309 | %figure(20); 1310 | %hold on; 1311 | %xlabel('Round'); 1312 | %ylabel('average energy of cluster heads'); 1313 | %plot(r,ener,'green .'); 1314 | 1315 | figure(30); 1316 | hold on; 1317 | xlabel('Round'); 1318 | ylabel('average energy of network'); 1319 | plot(r,total,'green .'); 1320 | end -------------------------------------------------------------------------------- /HEEPSCC/working_HEEPSCC_100.m: -------------------------------------------------------------------------------- 1 | clear; 2 | xm=200; 3 | ym=100; 4 | sink.x=0.0*xm; 5 | sink.y=0.0*ym; 6 | n=100; 7 | Eo=0.1; 8 | %Eelec=Etx=Erx 9 | ETX=50*0.000000001; 10 | ERX=50*0.000000001; 11 | %Transmit Amplifier types 12 | Efs=10*0.000000000001; 13 | Emp=0.0013*0.000000000001; 14 | %Data Aggregation Energy 15 | EDA=5*0.000000001; 16 | rmax=800; 17 | do=sqrt(Efs/Emp); 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | s(1).xd=35.0; % ad 26 | s(1).yd=22.0; 27 | s(1).E= 6.5; 28 | 29 | s(2).xd=10.0; 30 | s(2).yd=10.0; 31 | s(2).E= 1.5; 32 | 33 | s(3).xd=15.0; 34 | s(3).yd=22.0; 35 | s(3).E= 2.1; 36 | 37 | s(4).xd=25.0; 38 | s(4).yd=13.0; 39 | s(4).E= 1.7; 40 | 41 | s(5).xd=26.0; 42 | s(5).yd=28.0; 43 | s(5).E= 4.6; 44 | 45 | s(6).xd=5.0; 46 | s(6).yd=32.0; 47 | s(6).E= 3.8; 48 | 49 | 50 | %2 cluster 51 | 52 | s(7).xd=60.0; %ad 53 | s(7).yd=50.0; 54 | s(7).E= 8.4; 55 | 56 | s(8).xd=55.0; 57 | s(8).yd=12.0; 58 | s(8).E= 3.1; 59 | 60 | s(9).xd=71.0; 61 | s(9).yd=13.0; 62 | s(9).E= 1.4; 63 | 64 | s(10).xd=67.0; 65 | s(10).yd=26.0; 66 | s(10).E= 3.7; 67 | 68 | s(11).xd=44.0; 69 | s(11).yd=37.0; 70 | s(11).E= 3.01; 71 | 72 | s(12).xd=60.0; 73 | s(12).yd=40.0; 74 | s(12).E= 4.1; 75 | 76 | 77 | 78 | s(13).xd=35.0; % ad 79 | s(13).yd=40.0; 80 | s(13).E=2.3 ; 81 | 82 | s(14).xd=40.0; 83 | s(14).yd=46.0; 84 | s(14).E= 1.1; 85 | 86 | s(15).xd=43.0; 87 | s(15).yd=58.0; 88 | s(15).E=2.1 ; 89 | 90 | s(16).xd=26.0; 91 | s(16).yd=55.0; 92 | s(16).E=3.3 ; 93 | 94 | s(17).xd=28.0; 95 | s(17).yd=72.0; 96 | s(17).E=2.8 ; 97 | 98 | %3 cluster 99 | 100 | s(18).xd=100.0; %ad 101 | s(18).yd=66.0; 102 | s(18).E=9.9 ; 103 | 104 | s(19).xd=90.0; 105 | s(19).yd=3.0; 106 | s(19).E=3.9 ; 107 | 108 | s(20).xd=106.0; 109 | s(20).yd=6.0; 110 | s(20).E=3.7 ; 111 | 112 | s(21).xd=85.0; 113 | s(21).yd=15.0; 114 | s(21).E=3.6 ; 115 | 116 | 117 | s(22).xd=100.0; 118 | s(22).yd=18.0; 119 | s(22).E=2.5 ; 120 | 121 | s(23).xd=110.0; 122 | s(23).yd=19.0; 123 | s(23).E=2.9 ; 124 | 125 | s(24).xd=112.0; 126 | s(24).yd=33.0; 127 | s(24).E= 2.2; 128 | 129 | s(25).xd=85.0; 130 | s(25).yd=32.0; 131 | s(25).E=4.3 ; 132 | 133 | s(26).xd=102.0; 134 | s(26).yd=42.0; 135 | s(26).E=3.7 ; 136 | 137 | s(27).xd=93.0; 138 | s(27).yd=38.0; 139 | s(27).E=3.9 ; 140 | 141 | s(28).xd=108.0; 142 | s(28).yd=48.0; 143 | s(28).E=4.1 ; 144 | 145 | s(29).xd=98.0; 146 | s(29).yd=62.0; 147 | s(29).E= 3.4; 148 | 149 | s(30).xd=90.0; 150 | s(30).yd=52.0; 151 | s(30).E=2.2 ; 152 | 153 | s(31).xd=80.0; 154 | s(31).yd=46.0; 155 | s(31).E=3.1 ; 156 | 157 | s(32).xd=76.0; 158 | s(32).yd=45.0; 159 | s(32).E=3.2 ; 160 | 161 | s(33).xd=75.0; 162 | s(33).yd=60.0; 163 | s(33).E= 2.4; 164 | 165 | s(34).xd=85.0; 166 | s(34).yd=68.0; 167 | s(34).E=4.1 ; 168 | 169 | s(35).xd=94.0; 170 | s(35).yd=72.0; 171 | s(35).E=3.4 ; 172 | 173 | s(36).xd=75.0; 174 | s(36).yd=70.0; 175 | s(36).E=2.2 ; 176 | 177 | s(37).xd=80.0; 178 | s(37).yd=82.0; 179 | s(37).E=3.3 ; 180 | 181 | s(38).xd=74.0; 182 | s(38).yd=92.0; 183 | s(38).E=4.4 ; 184 | 185 | s(39).xd=65.0; 186 | s(39).yd=78.0; 187 | s(39).E=3.5 ; 188 | 189 | s(40).xd=50.0; 190 | s(40).yd=75.0; 191 | s(40).E=2.4 ; 192 | 193 | s(41).xd=53.0; 194 | s(41).yd=95.0; 195 | s(41).E=2.7 ; 196 | 197 | s(42).xd=40.0; 198 | s(42).yd=88.0; 199 | s(42).E=3.9 ; 200 | 201 | 202 | s(43).xd=22.0; 203 | s(43).yd=78.0; 204 | s(43).E=2.9 ; 205 | 206 | 207 | s(44).xd=24.0; 208 | s(44).yd=90.0; 209 | s(44).E=3.0 ; 210 | 211 | s(45).xd=4.0; 212 | s(45).yd=79.0; 213 | s(45).E=1.9 ; 214 | 215 | %fourth cluster 216 | 217 | s(46).xd=145.0; 218 | s(46).yd=18.0; 219 | s(46).E=9.3; 220 | 221 | s(47).xd=133.0; 222 | s(47).yd=8.0; 223 | s(47).E=4.1 ; 224 | 225 | s(48).xd=125.0; 226 | s(48).yd=18.0; 227 | s(48).E=3.7; 228 | 229 | s(49).xd=135.0; 230 | s(49).yd=34.0; 231 | s(49).E=2.3 ; 232 | 233 | s(50).xd=123.0; 234 | s(50).yd=42.0; 235 | s(50).E=4.6 ; 236 | 237 | s(51).xd=134.0; 238 | s(51).yd=52.0; 239 | s(51).E=2.1 ; 240 | 241 | s(52).xd=118.0; 242 | s(52).yd=50.0; 243 | s(52).E=4.6 ; 244 | 245 | s(53).xd=123.0; 246 | s(53).yd=60.0; 247 | s(53).E=4.1 ; 248 | 249 | s(54).xd=126.0; 250 | s(54).yd=65.0; 251 | s(54).E=2.5 ; 252 | 253 | s(55).xd=113.0; 254 | s(55).yd=65.0; 255 | s(55).E=3.0 ; 256 | 257 | s(56).xd=125.0; 258 | s(56).yd=70.0; 259 | s(56).E=4.1 ; 260 | 261 | s(57).xd=120.0; 262 | s(57).yd=72.0; 263 | s(57).E=3.6 ; 264 | 265 | s(58).xd=124.0; 266 | s(58).yd=80.0; 267 | s(58).E=3.9 ; 268 | 269 | s(59).xd=105.0; 270 | s(59).yd=82.0; 271 | s(59).E=3.2 ; 272 | 273 | s(60).xd=124.0; 274 | s(60).yd=90.0; 275 | s(60).E=2.9 ; 276 | 277 | s(61).xd=116.0; 278 | s(61).yd=92.0; 279 | s(61).E=3.6 ; 280 | 281 | s(62).xd=110.0; 282 | s(62).yd=90.0; 283 | s(62).E=3.6 ; 284 | 285 | s(63).xd=95.0; 286 | s(63).yd=85.0; 287 | s(63).E=2.9 ; 288 | 289 | s(64).xd=90.0; 290 | s(64).yd=95.0; 291 | s(64).E=4.3 ; 292 | 293 | %fifth 294 | 295 | s(65).xd=155.0; %ad 296 | s(65).yd=85.0; 297 | s(65).E=8.9 ; 298 | 299 | s(66).xd=158.0; 300 | s(66).yd=12.0; 301 | s(66).E= 3.8; 302 | 303 | s(67).xd=167.0; 304 | s(67).yd=22.0; 305 | s(67).E=2.9 ; 306 | 307 | s(68).xd=155.0; 308 | s(68).yd=24.0; 309 | s(68).E=2.4 ; 310 | 311 | s(69).xd=147.0; 312 | s(69).yd=31.0; 313 | s(69).E=2.3 ; 314 | 315 | s(70).xd=162; 316 | s(70).yd=35.0; 317 | s(70).E=2.6 ; 318 | 319 | 320 | 321 | s(71).xd=148.0; 322 | s(71).yd=43.0; 323 | s(71).E=4.8 ; 324 | 325 | s(72).xd=154.0; 326 | s(72).yd=55.0; 327 | s(72).E=2.9 ; 328 | 329 | s(73).xd=148.0; 330 | s(73).yd=58.0; 331 | s(73).E=3.8 ; 332 | 333 | s(74).xd=156.0; 334 | s(74).yd=70.0; 335 | s(74).E=3.7 ; 336 | 337 | s(75).xd=149.0; 338 | s(75).yd=69.0; 339 | s(75).E=3.5 ; 340 | 341 | s(76).xd=150.0; 342 | s(76).yd=80.0; 343 | s(76).E=3.2 ; 344 | 345 | s(77).xd=142.0; 346 | s(77).yd=82.0; 347 | s(77).E=2.7 ; 348 | 349 | s(78).xd=143.0; 350 | s(78).yd=88.0; 351 | s(78).E=3.5 ; 352 | 353 | s(79).xd=128.0; 354 | s(79).yd=96.0; 355 | s(79).E=4.3 ; 356 | 357 | %sixth 358 | 359 | s(80).xd=195.0;% ad 360 | s(80).yd=10.0; 361 | s(80).E=9.4 ; 362 | 363 | s(81).xd=183.0; 364 | s(81).yd=12.0; 365 | s(81).E=3.7 ; 366 | 367 | s(82).xd=182.0; 368 | s(82).yd=20.0; 369 | s(82).E=3.1 ; 370 | 371 | s(83).xd=195.0; 372 | s(83).yd=25.0; 373 | s(83).E=3.5 ; 374 | 375 | s(84).xd=184.0; 376 | s(84).yd=38.0; 377 | s(84).E=3.8 ; 378 | 379 | s(85).xd=192.0; 380 | s(85).yd=43.0; 381 | s(85).E=3.9 ; 382 | 383 | s(86).xd=185.0; 384 | s(86).yd=52.0; 385 | s(86).E=3.5 ; 386 | 387 | s(87).xd=171.0; 388 | s(87).yd=50.0; 389 | s(87).E=2.9 ; 390 | 391 | s(88).xd=165.0; 392 | s(88).yd=64.0; 393 | s(88).E= 4.9; 394 | 395 | s(89).xd=118.0; 396 | s(89).yd=68.0; 397 | s(89).E=4.3 ; 398 | 399 | s(90).xd=180.0; 400 | s(90).yd=73.0; 401 | s(90).E=4.4 ; 402 | 403 | 404 | 405 | s(91).xd=190.0; 406 | s(91).yd=75.0; 407 | s(91).E=3.2 ; 408 | 409 | s(92).xd=186.0; 410 | s(92).yd=83.0; 411 | s(92).E=2.2 ; 412 | 413 | s(93).xd=173.0; 414 | s(93).yd=83.0; 415 | s(93).E= 3.7; 416 | 417 | s(94).xd=184.0; 418 | s(94).yd=92.0; 419 | s(94).E=1.3 ; 420 | 421 | s(95).xd=169.0; 422 | s(95).yd=88.0; 423 | s(95).E=2.9 ; 424 | 425 | s(96).xd=148.0; 426 | s(96).yd=89.0; 427 | s(96).E=3.1 ; 428 | 429 | s(97).xd=155.0; 430 | s(97).yd=96.0; 431 | s(97).E=1.6 ; 432 | 433 | s(98).xd=146.0; 434 | s(98).yd=75.0; 435 | s(98).E= 2.3; 436 | 437 | s(99).xd=170.0; 438 | s(99).yd=55.0; 439 | s(99).E=2.8 ; 440 | 441 | s(100).xd=183.0; 442 | s(100).yd=38.0; 443 | s(100).E=1.3 ; %100 nodes 444 | 445 | 446 | sum=0; 447 | for i=1:1:n 448 | if((s(i).E)>0) 449 | % plot(s(i).xd,s(i).yd,'o'); 450 | end 451 | hold on; 452 | end 453 | cl=1; 454 | dis(1).di=0; 455 | for i=1:1:n 456 | s(i).a=0; 457 | if(s(i).E>5) 458 | s(i).a=1; 459 | advancednode(cl)=i; 460 | cl=cl+1; 461 | R=sqrt( (s(i).xd)^2 + (s(i).yd )^2 ); 462 | if(R<=ym) 463 | % plot(s(i).xd,s(i).yd,'red *'); 464 | 465 | dis(cl).di=R; 466 | dis(cl).n=cl; 467 | th = linspace( 0, pi/2, 100); 468 | x = R*cos(th) + 0; 469 | y = R*sin(th) + 0; 470 | %plot(x,y); 471 | else 472 | % plot(s(i).xd,s(i).yd,'red *'); 473 | R=sqrt( (s(i).xd)^2 + (s(i).yd )^2 ); 474 | dis(cl).di=R; 475 | dis(cl).n=cl; 476 | th = linspace( 0,asin(ym/R), 100); 477 | x = R*cos(th) + 0; 478 | y = R*sin(th) + 0; 479 | %plot(x,y); 480 | end 481 | end 482 | hold on; 483 | end 484 | for j=1:1:cl-1 485 | % comparing each number with the next and swapping 486 | for i=1:1:cl-1 487 | if dis(i).di>dis(i+1).di 488 | % temp is a variable where the numbers are kept 489 | % temporarily for the switch 490 | temp=dis(i).di; 491 | dis(i).di=dis(i+1).di; 492 | dis(i+1).di=temp; 493 | end 494 | end 495 | end 496 | for i=1:1:n 497 | R=sqrt( (s(i).xd)^2 + (s(i).yd )^2 ); 498 | nequal=1; 499 | number=2; 500 | max=cl; 501 | while(nequal==1&&numberR)&&((R)>(dis(number-1).di))) 503 | s(i).n=number-1; 504 | nequal=0; 505 | end 506 | if((dis(number).di)==R) 507 | s(i).n=number-1; 508 | end 509 | if(R>dis(max).di) 510 | s(i).n=max; 511 | nequal=0; 512 | end 513 | number=number+1; 514 | end 515 | end 516 | 517 | for i=1:1:n 518 | count(i)=0; 519 | end 520 | for i=1:1:cl 521 | for j=1:1:n 522 | %j; 523 | if(s(j).n==i&&s(j).a==0) 524 | m(j).firstr=100; 525 | m(j).secondr=100; 526 | m(j).thirdr=100; 527 | m(j).fourthr=100; 528 | m(j).first=0; 529 | m(j).second=0; 530 | m(j).third=0; 531 | m(j).fourth=0; 532 | for k=1:1:100 533 | if(s(k).n==i&&j~=k&&s(k).a==0) 534 | R=sqrt( (s(j).xd-s(k).xd)^2 + (s(j).yd-s(k).yd )^2 ); 535 | %k 536 | %R 537 | if(R<=m(j).firstr) 538 | m(j).fourthr=m(j).thirdr; 539 | m(j).fourth=m(j).third; 540 | m(j).thirdr=m(j).secondr; 541 | m(j).third=m(j).second; 542 | m(j).secondr=m(j).firstr; 543 | m(j).second=m(j).first; 544 | m(j).firstr=R; 545 | m(j).first=k; 546 | 547 | %m(j).first 548 | %m(j).second 549 | %m(j).third 550 | %m(j).fourth % m(j).first 551 | elseif(R<=m(j).secondr) 552 | m(j).fourthr=m(j).thirdr; 553 | m(j).fourth=m(j).third; 554 | m(j).thirdr=m(j).secondr; 555 | m(j).third=m(j).second; 556 | m(j).secondr=R; 557 | m(j).second=k; 558 | 559 | %m(j).third 560 | %m(j).fourth 561 | %m(j).second 562 | elseif(R<=m(j).thirdr) 563 | m(j).fourthr=m(j).thirdr; 564 | m(j).fourth=m(j).third; 565 | m(j).thirdr=R; 566 | m(j).third=k; 567 | % m(j).third 568 | %m(j).fourth 569 | %m(j).third 570 | elseif(R<=m(j).fourthr) 571 | m(j).fourthr=R; 572 | m(j).fourth=k; 573 | % m(j).fourth 574 | end 575 | %plot(s(k).xd,s(k).yd,'*'); 576 | %hold on; 577 | end 578 | end 579 | if(m(j).first~=100) 580 | %m(j).first 581 | %m(j).second 582 | %m(j).third 583 | %m(j).fourth 584 | 585 | count(m(j).first)=count(m(j).first)+1; 586 | count(m(j).second)=count(m(j).second)+1; 587 | count(m(j).third)=count(m(j).third)+1; 588 | count(m(j).fourth)=count(m(j).fourth)+1; 589 | end 590 | end 591 | end 592 | end 593 | for i=1:1:cl 594 | ktheorem(i).n1=0; 595 | ktheorem(i).n2=0; 596 | ktheorem(i).n3=0; 597 | ktheorem(i).n4=0; 598 | f=0; 599 | for j=1:1:n 600 | if(s(j).a~=1 && s(j).n==i) 601 | f=f+1; 602 | if(f==1) 603 | ktheorem(i).n1=j; 604 | elseif(f==2) 605 | ktheorem(i).n2=j; 606 | elseif(f==3) 607 | ktheorem(i).n3=j; 608 | elseif(f==4) 609 | ktheorem(i).n4=j; 610 | else 611 | if(count(j)>=count(ktheorem(i).n1)) 612 | ktheorem(i).n4=ktheorem(i).n3; 613 | ktheorem(i).n3=ktheorem(i).n2; 614 | ktheorem(i).n2=ktheorem(i).n1; 615 | ktheorem(i).n1=j; 616 | elseif(count(j)>count(ktheorem(i).n2)) 617 | ktheorem(i).n4=ktheorem(i).n3; 618 | ktheorem(i).n3=ktheorem(i).n2; 619 | ktheorem(i).n2=j; 620 | elseif(count(j)>count(ktheorem(i).n3)) 621 | ktheorem(i).n4=ktheorem(i).n3; 622 | ktheorem(i).n3=j; 623 | else 624 | ktheorem(i).n4=j; 625 | end 626 | end 627 | end 628 | end 629 | end 630 | for i=1:1:cl 631 | %plot(s(ktheorem(i).n1).xd,s(ktheorem(i).n1).yd,'green o'); 632 | %plot(s(ktheorem(i).n2).xd,s(ktheorem(i).n2).yd,'green o'); 633 | %plot(s(ktheorem(i).n3).xd,s(ktheorem(i).n3).yd,'green o'); 634 | %plot(s(ktheorem(i).n4).xd,s(ktheorem(i).n4).yd,'green o'); 635 | %hold on; 636 | end 637 | %hold off; 638 | for r=1:1:rmax 639 | 640 | total=0; 641 | ener=0; 642 | energy=0; 643 | dead_nodes=0; 644 | 645 | for i=1:1:n 646 | s(i).useful=1; 647 | if((s(i).E)>0) 648 | %plot(s(i).xd,s(i).yd,'o'); 649 | else 650 | dead_nodes=dead_nodes+1; 651 | 652 | % plot(s(i).xd,s(i).yd,'red o'); 653 | s(i).useful=0; 654 | end 655 | %hold on; 656 | end 657 | round(r)=dead_nodes; 658 | for i=1:1:cl-1 659 | R=sqrt( (s(advancednode(i)).xd)^2 + (s(advancednode(i)).yd )^2 ); 660 | if(R<=ym) 661 | % plot(s(advancednode(i)).xd,s(advancednode(i)).yd,'red *'); 662 | th = linspace( 0, pi/2, 100); 663 | x = R*cos(th) + 0; 664 | y = R*sin(th) + 0; 665 | %plot(x,y); 666 | else 667 | %plot(s(advancednode(i)).xd,s(advancednode(i)).yd,'red *'); 668 | R=sqrt( (s(advancednode(i)).xd)^2 + (s(advancednode(i)).yd )^2 ); 669 | th = linspace( 0,asin(ym/R), 100); 670 | x = R*cos(th) + 0; 671 | y = R*sin(th) + 0; 672 | %plot(x,y); 673 | end 674 | end 675 | %hold on; 676 | for i=1:1:cl 677 | %plot(s(ktheorem(i).n1).xd,s(ktheorem(i).n1).yd,'green o'); 678 | %plot(s(ktheorem(i).n2).xd,s(ktheorem(i).n2).yd,'green o'); 679 | %plot(s(ktheorem(i).n3).xd,s(ktheorem(i).n3).yd,'green o'); 680 | %plot(s(ktheorem(i).n4).xd,s(ktheorem(i).n4).yd,'green o'); 681 | %hold on; 682 | if(i==cl) 683 | j=i-1; 684 | else 685 | j=i; 686 | end 687 | combined1=s(ktheorem(i).n1).E/(( (s(advancednode(j)).xd-s(ktheorem(i).n1).xd)^2 + (s(advancednode(j)).yd- s(ktheorem(i).n1).yd)^2 )); 688 | combined2=s(ktheorem(i).n2).E/(( (s(advancednode(j)).xd-s(ktheorem(i).n2).xd)^2 + (s(advancednode(j)).yd- s(ktheorem(i).n2).yd)^2 )); 689 | combined3=s(ktheorem(i).n3).E/(( (s(advancednode(j)).xd-s(ktheorem(i).n3).xd)^2 + (s(advancednode(j)).yd- s(ktheorem(i).n3).yd)^2 )); 690 | combined4=s(ktheorem(i).n4).E/(( (s(advancednode(j)).xd-s(ktheorem(i).n4).xd)^2 + (s(advancednode(j)).yd- s(ktheorem(i).n4).yd)^2 )); 691 | if(combined1>combined2) 692 | if(combined1>combined3) 693 | if(combined1>combined4) 694 | ccn(i)=ktheorem(i).n1; 695 | else 696 | ccn(i)=ktheorem(i).n4; 697 | end 698 | else 699 | if(combined3>combined4) 700 | ccn(i)=ktheorem(i).n3; 701 | else 702 | ccn(i)=ktheorem(i).n4; 703 | end 704 | end 705 | else 706 | if(combined2>combined3) 707 | if(combined2>combined4) 708 | ccn(i)=ktheorem(i).n2; 709 | else 710 | ccn(i)=ktheorem(i).n4; 711 | end 712 | else 713 | if(combined3>combined4) 714 | ccn(i)=ktheorem(i).n3; 715 | else 716 | ccn(i)=ktheorem(i).n4; 717 | end 718 | end 719 | end 720 | %plot(s(ccn(i)).xd,s(ccn(i)).yd,'black o'); 721 | end 722 | for i=1:1:cl 723 | f=0; 724 | if(i==cl) 725 | j=i-1; 726 | end 727 | for k=1:1:n 728 | % hold off; 729 | if(s(k).E>0&&k~=i&&s(k).a==0&&k~=ccn(i)&&s(k).n==i) 730 | dis=sqrt(((s(k).xd)-(s(ccn(i)).xd))^2+((s(k).yd)-(s(ccn(i)).yd))^2); 731 | x=[s(k).xd,s(ccn(i)).xd]; 732 | y=[s(k).yd,s(ccn(i)).yd]; 733 | f=f+1; 734 | % plot(x,y,'red'); 735 | if (dis>do) 736 | s(k).E=s(k).E- ( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 737 | end 738 | if (dis<=do) 739 | s(k).E=s(k).E- ( (ETX+EDA)*(4000) + Efs*4000*( dis * dis )); 740 | end 741 | % hold on; 742 | s(ccn(i)).E = s(ccn(i)).E- ( (ERX + EDA)*4000 ); 743 | 744 | end 745 | energy=energy+s(k).E; 746 | end 747 | 748 | 749 | 750 | dis=sqrt(((s(advancednode(j)).xd)-(s(ccn(i)).xd))^2+((s(advancednode(j)).yd)-(s(ccn(i)).yd))^2); 751 | if(dis>do) 752 | s(advancednode(j)).E=s(advancednode(j)).E- 10*( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 753 | else 754 | s(advancednode(j)).E=s(advancednode(j)).E- 10*( (ETX+EDA)*(4000) + Emp*4000*( dis*dis )); 755 | end 756 | end 757 | 758 | figure(11); 759 | hold on; 760 | plot(r,dead_nodes,'black .'); 761 | %figure(33); 762 | %ylabel('average energy of normal nodes'); 763 | % xlabel('round'); 764 | % hold on; 765 | % plot(r,energy,'green .'); 766 | ener=ener+s(advancednode(j)).E; 767 | %figure(3); 768 | %ylabel('average energy of advanced nodes'); 769 | %xlabel('round'); 770 | %hold on; 771 | %plot(r,ener,'red .'); 772 | total=(ener+energy)/(n-dead_nodes); 773 | figure(10); 774 | ylabel('average energy of network'); 775 | xlabel('round') 776 | hold on; 777 | plot(r,total,'blue .'); 778 | 779 | end 780 | 781 | 782 | 783 | 784 | 785 | -------------------------------------------------------------------------------- /HEEPSCC/working_HEEPSCC_150.m: -------------------------------------------------------------------------------- 1 | clear; 2 | xm=200; 3 | ym=100; 4 | sink.x=0.0*xm; 5 | sink.y=0.0*ym; 6 | n=150; 7 | Eo=0.1; 8 | %Eelec=Etx=Erx 9 | ETX=50*0.000000001; 10 | ERX=50*0.000000001; 11 | %Transmit Amplifier types 12 | Efs=10*0.000000000001; 13 | Emp=0.0013*0.000000000001; 14 | %Data Aggregation Energy 15 | EDA=5*0.000000001; 16 | rmax=800; 17 | do=sqrt(Efs/Emp); 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | s(1).xd=35.0;% ad 27 | s(1).yd=22.0; 28 | s(1).E= 6.5; 29 | 30 | s(2).xd=10.0; 31 | s(2).yd=10.0; 32 | s(2).E= 1.5; 33 | 34 | s(3).xd=15.0; 35 | s(3).yd=22.0; 36 | s(3).E= 2.1; 37 | 38 | s(4).xd=25.0; 39 | s(4).yd=13.0; 40 | s(4).E= 1.7; 41 | 42 | s(5).xd=26.0; 43 | s(5).yd=28.0; 44 | s(5).E= 4.6; 45 | 46 | s(6).xd=5.0; 47 | s(6).yd=32.0; 48 | s(6).E= 3.8; 49 | 50 | 51 | s(7).xd=5.0;% ad 52 | s(7).yd=19.0; 53 | s(7).E= 2.4; 54 | 55 | 56 | s(8).xd=15.0; 57 | s(8).yd=29.0; 58 | s(8).E= 3.1; 59 | 60 | 61 | s(9).xd=18.0; 62 | s(9).yd=5.0; 63 | s(9).E= 3.1; 64 | 65 | 66 | s(10).xd=32.0; 67 | s(10).yd=10.0; 68 | s(10).E= 3.1; 69 | 70 | %2 cluster 71 | 72 | s(11).xd=60.0;% ad 73 | s(11).yd=50.0; 74 | s(11).E= 8.4; 75 | 76 | s(12).xd=55.0; 77 | s(12).yd=12.0; 78 | s(12).E= 3.1; 79 | 80 | s(13).xd=71.0; 81 | s(13).yd=13.0; 82 | s(13).E= 1.4; 83 | 84 | s(14).xd=67.0; 85 | s(14).yd=26.0; 86 | s(14).E= 3.7; 87 | 88 | s(15).xd=44.0; 89 | s(15).yd=37.0; 90 | s(15).E= 3.01; 91 | 92 | s(16).xd=60.0; 93 | s(16).yd=40.0; 94 | s(16).E= 4.1; 95 | 96 | 97 | 98 | s(17).xd=35.0; % ad 99 | s(17).yd=40.0; 100 | s(17).E=2.3 ; 101 | 102 | s(18).xd=40.0; 103 | s(18).yd=46.0; 104 | s(18).E= 1.1; 105 | 106 | s(19).xd=43.0; 107 | s(19).yd=58.0; 108 | s(19).E=2.1 ; 109 | 110 | s(20).xd=26.0; 111 | s(20).yd=55.0; 112 | s(20).E=3.3 ; 113 | 114 | s(21).xd=28.0; 115 | s(21).yd=72.0; 116 | s(21).E=2.8 ; 117 | 118 | s(22).xd=16.0; 119 | s(22).yd=45.0; 120 | s(22).E=2.8 ; 121 | 122 | s(23).xd=21.0; 123 | s(23).yd=62.0; 124 | s(23).E=2.8 ; 125 | 126 | s(24).xd=35.0; 127 | s(24).yd=60.0; 128 | s(24).E=2.8 ; 129 | 130 | s(25).xd=35.0; 131 | s(25).yd=48.0; 132 | s(25).E=2.8 ; 133 | 134 | s(26).xd=30.0; 135 | s(26).yd=37.0; 136 | s(26).E=2.8 ; 137 | 138 | s(27).xd=50.0; 139 | s(27).yd=40.0; 140 | s(27).E=2.8 ; 141 | 142 | s(28).xd=47.0; 143 | s(28).yd=20.0; 144 | s(28).E=2.8 ; 145 | 146 | s(29).xd=63.0; 147 | s(29).yd=20.0; 148 | s(29).E=2.8 ; 149 | 150 | 151 | 152 | %3 cluster 153 | 154 | s(30).xd=100.0; %ad 155 | s(30).yd=66.0; 156 | s(30).E=9.9 ; 157 | 158 | s(31).xd=90.0; 159 | s(31).yd=3.0; 160 | s(31).E=3.9 ; 161 | 162 | s(32).xd=106.0; 163 | s(32).yd=6.0; 164 | s(32).E=3.7 ; 165 | 166 | s(33).xd=85.0; 167 | s(33).yd=15.0; 168 | s(33).E=3.6 ; 169 | 170 | 171 | s(34).xd=100.0; 172 | s(34).yd=18.0; 173 | s(34).E=2.5 ; 174 | 175 | s(35).xd=110.0; 176 | s(35).yd=19.0; 177 | s(35).E=2.9 ; 178 | 179 | s(36).xd=112.0; 180 | s(36).yd=33.0; 181 | s(36).E= 2.2; 182 | 183 | s(37).xd=85.0; 184 | s(37).yd=32.0; 185 | s(37).E=4.3 ; 186 | 187 | s(38).xd=102.0; 188 | s(38).yd=42.0; 189 | s(38).E=3.7 ; 190 | 191 | s(39).xd=93.0; 192 | s(39).yd=38.0; 193 | s(39).E=3.9 ; 194 | 195 | s(40).xd=108.0; 196 | s(40).yd=48.0; 197 | s(40).E=4.1 ; 198 | 199 | s(41).xd=98.0; 200 | s(41).yd=62.0; 201 | s(41).E= 3.4; 202 | 203 | s(42).xd=90.0; 204 | s(42).yd=52.0; 205 | s(42).E=2.2 ; 206 | 207 | s(43).xd=80.0; 208 | s(43).yd=46.0; 209 | s(43).E=3.1 ; 210 | 211 | s(44).xd=76.0; 212 | s(44).yd=45.0; 213 | s(44).E=3.2 ; 214 | 215 | s(45).xd=75.0; 216 | s(45).yd=60.0; 217 | s(45).E= 2.4; 218 | 219 | s(46).xd=85.0; 220 | s(46).yd=68.0; 221 | s(46).E=4.1 ; 222 | 223 | s(47).xd=94.0; 224 | s(47).yd=72.0; 225 | s(47).E=3.4 ; 226 | 227 | s(48).xd=75.0; 228 | s(48).yd=70.0; 229 | s(48).E=2.2 ; 230 | 231 | s(49).xd=80.0; 232 | s(49).yd=82.0; 233 | s(49).E=3.3 ; 234 | 235 | s(50).xd=74.0; 236 | s(50).yd=92.0; 237 | s(50).E=4.4 ; 238 | 239 | s(51).xd=65.0; 240 | s(51).yd=78.0; 241 | s(51).E=3.5 ; 242 | 243 | s(52).xd=50.0; 244 | s(52).yd=75.0; 245 | s(52).E=2.4 ; 246 | 247 | s(53).xd=53.0; 248 | s(53).yd=95.0; 249 | s(53).E=2.7 ; 250 | 251 | s(54).xd=40.0; 252 | s(54).yd=88.0; 253 | s(54).E=3.9 ; 254 | 255 | 256 | s(55).xd=22.0; 257 | s(55).yd=78.0; 258 | s(55).E=2.9 ; 259 | 260 | 261 | s(56).xd=24.0; 262 | s(56).yd=90.0; 263 | s(56).E=3.0 ; 264 | 265 | s(57).xd=4.0; 266 | s(57).yd=79.0; 267 | s(57).E=3.9 ; 268 | 269 | 270 | s(58).xd=38.0; 271 | s(58).yd=79.0; 272 | s(58).E=3.5 ; 273 | 274 | 275 | s(59).xd=55.0; 276 | s(59).yd=85.0; 277 | s(59).E=2.9 ; 278 | 279 | 280 | s(60).xd=59.0; 281 | s(60).yd=68.0; 282 | s(60).E=3.7 ; 283 | 284 | s(61).xd=69.0; 285 | s(61).yd=88.0; 286 | s(61).E=2.7 ; 287 | 288 | 289 | s(62).xd=78.0; 290 | s(62).yd=75.0; 291 | s(62).E=2.6 ; 292 | 293 | 294 | s(63).xd=90.0; 295 | s(63).yd=60.0; 296 | s(63).E=3.2 ; 297 | 298 | 299 | s(64).xd=86.0; 300 | s(64).yd=47.0; 301 | s(64).E=4.1 ; 302 | 303 | 304 | s(65).xd=96.0; 305 | s(65).yd=47.0; 306 | s(65).E=3.9 ; 307 | 308 | 309 | s(66).xd=80.0; 310 | s(66).yd=38.0; 311 | s(66).E=3.6 ; 312 | 313 | 314 | s(67).xd=81.0; 315 | s(67).yd=21.0; 316 | s(67).E=4.1 ; 317 | 318 | 319 | s(68).xd=95.0; 320 | s(68).yd=25.0; 321 | s(68).E=3.3 ; 322 | 323 | 324 | s(69).xd=110.0; 325 | s(69).yd=15.0; 326 | s(69).E=3.7 ; 327 | 328 | 329 | %fourth cluster 330 | 331 | s(70).xd=145.0; 332 | s(70).yd=18.0; 333 | s(70).E=9.3; 334 | 335 | s(71).xd=133.0; 336 | s(71).yd=8.0; 337 | s(71).E=4.1 ; 338 | 339 | s(72).xd=125.0; 340 | s(72).yd=18.0; 341 | s(72).E=3.7; 342 | 343 | s(73).xd=135.0; 344 | s(73).yd=34.0; 345 | s(73).E=2.3 ; 346 | 347 | s(74).xd=123.0; 348 | s(74).yd=42.0; 349 | s(74).E=4.6 ; 350 | 351 | s(75).xd=134.0; 352 | s(75).yd=52.0; 353 | s(75).E=2.1 ; 354 | 355 | s(76).xd=118.0; 356 | s(76).yd=50.0; 357 | s(76).E=4.6 ; 358 | 359 | s(77).xd=123.0; 360 | s(77).yd=60.0; 361 | s(77).E=4.1 ; 362 | 363 | s(78).xd=126.0; 364 | s(78).yd=65.0; 365 | s(78).E=2.5 ; 366 | 367 | s(79).xd=113.0; 368 | s(79).yd=65.0; 369 | s(79).E=3.0 ; 370 | 371 | s(80).xd=125.0; 372 | s(80).yd=70.0; 373 | s(80).E=4.1 ; 374 | 375 | s(81).xd=120.0; 376 | s(81).yd=72.0; 377 | s(81).E=3.6 ; 378 | 379 | s(82).xd=124.0; 380 | s(82).yd=80.0; 381 | s(82).E=3.9 ; 382 | 383 | s(83).xd=105.0; 384 | s(83).yd=82.0; 385 | s(83).E=3.2 ; 386 | 387 | s(84).xd=124.0; 388 | s(84).yd=90.0; 389 | s(84).E=2.9 ; 390 | 391 | s(85).xd=116.0; 392 | s(85).yd=92.0; 393 | s(85).E=3.6 ; 394 | 395 | s(86).xd=110.0; 396 | s(86).yd=90.0; 397 | s(86).E=3.6 ; 398 | 399 | s(87).xd=95.0; 400 | s(87).yd=85.0; 401 | s(87).E=2.9 ; 402 | 403 | s(88).xd=90.0; 404 | s(88).yd=95.0; 405 | s(88).E=4.3 ; 406 | 407 | s(89).xd=98.0; 408 | s(89).yd=95.0; 409 | s(89).E=3.3 ; 410 | 411 | s(90).xd=115.0; 412 | s(90).yd=80.0; 413 | s(90).E=2.3 ; 414 | 415 | s(91).xd=116.0; 416 | s(91).yd=73.0; 417 | s(91).E=2.4 ; 418 | 419 | s(92).xd=118.0; 420 | s(92).yd=70.0; 421 | s(92).E=2.7 ; 422 | 423 | s(93).xd=127.0; 424 | s(93).yd=45.0; 425 | s(93).E=2.5 ; 426 | 427 | s(94).xd=136.0; 428 | s(94).yd=35.0; 429 | s(94).E=3.3 ; 430 | 431 | s(95).xd=122.0; 432 | s(95).yd=25.0; 433 | s(95).E=3.5 ; 434 | 435 | s(96).xd=129.0; 436 | s(96).yd=25.0; 437 | s(96).E=3.6 ; 438 | 439 | s(97).xd=126.0; 440 | s(97).yd=9.0; 441 | s(97).E=3.7 ; 442 | 443 | %fifth 444 | 445 | s(98).xd=155.0; %ad 446 | s(98).yd=85.0; 447 | s(98).E=8.9 ; 448 | 449 | s(99).xd=158.0; 450 | s(99).yd=12.0; 451 | s(99).E= 3.8; 452 | 453 | s(100).xd=167.0; 454 | s(100).yd=22.0; 455 | s(100).E=2.9 ; 456 | 457 | s(101).xd=155.0; 458 | s(101).yd=24.0; 459 | s(101).E=2.4 ; 460 | 461 | s(102).xd=147.0; 462 | s(102).yd=31.0; 463 | s(102).E=2.3 ; 464 | 465 | s(103).xd=162; 466 | s(103).yd=35.0; 467 | s(103).E=2.6 ; 468 | 469 | 470 | 471 | s(104).xd=148.0; 472 | s(104).yd=43.0; 473 | s(104).E=4.8 ; 474 | 475 | s(105).xd=154.0; 476 | s(105).yd=55.0; 477 | s(105).E=2.9 ; 478 | 479 | s(106).xd=148.0; 480 | s(106).yd=58.0; 481 | s(106).E=3.8 ; 482 | 483 | s(107).xd=156.0; 484 | s(107).yd=70.0; 485 | s(107).E=3.7 ; 486 | 487 | s(108).xd=149.0; 488 | s(108).yd=69.0; 489 | s(108).E=3.5 ; 490 | 491 | s(109).xd=150.0; 492 | s(109).yd=80.0; 493 | s(109).E=3.2 ; 494 | 495 | s(110).xd=142.0; 496 | s(110).yd=82.0; 497 | s(110).E=2.7 ; 498 | 499 | s(111).xd=143.0; 500 | s(111).yd=88.0; 501 | s(111).E=3.5 ; 502 | 503 | s(112).xd=128.0; 504 | s(112).yd=96.0; 505 | s(112).E=4.3 ; 506 | 507 | 508 | s(113).xd=130.0; 509 | s(113).yd=90.0; 510 | s(113).E=4.4 ; 511 | 512 | s(114).xd=145.0; 513 | s(114).yd=81.0; 514 | s(114).E=4.6 ; 515 | 516 | 517 | s(115).xd=148.0; 518 | s(115).yd=75.0; 519 | s(115).E=4.8 ; 520 | 521 | 522 | s(116).xd=155.0; 523 | s(116).yd=60.0; 524 | s(116).E=2.3 ; 525 | 526 | 527 | s(117).xd=165.0; 528 | s(117).yd=53.0; 529 | s(117).E=3.5 ; 530 | 531 | 532 | s(118).xd=159.0; 533 | s(118).yd=49.0; 534 | s(118).E=3.9 ; 535 | 536 | 537 | s(119).xd=155.0; 538 | s(119).yd=38.0; 539 | s(119).E=2.7 ; 540 | 541 | 542 | s(120).xd=163.0; 543 | s(120).yd=20.0; 544 | s(120).E=2.9 ; 545 | 546 | %sixth 547 | 548 | s(121).xd=195.0; %ad 549 | s(121).yd=10.0; 550 | s(121).E=2.4 ; 551 | 552 | s(122).xd=183.0; 553 | s(122).yd=12.0; 554 | s(122).E=3.7 ; 555 | 556 | s(123).xd=182.0; 557 | s(123).yd=20.0; 558 | s(123).E=3.1 ; 559 | 560 | s(124).xd=195.0; 561 | s(124).yd=25.0; 562 | s(124).E=3.5 ; 563 | 564 | s(125).xd=184.0; 565 | s(125).yd=38.0; 566 | s(125).E=3.8 ; 567 | 568 | s(126).xd=192.0; 569 | s(126).yd=43.0; 570 | s(126).E=3.9 ; 571 | 572 | s(127).xd=185.0; 573 | s(127).yd=52.0; 574 | s(127).E=3.5 ; 575 | 576 | s(128).xd=171.0; 577 | s(128).yd=50.0; 578 | s(128).E=2.9 ; 579 | 580 | s(129).xd=165.0; 581 | s(129).yd=64.0; 582 | s(129).E= 4.9; 583 | 584 | s(130).xd=118.0; 585 | s(130).yd=68.0; 586 | s(130).E=4.3 ; 587 | 588 | s(131).xd=180.0; 589 | s(131).yd=73.0; 590 | s(131).E=4.4 ; 591 | 592 | 593 | 594 | s(132).xd=190.0; 595 | s(132).yd=75.0; 596 | s(132).E=3.2 ; 597 | 598 | s(133).xd=186.0; 599 | s(133).yd=83.0; 600 | s(133).E=2.2 ; 601 | 602 | s(134).xd=173.0; 603 | s(134).yd=83.0; 604 | s(134).E= 3.7; 605 | 606 | s(135).xd=184.0; 607 | s(135).yd=92.0; 608 | s(135).E=1.3 ; 609 | 610 | s(136).xd=169.0; 611 | s(136).yd=88.0; 612 | s(137).E=2.9 ; 613 | 614 | s(138).xd=148.0; 615 | s(138).yd=89.0; 616 | s(138).E=3.1 ; 617 | 618 | s(139).xd=155.0; 619 | s(139).yd=96.0; 620 | s(139).E=1.6 ; 621 | 622 | s(140).xd=146.0; 623 | s(140).yd=75.0; 624 | s(140).E= 2.3; 625 | 626 | s(141).xd=170.0; 627 | s(141).yd=55.0; 628 | s(141).E=2.8 ; 629 | 630 | s(142).xd=183.0; 631 | s(142).yd=38.0; 632 | s(142).E=1.3 ;% 100 nodes 633 | 634 | 635 | 636 | s(143).xd=179.0; 637 | s(143).yd=89.0; 638 | s(143).E=2.8 ; 639 | 640 | 641 | s(144).xd=178.0; 642 | s(144).yd=85.0; 643 | s(144).E=3.9 ; 644 | 645 | 646 | s(145).xd=174.0; 647 | s(145).yd=72.0; 648 | s(145).E=4.0 ; 649 | 650 | 651 | s(146).xd=179.0; 652 | s(146).yd=60.0; 653 | s(146).E=3.6 ; 654 | 655 | 656 | s(147).xd=182.0; 657 | s(147).yd=45.0; 658 | s(147).E=3.4 ; 659 | 660 | 661 | s(148).xd=195.0; 662 | s(148).yd=40.0; 663 | s(148).E=3.8 ; 664 | 665 | 666 | s(149).xd=184.0; 667 | s(149).yd=35.0; 668 | s(149).E=2.6 ; 669 | 670 | 671 | s(150).xd=191.0; 672 | s(150).yd=20.0; 673 | s(150).E=4.2 ; 674 | 675 | sum=0; 676 | for i=1:1:150 677 | if((s(i).E)>0) 678 | % plot(s(i).xd,s(i).yd,'o'); 679 | end 680 | %hold on; 681 | end 682 | cl=1; 683 | dis(1).di=0; 684 | for i=1:1:150 685 | s(i).a=0; 686 | if(s(i).E>5) 687 | s(i).a=1; 688 | advancednode(cl)=i; 689 | cl=cl+1; 690 | R=sqrt( (s(i).xd)^2 + (s(i).yd )^2 ); 691 | if(R<=ym) 692 | % plot(s(i).xd,s(i).yd,'red *'); 693 | 694 | dis(cl).di=R; 695 | dis(cl).n=cl; 696 | th = linspace( 0, pi/2, 100); 697 | x = R*cos(th) + 0; 698 | y = R*sin(th) + 0; 699 | %plot(x,y); 700 | else 701 | %plot(s(i).xd,s(i).yd,'red *'); 702 | R=sqrt( (s(i).xd)^2 + (s(i).yd )^2 ); 703 | dis(cl).di=R; 704 | dis(cl).n=cl; 705 | th = linspace( 0,asin(ym/R), 100); 706 | x = R*cos(th) + 0; 707 | y = R*sin(th) + 0; 708 | %plot(x,y); 709 | end 710 | end 711 | hold on; 712 | end 713 | for j=1:1:cl-1 714 | % comparing each number with the next and swapping 715 | for i=1:1:cl-1 716 | if dis(i).di>dis(i+1).di 717 | % temp is a variable where the numbers are kept 718 | % temporarily for the switch 719 | temp=dis(i).di; 720 | dis(i).di=dis(i+1).di; 721 | dis(i+1).di=temp; 722 | end 723 | end 724 | end 725 | for i=1:1:150 726 | R=sqrt( (s(i).xd)^2 + (s(i).yd )^2 ); 727 | nequal=1; 728 | number=2; 729 | max=cl; 730 | while(nequal==1&&number<=cl) 731 | %number 732 | if((dis(number).di)>R & R>(dis(number-1).di)) 733 | s(i).n=number-1; 734 | nequal=0; 735 | end 736 | if((dis(number).di)==R) 737 | s(i).n=number-1; 738 | nequal=0; 739 | end 740 | if(R>dis(max).di) 741 | s(i).n=max; 742 | nequal=0; 743 | end 744 | number=number+1; 745 | end 746 | end 747 | 748 | for i=1:1:150 749 | count(i)=0; 750 | end 751 | for i=1:1:cl 752 | for j=1:1:150 753 | %j; 754 | if(s(j).n==i&s(j).a==0) 755 | m(j).firstr=150; 756 | m(j).secondr=150; 757 | m(j).thirdr=150; 758 | m(j).fourthr=150; 759 | m(j).first=0; 760 | m(j).second=0; 761 | m(j).third=0; 762 | m(j).fourth=0; 763 | for k=1:1:150 764 | if (s(k).n==i & j~=k & s(k).a==0) 765 | R=sqrt( (s(j).xd-s(k).xd)^2 + (s(j).yd-s(k).yd )^2 ); 766 | %k 767 | %R 768 | if(R<=m(j).firstr) 769 | m(j).fourthr=m(j).thirdr; 770 | m(j).fourth=m(j).third; 771 | m(j).thirdr=m(j).secondr; 772 | m(j).third=m(j).second; 773 | m(j).secondr=m(j).firstr; 774 | m(j).second=m(j).first; 775 | m(j).firstr=R; 776 | m(j).first=k; 777 | 778 | %m(j).first 779 | %m(j).second 780 | %m(j).third 781 | %m(j).fourth % m(j).first 782 | elseif(R<=m(j).secondr) 783 | m(j).fourthr=m(j).thirdr; 784 | m(j).fourth=m(j).third; 785 | m(j).thirdr=m(j).secondr; 786 | m(j).third=m(j).second; 787 | m(j).secondr=R; 788 | m(j).second=k; 789 | 790 | %m(j).third 791 | %m(j).fourth 792 | %m(j).second 793 | elseif(R<=m(j).thirdr) 794 | m(j).fourthr=m(j).thirdr; 795 | m(j).fourth=m(j).third; 796 | m(j).thirdr=R; 797 | m(j).third=k; 798 | % m(j).third 799 | %m(j).fourth 800 | %m(j).third 801 | elseif(R<=m(j).fourthr) 802 | m(j).fourthr=R; 803 | m(j).fourth=k; 804 | % m(j).fourth 805 | end 806 | %plot(s(k).xd,s(k).yd,'*'); 807 | %hold on; 808 | end 809 | end 810 | if(m(j).first~=0) 811 | %m(j).first 812 | %m(j).second 813 | %m(j).third 814 | %m(j).fourth 815 | %m(j).first 816 | count(m(j).first)=count(m(j).first)+1; 817 | count(m(j).second)=count(m(j).second)+1; 818 | count(m(j).third)=count(m(j).third)+1; 819 | count(m(j).fourth)=count(m(j).fourth)+1; 820 | end 821 | end 822 | end 823 | end 824 | for i=1:1:cl 825 | ktheorem(i).n1=0; 826 | ktheorem(i).n2=0; 827 | ktheorem(i).n3=0; 828 | ktheorem(i).n4=0; 829 | f=0; 830 | for j=1:1:150 831 | if(s(j).a~=1 & s(j).n==i) 832 | f=f+1; 833 | if(f==1) 834 | ktheorem(i).n1=j; 835 | elseif(f==2) 836 | ktheorem(i).n2=j; 837 | elseif(f==3) 838 | ktheorem(i).n3=j; 839 | elseif(f==4) 840 | ktheorem(i).n4=j; 841 | else 842 | if(count(j)>=count(ktheorem(i).n1)) 843 | ktheorem(i).n4=ktheorem(i).n3; 844 | ktheorem(i).n3=ktheorem(i).n2; 845 | ktheorem(i).n2=ktheorem(i).n1; 846 | ktheorem(i).n1=j; 847 | elseif(count(j)>count(ktheorem(i).n2)) 848 | ktheorem(i).n4=ktheorem(i).n3; 849 | ktheorem(i).n3=ktheorem(i).n2; 850 | ktheorem(i).n2=j; 851 | elseif(count(j)>count(ktheorem(i).n3)) 852 | ktheorem(i).n4=ktheorem(i).n3; 853 | ktheorem(i).n3=j; 854 | else 855 | ktheorem(i).n4=j; 856 | end 857 | end 858 | end 859 | end 860 | end 861 | 862 | for i=1:1:cl 863 | ktheorem(i).n1; 864 | %plot(s(ktheorem(i).n1).xd,s(ktheorem(i).n1).yd,'green o'); 865 | %plot(s(ktheorem(i).n2).xd,s(ktheorem(i).n2).yd,'green o'); 866 | %plot(s(ktheorem(i).n3).xd,s(ktheorem(i).n3).yd,'green o'); 867 | %plot(s(ktheorem(i).n4).xd,s(ktheorem(i).n4).yd,'green o'); 868 | %hold on; 869 | end 870 | %hold off; 871 | for r=0:1:rmax 872 | 873 | total=0; 874 | ener=0; 875 | energy=0; 876 | dead_nodes=0; 877 | for i=1:1:150 878 | s(i).useful=1; 879 | if((s(i).E)>0) 880 | % plot(s(i).xd,s(i).yd,'o'); 881 | else 882 | dead_nodes=dead_nodes+1; 883 | 884 | % plot(s(i).xd,s(i).yd,'red o'); 885 | s(i).useful=0; 886 | end 887 | % hold on; 888 | end 889 | % round(r)=dead_nodes; 890 | for i=1:1:cl-1 891 | R=sqrt( (s(advancednode(i)).xd)^2 + (s(advancednode(i)).yd )^2 ); 892 | if(R<=ym) 893 | % plot(s(advancednode(i)).xd,s(advancednode(i)).yd,'red *'); 894 | th = linspace( 0, pi/2, 100); 895 | x = R*cos(th) + 0; 896 | y = R*sin(th) + 0; 897 | %plot(x,y); 898 | else 899 | %plot(s(advancednode(i)).xd,s(advancednode(i)).yd,'red *'); 900 | R=sqrt( (s(advancednode(i)).xd)^2 + (s(advancednode(i)).yd )^2 ); 901 | th = linspace( 0,asin(ym/R), 100); 902 | x = R*cos(th) + 0; 903 | y = R*sin(th) + 0; 904 | %plot(x,y); 905 | end 906 | end 907 | %hold on; 908 | for i=1:1:cl 909 | %plot(s(ktheorem(i).n1).xd,s(ktheorem(i).n1).yd,'green o'); 910 | %plot(s(ktheorem(i).n2).xd,s(ktheorem(i).n2).yd,'green o'); 911 | %plot(s(ktheorem(i).n3).xd,s(ktheorem(i).n3).yd,'green o'); 912 | %plot(s(ktheorem(i).n4).xd,s(ktheorem(i).n4).yd,'green o'); 913 | %hold on; 914 | if(i==cl) 915 | j=i-1; 916 | else 917 | j=i; 918 | end 919 | combined1=s(ktheorem(i).n1).E/(( (s(advancednode(j)).xd-s(ktheorem(i).n1).xd)^2 + (s(advancednode(j)).yd- s(ktheorem(i).n1).yd)^2 )); 920 | combined2=s(ktheorem(i).n2).E/(( (s(advancednode(j)).xd-s(ktheorem(i).n2).xd)^2 + (s(advancednode(j)).yd- s(ktheorem(i).n2).yd)^2 )); 921 | combined3=s(ktheorem(i).n3).E/(( (s(advancednode(j)).xd-s(ktheorem(i).n3).xd)^2 + (s(advancednode(j)).yd- s(ktheorem(i).n3).yd)^2 )); 922 | combined4=s(ktheorem(i).n4).E/(( (s(advancednode(j)).xd-s(ktheorem(i).n4).xd)^2 + (s(advancednode(j)).yd- s(ktheorem(i).n4).yd)^2 )); 923 | if(combined1>combined2) 924 | if(combined1>combined3) 925 | if(combined1>combined4) 926 | ccn(i)=ktheorem(i).n1; 927 | else 928 | ccn(i)=ktheorem(i).n4; 929 | end 930 | else 931 | if(combined3>combined4) 932 | ccn(i)=ktheorem(i).n3; 933 | else 934 | ccn(i)=ktheorem(i).n4; 935 | end 936 | end 937 | else 938 | if(combined2>combined3) 939 | if(combined2>combined4) 940 | ccn(i)=ktheorem(i).n2; 941 | else 942 | ccn(i)=ktheorem(i).n4; 943 | end 944 | else 945 | if(combined3>combined4) 946 | ccn(i)=ktheorem(i).n3; 947 | else 948 | ccn(i)=ktheorem(i).n4; 949 | end 950 | end 951 | end 952 | %plot(s(ccn(i)).xd,s(ccn(i)).yd,'black o'); 953 | end 954 | for i=1:1:cl 955 | f=0; 956 | if(i==cl) 957 | j=i-1; 958 | end 959 | for k=1:1:150 960 | % hold off; 961 | if(s(k).E>0 & k~=i & s(k).a==0 & k~=ccn(i) & s(k).n==i) 962 | dis=sqrt(((s(k).xd)-(s(ccn(i)).xd))^2+((s(k).yd)-(s(ccn(i)).yd))^2); 963 | x=[s(k).xd,s(ccn(i)).xd]; 964 | y=[s(k).yd,s(ccn(i)).yd]; 965 | f=f+1; 966 | % plot(x,y,'red'); 967 | if (dis>do) 968 | s(k).E=s(k).E- ( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 969 | end 970 | if (dis<=do) 971 | s(k).E=s(k).E- ( (ETX+EDA)*(4000) + Efs*4000*( dis * dis )); 972 | end 973 | hold on; 974 | s(ccn(i)).E = s(ccn(i)).E- ( (ERX + EDA)*4000 ); 975 | 976 | end 977 | energy=energy+s(k).E; 978 | 979 | end 980 | 981 | dis=sqrt(((s(advancednode(j)).xd)-(s(ccn(i)).xd))^2+((s(advancednode(j)).yd)-(s(ccn(i)).yd))^2); 982 | if(dis>do) 983 | s(advancednode(j)).E=s(advancednode(j)).E- 10*( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 984 | else 985 | s(advancednode(j)).E=s(advancednode(j)).E- 10*( (ETX+EDA)*(4000) + Emp*4000*( dis*dis )); 986 | end 987 | ener=ener+s(advancednode(j)).E; 988 | 989 | end 990 | %figure(11); 991 | % hold on; 992 | % plot(r,dead_nodes,'black .'); 993 | % figure(33); 994 | %ylabel('average energy of normal nodes'); 995 | %xlabel('round'); 996 | %hold on; 997 | %plot(r,energy,'green .'); 998 | 999 | %figure(3); 1000 | %ylabel('average energy of advanced nodes'); 1001 | %xlabel('round'); 1002 | %hold on; 1003 | %plot(r,ener,'red .'); 1004 | 1005 | total=(ener+energy)/(n-dead_nodes); 1006 | figure(10); 1007 | ylabel('average energy of network'); 1008 | xlabel('round') 1009 | hold on; 1010 | plot(r,total,'blue .'); 1011 | 1012 | 1013 | end -------------------------------------------------------------------------------- /HEEPSCC/working_HEEPSCC_200.m: -------------------------------------------------------------------------------- 1 | clear; 2 | xm=200; 3 | ym=100; 4 | sink.x=0.0*xm; 5 | sink.y=0.0*ym; 6 | %n=150; 7 | Eo=0.1; 8 | %Eelec=Etx=Erx 9 | ETX=50*0.000000001; 10 | ERX=50*0.000000001; 11 | %Transmit Amplifier types 12 | Efs=10*0.000000000001; 13 | Emp=0.0013*0.000000000001; 14 | %Data Aggregation Energy 15 | EDA=5*0.000000001; 16 | rmax=800; 17 | do=sqrt(Efs/Emp); 18 | %figure(1); 19 | 20 | 21 | 22 | 23 | 24 | 25 | s(1).xd=35.0; % ad 26 | s(1).yd=22.0; 27 | s(1).E= 6.5; 28 | 29 | s(2).xd=10.0; 30 | s(2).yd=10.0; 31 | s(2).E= 1.5; 32 | 33 | s(3).xd=15.0; 34 | s(3).yd=22.0; 35 | s(3).E= 2.1; 36 | 37 | s(4).xd=25.0; 38 | s(4).yd=13.0; 39 | s(4).E= 1.7; 40 | 41 | s(5).xd=26.0; 42 | s(5).yd=28.0; 43 | s(5).E= 4.6; 44 | 45 | s(6).xd=5.0; 46 | s(6).yd=32.0; 47 | s(6).E= 3.8; 48 | 49 | 50 | s(7).xd=5.0; 51 | s(7).yd=19.0; 52 | s(7).E= 2.4; 53 | 54 | 55 | s(8).xd=15.0; 56 | s(8).yd=29.0; 57 | s(8).E= 3.1; 58 | 59 | 60 | s(9).xd=18.0; 61 | s(9).yd=5.0; 62 | s(9).E= 3.1; 63 | 64 | 65 | s(10).xd=32.0; 66 | s(10).yd=10.0; 67 | s(10).E= 3.1; 68 | 69 | 70 | s(11).xd=5.0; 71 | s(11).yd=10.0; 72 | s(11).E= 3.1; 73 | 74 | s(12).xd=17.0; 75 | s(12).yd=12.0; 76 | s(12).E= 2.8; 77 | 78 | s(13).xd=22.0; 79 | s(13).yd=29.0; 80 | s(13).E= 4.3; 81 | 82 | s(14).xd=26.0; 83 | s(14).yd=19.0; 84 | s(14).E= 2.4; 85 | 86 | %2 cluster 87 | 88 | s(15).xd=60.0; %ad 89 | s(15).yd=50.0; 90 | s(15).E= 8.4; 91 | 92 | s(16).xd=55.0; 93 | s(16).yd=12.0; 94 | s(16).E= 3.1; 95 | 96 | s(17).xd=71.0; 97 | s(17).yd=13.0; 98 | s(17).E= 1.4; 99 | 100 | s(18).xd=67.0; 101 | s(18).yd=26.0; 102 | s(18).E= 3.7; 103 | 104 | s(19).xd=44.0; 105 | s(19).yd=37.0; 106 | s(19).E= 3.01; 107 | 108 | s(20).xd=60.0; 109 | s(20).yd=40.0; 110 | s(20).E= 4.1; 111 | 112 | 113 | s(21).xd=35.0; 114 | s(21).yd=40.0; 115 | s(21).E=3.3 ; 116 | 117 | s(22).xd=40.0; 118 | s(22).yd=46.0; 119 | s(22).E= 1.1; 120 | 121 | s(23).xd=43.0; 122 | s(23).yd=58.0; 123 | s(23).E=2.1 ; 124 | 125 | s(24).xd=26.0; 126 | s(24).yd=55.0; 127 | s(24).E=3.3 ; 128 | 129 | s(25).xd=28.0; 130 | s(25).yd=72.0; 131 | s(25).E=2.8 ; 132 | 133 | s(26).xd=16.0; 134 | s(26).yd=45.0; 135 | s(26).E=2.8 ; 136 | 137 | s(27).xd=21.0; 138 | s(27).yd=62.0; 139 | s(27).E=2.8 ; 140 | 141 | s(28).xd=35.0; 142 | s(28).yd=60.0; 143 | s(28).E=2.8 ; 144 | 145 | s(29).xd=35.0; 146 | s(29).yd=48.0; 147 | s(29).E=2.8 ; 148 | 149 | s(30).xd=30.0; 150 | s(30).yd=37.0; 151 | s(30).E=2.8 ; 152 | 153 | s(31).xd=50.0; 154 | s(31).yd=40.0; 155 | s(31).E=2.8 ; 156 | 157 | s(32).xd=47.0; 158 | s(32).yd=20.0; 159 | s(32).E=2.8 ; 160 | 161 | s(33).xd=63.0; 162 | s(33).yd=20.0; 163 | s(33).E=2.8 ; 164 | 165 | s(34).xd=8.0; 166 | s(34).yd=69.0; 167 | s(34).E= 2.9; 168 | 169 | s(35).xd=8.0; 170 | s(35).yd=52.0; 171 | s(35).E= 1.9; 172 | 173 | s(36).xd=28.0; 174 | s(36).yd=44.0; 175 | s(36).E= 3.3; 176 | 177 | s(37).xd=40.0; 178 | s(37).yd=32.0; 179 | s(37).E= 2.8; 180 | 181 | s(38).xd=50.0; 182 | s(38).yd=49.0; 183 | s(38).E= 4.1; 184 | 185 | s(39).xd=57.0; 186 | s(39).yd=30.0; 187 | s(39).E= 2.8; 188 | 189 | s(40).xd=64.0; 190 | s(40).yd=12.0; 191 | s(40).E= 3.5; 192 | 193 | 194 | %3 cluster 195 | 196 | s(41).xd=100.0; %ad 197 | s(41).yd=66.0; 198 | s(41).E=9.9 ; 199 | 200 | s(42).xd=90.0; 201 | s(42).yd=3.0; 202 | s(42).E=3.9 ; 203 | 204 | s(43).xd=106.0; 205 | s(43).yd=6.0; 206 | s(43).E=3.7 ; 207 | 208 | s(44).xd=85.0; 209 | s(44).yd=15.0; 210 | s(44).E=3.6 ; 211 | 212 | 213 | s(45).xd=100.0; 214 | s(45).yd=18.0; 215 | s(45).E=2.5 ; 216 | 217 | s(46).xd=110.0; 218 | s(46).yd=19.0; 219 | s(46).E=2.9 ; 220 | 221 | s(47).xd=112.0; 222 | s(47).yd=33.0; 223 | s(47).E= 2.2; 224 | 225 | s(48).xd=85.0; 226 | s(48).yd=32.0; 227 | s(48).E=4.3 ; 228 | 229 | s(49).xd=102.0; 230 | s(49).yd=42.0; 231 | s(49).E=3.7 ; 232 | 233 | s(50).xd=93.0; 234 | s(50).yd=38.0; 235 | s(50).E=3.9 ; 236 | 237 | s(51).xd=108.0; 238 | s(51).yd=48.0; 239 | s(51).E=4.1 ; 240 | 241 | s(52).xd=98.0; 242 | s(52).yd=62.0; 243 | s(52).E= 3.4; 244 | 245 | s(53).xd=90.0; 246 | s(53).yd=52.0; 247 | s(53).E=2.2 ; 248 | 249 | s(54).xd=80.0; 250 | s(54).yd=46.0; 251 | s(54).E=3.1 ; 252 | 253 | s(55).xd=76.0; 254 | s(55).yd=45.0; 255 | s(55).E=3.2 ; 256 | 257 | s(56).xd=75.0; 258 | s(56).yd=60.0; 259 | s(56).E= 2.4; 260 | 261 | s(57).xd=85.0; 262 | s(57).yd=68.0; 263 | s(57).E=4.1 ; 264 | 265 | s(58).xd=94.0; 266 | s(58).yd=72.0; 267 | s(58).E=3.4 ; 268 | 269 | s(59).xd=75.0; 270 | s(59).yd=70.0; 271 | s(59).E=2.2 ; 272 | 273 | s(60).xd=80.0; 274 | s(60).yd=82.0; 275 | s(60).E=3.3 ; 276 | 277 | s(61).xd=74.0; 278 | s(61).yd=92.0; 279 | s(61).E=4.4 ; 280 | 281 | s(62).xd=65.0; 282 | s(62).yd=78.0; 283 | s(62).E=3.5 ; 284 | 285 | s(63).xd=50.0; 286 | s(63).yd=75.0; 287 | s(63).E=2.4 ; 288 | 289 | s(64).xd=53.0; 290 | s(64).yd=95.0; 291 | s(64).E=2.7 ; 292 | 293 | s(65).xd=40.0; 294 | s(65).yd=88.0; 295 | s(65).E=3.9 ; 296 | 297 | 298 | s(66).xd=22.0; 299 | s(66).yd=78.0; 300 | s(66).E=2.9 ; 301 | 302 | 303 | s(67).xd=24.0; 304 | s(67).yd=90.0; 305 | s(67).E=3.0 ; 306 | 307 | s(68).xd=4.0; 308 | s(68).yd=79.0; 309 | s(68).E=3.9 ; 310 | 311 | 312 | s(69).xd=38.0; 313 | s(69).yd=79.0; 314 | s(69).E=3.5 ; 315 | 316 | 317 | s(70).xd=55.0; 318 | s(70).yd=85.0; 319 | s(70).E=2.9 ; 320 | 321 | 322 | s(71).xd=59.0; 323 | s(71).yd=68.0; 324 | s(71).E=3.7 ; 325 | 326 | s(72).xd=69.0; 327 | s(72).yd=88.0; 328 | s(72).E=2.7 ; 329 | 330 | 331 | s(73).xd=78.0; 332 | s(73).yd=75.0; 333 | s(73).E=2.6 ; 334 | 335 | 336 | s(74).xd=90.0; 337 | s(74).yd=60.0; 338 | s(74).E=3.2 ; 339 | 340 | 341 | s(75).xd=86.0; 342 | s(75).yd=47.0; 343 | s(75).E=4.1 ; 344 | 345 | 346 | s(76).xd=96.0; 347 | s(76).yd=47.0; 348 | s(76).E=3.9 ; 349 | 350 | 351 | s(77).xd=80.0; 352 | s(77).yd=38.0; 353 | s(77).E=3.6 ; 354 | 355 | 356 | s(78).xd=81.0; 357 | s(78).yd=21.0; 358 | s(78).E=4.1 ; 359 | 360 | 361 | s(79).xd=95.0; 362 | s(79).yd=25.0; 363 | s(79).E=3.3 ; 364 | 365 | 366 | s(80).xd=110.0; 367 | s(80).yd=15.0; 368 | s(80).E=3.7 ; 369 | 370 | s(81).xd=9.0; 371 | s(81).yd=88.0; 372 | s(81).E= 2.4; 373 | 374 | s(82).xd=29.0; 375 | s(82).yd=98.0; 376 | s(82).E= 3.1; 377 | 378 | s(83).xd=46.0; 379 | s(83).yd=80.0; 380 | s(83).E= 2.9; 381 | 382 | s(84).xd=59.0; 383 | s(84).yd=95.0; 384 | s(84).E= 3.2; 385 | 386 | s(85).xd=72.0; 387 | s(85).yd=79.0; 388 | s(85).E= 2.8; 389 | 390 | s(86).xd=65.0; 391 | s(86).yd=65.0; 392 | s(86).E= 3.8; 393 | 394 | s(87).xd=70.0; 395 | s(87).yd=50.0; 396 | s(87).E= 3.1; 397 | 398 | s(88).xd=80.0; 399 | s(88).yd=62.0; 400 | s(88).E= 1.1; 401 | 402 | s(89).xd=92.0; 403 | s(89).yd=69.0; 404 | s(89).E= 4.1; 405 | 406 | s(90).xd=104.0; 407 | s(90).yd=30.0; 408 | s(90).E= 3.1; 409 | 410 | s(91).xd=92.0; 411 | s(91).yd=19.0; 412 | s(91).E= 2.7; 413 | 414 | s(92).xd=88.0; 415 | s(92).yd=42.0; 416 | s(92).E= 2.9; 417 | 418 | 419 | 420 | %fourth cluster 421 | 422 | s(93).xd=145.0; 423 | s(93).yd=18.0; 424 | s(93).E=9.3; 425 | 426 | s(94).xd=133.0; 427 | s(94).yd=8.0; 428 | s(94).E=4.1 ; 429 | 430 | s(95).xd=125.0; 431 | s(95).yd=18.0; 432 | s(95).E=3.7 433 | 434 | s(96).xd=135.0; 435 | s(96).yd=34.0; 436 | s(96).E=8.3 ; 437 | 438 | s(97).xd=123.0; 439 | s(97).yd=42.0; 440 | s(97).E=4.6 ; 441 | 442 | s(98).xd=134.0; 443 | s(98).yd=52.0; 444 | s(98).E=2.1 ; 445 | 446 | s(99).xd=118.0; 447 | s(99).yd=50.0; 448 | s(99).E=4.6 ; 449 | 450 | s(100).xd=123.0; 451 | s(100).yd=60.0; 452 | s(100).E=4.1 ; 453 | 454 | s(101).xd=126.0; 455 | s(101).yd=65.0; 456 | s(101).E=2.5 ; 457 | 458 | s(102).xd=113.0; 459 | s(102).yd=65.0; 460 | s(102).E=3.0 ; 461 | 462 | s(103).xd=125.0; 463 | s(103).yd=70.0; 464 | s(103).E=4.1 ; 465 | 466 | s(104).xd=120.0; 467 | s(104).yd=72.0; 468 | s(104).E=3.6 ; 469 | 470 | s(105).xd=124.0; 471 | s(105).yd=80.0; 472 | s(105).E=3.9 ; 473 | 474 | s(106).xd=105.0; 475 | s(106).yd=82.0; 476 | s(106).E=3.2 ; 477 | 478 | s(107).xd=124.0; 479 | s(107).yd=90.0; 480 | s(107).E=2.9 ; 481 | 482 | s(108).xd=116.0; 483 | s(108).yd=92.0; 484 | s(108).E=3.6 ; 485 | 486 | s(109).xd=110.0; 487 | s(109).yd=90.0; 488 | s(109).E=3.6 ; 489 | 490 | s(110).xd=95.0; 491 | s(110).yd=85.0; 492 | s(110).E=2.9 ; 493 | 494 | s(111).xd=90.0; 495 | s(111).yd=95.0; 496 | s(111).E=4.3 ; 497 | 498 | s(112).xd=98.0; 499 | s(112).yd=95.0; 500 | s(112).E=3.3 ; 501 | 502 | s(113).xd=115.0; 503 | s(113).yd=80.0; 504 | s(113).E=2.3 ; 505 | 506 | s(114).xd=116.0; 507 | s(114).yd=73.0; 508 | s(114).E=2.4 ; 509 | 510 | s(115).xd=118.0; 511 | s(115).yd=70.0; 512 | s(115).E=2.7 ; 513 | 514 | s(116).xd=127.0; 515 | s(116).yd=45.0; 516 | s(116).E=2.5 ; 517 | 518 | s(117).xd=136.0; 519 | s(117).yd=35.0; 520 | s(117).E=3.3 ; 521 | 522 | s(118).xd=122.0; 523 | s(118).yd=25.0; 524 | s(118).E=3.5 ; 525 | 526 | s(119).xd=129.0; 527 | s(119).yd=25.0; 528 | s(119).E=3.6 ; 529 | 530 | s(120).xd=126.0; 531 | s(120).yd=9.0; 532 | s(120).E=3.7 ; 533 | 534 | s(121).xd=85.0; 535 | s(121).yd=98.0; 536 | s(121).E=3.2; 537 | 538 | s(122).xd=100.0; 539 | s(122).yd=84.0; 540 | s(122).E=2.7; 541 | 542 | s(123).xd=104.0; 543 | s(123).yd=78.0; 544 | s(123).E=3.1; 545 | 546 | s(124).xd=113.0; 547 | s(124).yd=69.0; 548 | s(124).E=3.5; 549 | 550 | s(125).xd=134.0; 551 | s(125).yd=60.0; 552 | s(125).E=2.5; 553 | 554 | s(126).xd=138.0; 555 | s(126).yd=48.0; 556 | s(126).E=2.2; 557 | 558 | s(127).xd=119.0; 559 | s(127).yd=45.0; 560 | s(127).E=2.9; 561 | 562 | s(128).xd=130.0; 563 | s(128).yd=35.0; 564 | s(128).E=3.6; 565 | 566 | s(129).xd=135.0; 567 | s(129).yd=15.0; 568 | s(129).E=3.8; 569 | 570 | %fifth 571 | 572 | s(130).xd=155.0; %ad 573 | s(130).yd=85.0; 574 | s(130).E=8.9 ; 575 | 576 | s(131).xd=158.0; 577 | s(131).yd=12.0; 578 | s(131).E= 3.8; 579 | 580 | s(132).xd=167.0; 581 | s(132).yd=22.0; 582 | s(132).E=2.9 ; 583 | 584 | s(133).xd=155.0; 585 | s(133).yd=24.0; 586 | s(133).E=2.4 ; 587 | 588 | s(134).xd=147.0; 589 | s(134).yd=31.0; 590 | s(134).E=2.3 ; 591 | 592 | s(135).xd=162; 593 | s(135).yd=35.0; 594 | s(135).E=2.6 ; 595 | 596 | 597 | 598 | s(136).xd=148.0; 599 | s(136).yd=43.0; 600 | s(136).E=4.8 ; 601 | 602 | s(137).xd=154.0; 603 | s(137).yd=55.0; 604 | s(137).E=2.9 ; 605 | 606 | s(138).xd=148.0; 607 | s(138).yd=58.0; 608 | s(138).E=3.8 ; 609 | 610 | s(139).xd=156.0; 611 | s(139).yd=70.0; 612 | s(139).E=3.7 ; 613 | 614 | s(140).xd=149.0; 615 | s(140).yd=69.0; 616 | s(140).E=3.5 ; 617 | 618 | s(141).xd=150.0; 619 | s(141).yd=80.0; 620 | s(141).E=3.2 ; 621 | 622 | s(142).xd=142.0; 623 | s(142).yd=82.0; 624 | s(142).E=2.7 ; 625 | 626 | s(143).xd=143.0; 627 | s(143).yd=88.0; 628 | s(143).E=3.5 ; 629 | 630 | s(144).xd=128.0; 631 | s(144).yd=96.0; 632 | s(144).E=4.3 ; 633 | 634 | 635 | s(145).xd=130.0; 636 | s(145).yd=90.0; 637 | s(145).E=4.4 ; 638 | 639 | s(146).xd=145.0; 640 | s(146).yd=81.0; 641 | s(146).E=4.6 ; 642 | 643 | 644 | s(147).xd=148.0; 645 | s(147).yd=75.0; 646 | s(147).E=4.8 ; 647 | 648 | 649 | s(148).xd=155.0; 650 | s(148).yd=60.0; 651 | s(148).E=2.3 ; 652 | 653 | 654 | s(149).xd=165.0; 655 | s(149).yd=53.0; 656 | s(149).E=3.5 ; 657 | 658 | 659 | s(150).xd=159.0; 660 | s(150).yd=49.0; 661 | s(150).E=3.9 ; 662 | 663 | 664 | s(151).xd=155.0; 665 | s(151).yd=38.0; 666 | s(151).E=2.7 ; 667 | 668 | 669 | s(152).xd=163.0; 670 | s(152).yd=20.0; 671 | s(152).E=2.9 ; 672 | 673 | s(153).xd=123.0; 674 | s(153).yd=98.0; 675 | s(153).E=3.6; 676 | 677 | s(154).xd=135.0; 678 | s(154).yd=85.0; 679 | s(154).E=2.9; 680 | 681 | s(155).xd=150.0; 682 | s(155).yd=65.0; 683 | s(155).E=2.7; 684 | 685 | s(156).xd=146.0; 686 | s(156).yd=52.0; 687 | s(156).E=1.5; 688 | 689 | s(157).xd=170.0; 690 | s(157).yd=45.0; 691 | s(157).E=2.3; 692 | 693 | s(158).xd=170.0; 694 | s(158).yd=37.0; 695 | s(158).E=2.6; 696 | 697 | s(159).xd=154.0; 698 | s(159).yd=20.0; 699 | s(159).E=1.1; 700 | 701 | s(160).xd=165.0; 702 | s(160).yd=15.0; 703 | s(160).E=2.8; 704 | 705 | %sixth 706 | 707 | s(161).xd=195.0; %ad 708 | s(161).yd=10.0; 709 | s(161).E=9.4 ; 710 | 711 | s(162).xd=183.0; 712 | s(162).yd=12.0; 713 | s(162).E=3.7 ; 714 | 715 | s(163).xd=182.0; 716 | s(163).yd=20.0; 717 | s(163).E=3.1 ; 718 | 719 | s(164).xd=195.0; 720 | s(164).yd=25.0; 721 | s(164).E=3.5 ; 722 | 723 | s(165).xd=184.0; 724 | s(165).yd=38.0; 725 | s(165).E=3.8 ; 726 | 727 | s(166).xd=192.0; 728 | s(166).yd=43.0; 729 | s(166).E=3.9 ; 730 | 731 | s(167).xd=185.0; 732 | s(167).yd=52.0; 733 | s(167).E=3.5 ; 734 | 735 | s(168).xd=171.0; 736 | s(168).yd=50.0; 737 | s(168).E=2.9 ; 738 | 739 | s(169).xd=165.0; 740 | s(169).yd=64.0; 741 | s(169).E= 4.9; 742 | 743 | s(170).xd=118.0; 744 | s(170).yd=68.0; 745 | s(170).E=4.3 ; 746 | 747 | s(171).xd=180.0; 748 | s(171).yd=73.0; 749 | s(171).E=4.4 ; 750 | 751 | 752 | 753 | s(172).xd=190.0; 754 | s(172).yd=75.0; 755 | s(172).E=3.2 ; 756 | 757 | s(173).xd=186.0; 758 | s(173).yd=83.0; 759 | s(173).E=2.2 ; 760 | 761 | s(174).xd=173.0; 762 | s(174).yd=83.0; 763 | s(174).E= 3.7; 764 | 765 | s(175).xd=184.0; 766 | s(175).yd=92.0; 767 | s(175).E=1.3 ; 768 | 769 | s(176).xd=169.0; 770 | s(176).yd=88.0; 771 | s(176).E=2.9 ; 772 | 773 | s(178).xd=148.0; 774 | s(178).yd=89.0; 775 | s(178).E=3.1 ; 776 | 777 | s(179).xd=155.0; 778 | s(179).yd=96.0; 779 | s(179).E=1.6 ; 780 | 781 | s(180).xd=146.0; 782 | s(180).yd=75.0; 783 | s(180).E= 2.3; 784 | 785 | s(181).xd=170.0; 786 | s(181).yd=55.0; 787 | s(181).E=2.8 ; 788 | 789 | s(182).xd=183.0; 790 | s(182).yd=38.0; 791 | s(182).E=1.3 ; 792 | 793 | 794 | 795 | s(183).xd=179.0; 796 | s(183).yd=89.0; 797 | s(183).E=2.8 ; 798 | 799 | 800 | s(184).xd=178.0; 801 | s(184).yd=85.0; 802 | s(184).E=3.9 ; 803 | 804 | 805 | s(185).xd=174.0; 806 | s(185).yd=72.0; 807 | s(185).E=4.0 ; 808 | 809 | 810 | s(186).xd=179.0; 811 | s(186).yd=60.0; 812 | s(186).E=3.6 ; 813 | 814 | 815 | s(187).xd=182.0; 816 | s(187).yd=45.0; 817 | s(187).E=3.4 ; 818 | 819 | 820 | s(188).xd=195.0; 821 | s(188).yd=40.0; 822 | s(188).E=3.8 ; 823 | 824 | 825 | s(189).xd=184.0; 826 | s(189).yd=35.0; 827 | s(189).E=2.6 ; 828 | 829 | 830 | s(190).xd=191.0; 831 | s(190).yd=20.0; 832 | s(190).E=4.2 ; 833 | 834 | s(191).xd=164.0; 835 | s(191).yd=85.0; 836 | s(191).E=1.9; 837 | 838 | s(192).xd=155.0; 839 | s(192).yd=94.0; 840 | s(192).E=3.9; 841 | 842 | s(193).xd=172.0; 843 | s(193).yd=98.0; 844 | s(193).E=3.1; 845 | 846 | s(194).xd=189.0; 847 | s(194).yd=98.0; 848 | s(194).E=2.7; 849 | 850 | s(195).xd=195.0; 851 | s(195).yd=85.0; 852 | s(195).E=3.3; 853 | 854 | s(196).xd=179.0; 855 | s(196).yd=65.0; 856 | s(196).E=4.0; 857 | 858 | s(197).xd=195.0; 859 | s(197).yd=59.0; 860 | s(197).E=2.6; 861 | 862 | s(198).xd=179.0; 863 | s(198).yd=39.0; 864 | s(198).E=1.8; 865 | 866 | s(199).xd=195.0; 867 | s(199).yd=30.0; 868 | s(199).E=3.3; 869 | 870 | s(200).xd=190.0; 871 | s(200).yd=10.0; 872 | s(200).E=3.7; 873 | sum=0; 874 | for i=1:1:200 875 | if((s(i).E)>0) 876 | % plot(s(i).xd,s(i).yd,'o'); 877 | end 878 | %hold on; 879 | end 880 | cl=1; 881 | dis(1).di=0; 882 | for i=1:1:200 883 | s(i).a=0; 884 | if(s(i).E>5) 885 | s(i).a=1; 886 | advancednode(cl)=i; 887 | cl=cl+1; 888 | R=sqrt( (s(i).xd)^2 + (s(i).yd )^2 ); 889 | if(R<=ym) 890 | %plot(s(i).xd,s(i).yd,'red *'); 891 | 892 | dis(cl).di=R; 893 | dis(cl).n=cl; 894 | th = linspace( 0, pi/2, 100); 895 | x = R*cos(th) + 0; 896 | y = R*sin(th) + 0; 897 | %plot(x,y); 898 | else 899 | % plot(s(i).xd,s(i).yd,'red *'); 900 | R=sqrt( (s(i).xd)^2 + (s(i).yd )^2 ); 901 | dis(cl).di=R; 902 | dis(cl).n=cl; 903 | th = linspace( 0,asin(ym/R), 100); 904 | x = R*cos(th) + 0; 905 | y = R*sin(th) + 0; 906 | %plot(x,y); 907 | end 908 | end 909 | %hold on; 910 | end 911 | for j=1:1:cl-1 912 | % comparing each number with the next and swapping 913 | for i=1:1:cl-1 914 | if dis(i).di>dis(i+1).di 915 | % temp is a variable where the numbers are kept 916 | % temporarily for the switch 917 | temp=dis(i).di; 918 | dis(i).di=dis(i+1).di; 919 | dis(i+1).di=temp; 920 | end 921 | end 922 | end 923 | for i=1:1:200 924 | R=sqrt( (s(i).xd)^2 + (s(i).yd )^2 ); 925 | nequal=1; 926 | number=2; 927 | max=cl; 928 | while(nequal==1&&number<=cl) 929 | %number 930 | if((dis(number).di)>R & R>(dis(number-1).di)) 931 | s(i).n=number-1; 932 | nequal=0; 933 | end 934 | if((dis(number).di)==R) 935 | s(i).n=number-1; 936 | nequal=0; 937 | end 938 | if(R>dis(max).di) 939 | s(i).n=max; 940 | nequal=0; 941 | end 942 | number=number+1; 943 | end 944 | end 945 | 946 | for i=1:1:200 947 | count(i)=0; 948 | end 949 | for i=1:1:cl 950 | for j=1:1:200 951 | %j; 952 | if(s(j).n==i&s(j).a==0) 953 | m(j).firstr=200; 954 | m(j).secondr=200; 955 | m(j).thirdr=200; 956 | m(j).fourthr=200; 957 | m(j).first=0; 958 | m(j).second=0; 959 | m(j).third=0; 960 | m(j).fourth=0; 961 | for k=1:1:200 962 | if (s(k).n==i & j~=k & s(k).a==0) 963 | R=sqrt( (s(j).xd-s(k).xd)^2 + (s(j).yd-s(k).yd )^2 ); 964 | %k 965 | %R 966 | if(R<=m(j).firstr) 967 | m(j).fourthr=m(j).thirdr; 968 | m(j).fourth=m(j).third; 969 | m(j).thirdr=m(j).secondr; 970 | m(j).third=m(j).second; 971 | m(j).secondr=m(j).firstr; 972 | m(j).second=m(j).first; 973 | m(j).firstr=R; 974 | m(j).first=k; 975 | 976 | %m(j).first 977 | %m(j).second 978 | %m(j).third 979 | %m(j).fourth % m(j).first 980 | elseif(R<=m(j).secondr) 981 | m(j).fourthr=m(j).thirdr; 982 | m(j).fourth=m(j).third; 983 | m(j).thirdr=m(j).secondr; 984 | m(j).third=m(j).second; 985 | m(j).secondr=R; 986 | m(j).second=k; 987 | 988 | %m(j).third 989 | %m(j).fourth 990 | %m(j).second 991 | elseif(R<=m(j).thirdr) 992 | m(j).fourthr=m(j).thirdr; 993 | m(j).fourth=m(j).third; 994 | m(j).thirdr=R; 995 | m(j).third=k; 996 | % m(j).third 997 | %m(j).fourth 998 | %m(j).third 999 | elseif(R<=m(j).fourthr) 1000 | m(j).fourthr=R; 1001 | m(j).fourth=k; 1002 | % m(j).fourth 1003 | end 1004 | %plot(s(k).xd,s(k).yd,'*'); 1005 | %hold on; 1006 | end 1007 | end 1008 | if(m(j).first~=0) 1009 | %m(j).first 1010 | %m(j).second 1011 | %m(j).third 1012 | %m(j).fourth 1013 | %m(j).first 1014 | count(m(j).first)=count(m(j).first)+1; 1015 | count(m(j).second)=count(m(j).second)+1; 1016 | count(m(j).third)=count(m(j).third)+1; 1017 | count(m(j).fourth)=count(m(j).fourth)+1; 1018 | end 1019 | end 1020 | end 1021 | end 1022 | for i=1:1:cl 1023 | ktheorem(i).n1=0; 1024 | ktheorem(i).n2=0; 1025 | ktheorem(i).n3=0; 1026 | ktheorem(i).n4=0; 1027 | f=0; 1028 | for j=1:1:200 1029 | if(s(j).a~=1 & s(j).n==i) 1030 | f=f+1; 1031 | if(f==1) 1032 | ktheorem(i).n1=j; 1033 | elseif(f==2) 1034 | ktheorem(i).n2=j; 1035 | elseif(f==3) 1036 | ktheorem(i).n3=j; 1037 | elseif(f==4) 1038 | ktheorem(i).n4=j; 1039 | else 1040 | if(count(j)>=count(ktheorem(i).n1)) 1041 | ktheorem(i).n4=ktheorem(i).n3; 1042 | ktheorem(i).n3=ktheorem(i).n2; 1043 | ktheorem(i).n2=ktheorem(i).n1; 1044 | ktheorem(i).n1=j; 1045 | elseif(count(j)>count(ktheorem(i).n2)) 1046 | ktheorem(i).n4=ktheorem(i).n3; 1047 | ktheorem(i).n3=ktheorem(i).n2; 1048 | ktheorem(i).n2=j; 1049 | elseif(count(j)>count(ktheorem(i).n3)) 1050 | ktheorem(i).n4=ktheorem(i).n3; 1051 | ktheorem(i).n3=j; 1052 | else 1053 | ktheorem(i).n4=j; 1054 | end 1055 | end 1056 | end 1057 | end 1058 | end 1059 | 1060 | for i=1:1:cl 1061 | ktheorem(i).n1; 1062 | %plot(s(ktheorem(i).n1).xd,s(ktheorem(i).n1).yd,'green o'); 1063 | %plot(s(ktheorem(i).n2).xd,s(ktheorem(i).n2).yd,'green o'); 1064 | %plot(s(ktheorem(i).n3).xd,s(ktheorem(i).n3).yd,'green o'); 1065 | %plot(s(ktheorem(i).n4).xd,s(ktheorem(i).n4).yd,'green o'); 1066 | %hold on; 1067 | end 1068 | %hold off; 1069 | for r=1:1:rmax 1070 | 1071 | total=0; 1072 | ener=0; 1073 | energy=0; 1074 | dead_nodes=0; 1075 | 1076 | %figure(1); 1077 | r 1078 | for i=1:1:200 1079 | s(i).useful=1; 1080 | if((s(i).E)>0) 1081 | % plot(s(i).xd,s(i).yd,'o'); 1082 | else 1083 | dead_nodes=dead_nodes+1; 1084 | 1085 | % plot(s(i).xd,s(i).yd,'red o'); 1086 | s(i).useful=0; 1087 | end 1088 | hold on; 1089 | end 1090 | round(r)=dead_nodes; 1091 | for i=1:1:cl-1 1092 | R=sqrt( (s(advancednode(i)).xd)^2 + (s(advancednode(i)).yd )^2 ); 1093 | if(R<=ym) 1094 | % plot(s(advancednode(i)).xd,s(advancednode(i)).yd,'red *'); 1095 | th = linspace( 0, pi/2, 100); 1096 | x = R*cos(th) + 0; 1097 | y = R*sin(th) + 0; 1098 | %plot(x,y); 1099 | else 1100 | %plot(s(advancednode(i)).xd,s(advancednode(i)).yd,'red *'); 1101 | R=sqrt( (s(advancednode(i)).xd)^2 + (s(advancednode(i)).yd )^2 ); 1102 | th = linspace( 0,asin(ym/R), 100); 1103 | x = R*cos(th) + 0; 1104 | y = R*sin(th) + 0; 1105 | %plot(x,y); 1106 | end 1107 | end 1108 | hold on; 1109 | for i=1:1:cl 1110 | %plot(s(ktheorem(i).n1).xd,s(ktheorem(i).n1).yd,'green o'); 1111 | %plot(s(ktheorem(i).n2).xd,s(ktheorem(i).n2).yd,'green o'); 1112 | %plot(s(ktheorem(i).n3).xd,s(ktheorem(i).n3).yd,'green o'); 1113 | %plot(s(ktheorem(i).n4).xd,s(ktheorem(i).n4).yd,'green o'); 1114 | %hold on; 1115 | if(i==cl) 1116 | j=i-1; 1117 | else 1118 | j=i; 1119 | end 1120 | combined1=s(ktheorem(i).n1).E/(( (s(advancednode(j)).xd-s(ktheorem(i).n1).xd)^2 + (s(advancednode(j)).yd- s(ktheorem(i).n1).yd)^2 )); 1121 | combined2=s(ktheorem(i).n2).E/(( (s(advancednode(j)).xd-s(ktheorem(i).n2).xd)^2 + (s(advancednode(j)).yd- s(ktheorem(i).n2).yd)^2 )); 1122 | combined3=s(ktheorem(i).n3).E/(( (s(advancednode(j)).xd-s(ktheorem(i).n3).xd)^2 + (s(advancednode(j)).yd- s(ktheorem(i).n3).yd)^2 )); 1123 | combined4=s(ktheorem(i).n4).E/(( (s(advancednode(j)).xd-s(ktheorem(i).n4).xd)^2 + (s(advancednode(j)).yd- s(ktheorem(i).n4).yd)^2 )); 1124 | if(combined1>combined2) 1125 | if(combined1>combined3) 1126 | if(combined1>combined4) 1127 | ccn(i)=ktheorem(i).n1; 1128 | else 1129 | ccn(i)=ktheorem(i).n4; 1130 | end 1131 | else 1132 | if(combined3>combined4) 1133 | ccn(i)=ktheorem(i).n3; 1134 | else 1135 | ccn(i)=ktheorem(i).n4; 1136 | end 1137 | end 1138 | else 1139 | if(combined2>combined3) 1140 | if(combined2>combined4) 1141 | ccn(i)=ktheorem(i).n2; 1142 | else 1143 | ccn(i)=ktheorem(i).n4; 1144 | end 1145 | else 1146 | if(combined3>combined4) 1147 | ccn(i)=ktheorem(i).n3; 1148 | else 1149 | ccn(i)=ktheorem(i).n4; 1150 | end 1151 | end 1152 | end 1153 | %plot(s(ccn(i)).xd,s(ccn(i)).yd,'black o'); 1154 | end 1155 | for i=1:1:cl 1156 | f=0; 1157 | if(i==cl) 1158 | j=i-1; 1159 | end 1160 | for k=1:1:200 1161 | % hold off; 1162 | if(s(k).E>0 & k~=i & s(k).a==0 & k~=ccn(i) & s(k).n==i) 1163 | dis=sqrt(((s(k).xd)-(s(ccn(i)).xd))^2+((s(k).yd)-(s(ccn(i)).yd))^2); 1164 | x=[s(k).xd,s(ccn(i)).xd]; 1165 | y=[s(k).yd,s(ccn(i)).yd]; 1166 | f=f+1; 1167 | % plot(x,y,'red'); 1168 | if (dis>do) 1169 | s(k).E=s(k).E- ( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 1170 | end 1171 | if (dis<=do) 1172 | s(k).E=s(k).E- ( (ETX+EDA)*(4000) + Efs*4000*( dis * dis )); 1173 | end 1174 | % hold on; 1175 | s(ccn(i)).E = s(ccn(i)).E- ( (ERX + EDA)*4000 ); 1176 | 1177 | end 1178 | energy=energy+s(k).E; 1179 | end 1180 | dis=sqrt(((s(advancednode(j)).xd)-(s(ccn(i)).xd))^2+((s(advancednode(j)).yd)-(s(ccn(i)).yd))^2); 1181 | if(dis>do) 1182 | s(advancednode(j)).E=s(advancednode(j)).E- 10*( (ETX+EDA)*(4000) + Emp*4000*( dis*dis*dis*dis )); 1183 | else 1184 | s(advancednode(j)).E=s(advancednode(j)).E- 10*( (ETX+EDA)*(4000) + Emp*4000*( dis*dis )); 1185 | end 1186 | end 1187 | 1188 | figure(11); 1189 | hold on; 1190 | plot(r,dead_nodes,'black .'); 1191 | figure(33); 1192 | ylabel('average energy of normal nodes'); 1193 | xlabel('round'); 1194 | hold on; 1195 | plot(r,energy,'green .'); 1196 | ener=ener+s(advancednode(j)).E; 1197 | figure(3); 1198 | ylabel('average energy of advanced nodes'); 1199 | xlabel('round'); 1200 | hold on; 1201 | plot(r,ener,'red .'); 1202 | total=(ener+energy)/(n-dead_nodes); 1203 | figure(10); 1204 | ylabel('average energy of network'); 1205 | xlabel('round') 1206 | hold on; 1207 | plot(r,total,'blue .'); 1208 | 1209 | end -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Wireless Sensor Network Protocols implemented in Matlab 2 | ========= 3 | 4 | Each folder contains the code for protocol in finding the average energy of the sensor network after certain number of logical rounds specified by the name of the file. Run the code in MATLAB v7.6 to obtain the results. Visit http://bit.ly/186VWzV to download the published paper "Comparison of energy efficient routing protocols for heterogeneous wireless sensor networks". 5 | -------------------------------------------------------------------------------- /SEP/SEP100.m: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2 | % % 3 | % SEP: A Stable Election Protocol for clustered % 4 | % heterogeneous wireless sensor networks % 5 | % % 6 | % (c) Georgios Smaragdakis % 7 | % WING group, Computer Science Department, Boston University % 8 | % % 9 | % You can find full documentation and related information at: % 10 | % http://csr.bu.edu/sep % 11 | % % 12 | % To report your comment or any bug please send e-mail to: % 13 | % gsmaragd@cs.bu.edu % 14 | % % 15 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 | 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | % % 19 | % This is the LEACH [1] code we have used. % 20 | % The same code can be used for FAIR if m=1 % 21 | % % 22 | % [1] W.R.Heinzelman, A.P.Chandrakasan and H.Balakrishnan, % 23 | % "An application-specific protocol architecture for wireless % 24 | % microsensor networks" % 25 | % IEEE Transactions on Wireless Communications, 1(4):660-670,2002 % 26 | % % 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | 29 | clear; 30 | 31 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%%% 32 | 33 | %Field Dimensions - x and y maximum (in meters) 34 | xm=200; 35 | ym=100; 36 | 37 | %x and y Coordinates of the Sink 38 | sink.x=0.0*xm; 39 | sink.y=0.0*ym; 40 | 41 | %Number of Nodes in the field 42 | n=100; 43 | 44 | %Optimal Election Probability of a node 45 | %to become cluster head 46 | p=0.2; 47 | 48 | %Energy Model (all values in Joules) 49 | %Initial Energy 50 | Eo=0.5; 51 | %Eelec=Etx=Erx 52 | ETX=50*0.000000001; 53 | ERX=50*0.000000001; 54 | %Transmit Amplifier types 55 | Efs=10*0.000000000001; 56 | Emp=0.0013*0.000000000001; 57 | %Data Aggregation Energy 58 | EDA=5*0.000000001; 59 | 60 | %Values for Hetereogeneity 61 | %Percentage of nodes than are advanced 62 | m=0.1; 63 | %\alpha 64 | a=1; 65 | 66 | %maximumumber of rounds 67 | rmax=800; 68 | 69 | %%%%%%%%%%%%%%%%%%%%%%%%% END OF PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%% 70 | 71 | %Computation of do 72 | do=sqrt(Efs/Emp); 73 | 74 | %Creation of the random Sensor Network 75 | 76 | 77 | 78 | 79 | s(1).xd=35.0; % ad 80 | s(1).yd=22.0; 81 | s(1).E= 6.5; 82 | 83 | s(2).xd=10.0; 84 | s(2).yd=10.0; 85 | s(2).E= 1.5; 86 | 87 | s(3).xd=15.0; 88 | s(3).yd=22.0; 89 | s(3).E= 2.1; 90 | 91 | s(4).xd=25.0; 92 | s(4).yd=13.0; 93 | s(4).E= 1.7; 94 | 95 | s(5).xd=26.0; 96 | s(5).yd=28.0; 97 | s(5).E= 4.6; 98 | 99 | s(6).xd=5.0; 100 | s(6).yd=32.0; 101 | s(6).E= 3.8; 102 | 103 | 104 | %2 cluster 105 | 106 | s(7).xd=60.0; %ad 107 | s(7).yd=50.0; 108 | s(7).E= 8.4; 109 | 110 | s(8).xd=55.0; 111 | s(8).yd=12.0; 112 | s(8).E= 3.1; 113 | 114 | s(9).xd=71.0; 115 | s(9).yd=13.0; 116 | s(9).E= 1.4; 117 | 118 | s(10).xd=67.0; 119 | s(10).yd=26.0; 120 | s(10).E= 3.7; 121 | 122 | s(11).xd=44.0; 123 | s(11).yd=37.0; 124 | s(11).E= 3.01; 125 | 126 | s(12).xd=60.0; 127 | s(12).yd=40.0; 128 | s(12).E= 4.1; 129 | 130 | 131 | 132 | s(13).xd=35.0; % ad 133 | s(13).yd=40.0; 134 | s(13).E=2.3 ; 135 | 136 | s(14).xd=40.0; 137 | s(14).yd=46.0; 138 | s(14).E= 1.1; 139 | 140 | s(15).xd=43.0; 141 | s(15).yd=58.0; 142 | s(15).E=2.1 ; 143 | 144 | s(16).xd=26.0; 145 | s(16).yd=55.0; 146 | s(16).E=3.3 ; 147 | 148 | s(17).xd=28.0; 149 | s(17).yd=72.0; 150 | s(17).E=2.8 ; 151 | 152 | %3 cluster 153 | 154 | s(18).xd=100.0; %ad 155 | s(18).yd=66.0; 156 | s(18).E=9.9 ; 157 | 158 | s(19).xd=90.0; 159 | s(19).yd=3.0; 160 | s(19).E=3.9 ; 161 | 162 | s(20).xd=106.0; 163 | s(20).yd=6.0; 164 | s(20).E=3.7 ; 165 | 166 | s(21).xd=85.0; 167 | s(21).yd=15.0; 168 | s(21).E=3.6 ; 169 | 170 | 171 | s(22).xd=100.0; 172 | s(22).yd=18.0; 173 | s(22).E=2.5 ; 174 | 175 | s(23).xd=110.0; 176 | s(23).yd=19.0; 177 | s(23).E=2.9 ; 178 | 179 | s(24).xd=112.0; 180 | s(24).yd=33.0; 181 | s(24).E= 2.2; 182 | 183 | s(25).xd=85.0; 184 | s(25).yd=32.0; 185 | s(25).E=4.3 ; 186 | 187 | s(26).xd=102.0; 188 | s(26).yd=42.0; 189 | s(26).E=3.7 ; 190 | 191 | s(27).xd=93.0; 192 | s(27).yd=38.0; 193 | s(27).E=3.9 ; 194 | 195 | s(28).xd=108.0; 196 | s(28).yd=48.0; 197 | s(28).E=4.1 ; 198 | 199 | s(29).xd=98.0; 200 | s(29).yd=62.0; 201 | s(29).E= 3.4; 202 | 203 | s(30).xd=90.0; 204 | s(30).yd=52.0; 205 | s(30).E=2.2 ; 206 | 207 | s(31).xd=80.0; 208 | s(31).yd=46.0; 209 | s(31).E=3.1 ; 210 | 211 | s(32).xd=76.0; 212 | s(32).yd=45.0; 213 | s(32).E=3.2 ; 214 | 215 | s(33).xd=75.0; 216 | s(33).yd=60.0; 217 | s(33).E= 2.4; 218 | 219 | s(34).xd=85.0; 220 | s(34).yd=68.0; 221 | s(34).E=4.1 ; 222 | 223 | s(35).xd=94.0; 224 | s(35).yd=72.0; 225 | s(35).E=3.4 ; 226 | 227 | s(36).xd=75.0; 228 | s(36).yd=70.0; 229 | s(36).E=2.2 ; 230 | 231 | s(37).xd=80.0; 232 | s(37).yd=82.0; 233 | s(37).E=3.3 ; 234 | 235 | s(38).xd=74.0; 236 | s(38).yd=92.0; 237 | s(38).E=4.4 ; 238 | 239 | s(39).xd=65.0; 240 | s(39).yd=78.0; 241 | s(39).E=3.5 ; 242 | 243 | s(40).xd=50.0; 244 | s(40).yd=75.0; 245 | s(40).E=2.4 ; 246 | 247 | s(41).xd=53.0; 248 | s(41).yd=95.0; 249 | s(41).E=2.7 ; 250 | 251 | s(42).xd=40.0; 252 | s(42).yd=88.0; 253 | s(42).E=3.9 ; 254 | 255 | 256 | s(43).xd=22.0; 257 | s(43).yd=78.0; 258 | s(43).E=2.9 ; 259 | 260 | 261 | s(44).xd=24.0; 262 | s(44).yd=90.0; 263 | s(44).E=3.0 ; 264 | 265 | s(45).xd=4.0; 266 | s(45).yd=79.0; 267 | s(45).E=1.9 ; 268 | 269 | %fourth cluster 270 | 271 | s(46).xd=145.0; 272 | s(46).yd=18.0; 273 | s(46).E=9.3; 274 | 275 | s(47).xd=133.0; 276 | s(47).yd=8.0; 277 | s(47).E=4.1 ; 278 | 279 | s(48).xd=125.0; 280 | s(48).yd=18.0; 281 | s(48).E=3.7; 282 | 283 | s(49).xd=135.0; 284 | s(49).yd=34.0; 285 | s(49).E=2.3 ; 286 | 287 | s(50).xd=123.0; 288 | s(50).yd=42.0; 289 | s(50).E=4.6 ; 290 | 291 | s(51).xd=134.0; 292 | s(51).yd=52.0; 293 | s(51).E=2.1 ; 294 | 295 | s(52).xd=118.0; 296 | s(52).yd=50.0; 297 | s(52).E=4.6 ; 298 | 299 | s(53).xd=123.0; 300 | s(53).yd=60.0; 301 | s(53).E=4.1 ; 302 | 303 | s(54).xd=126.0; 304 | s(54).yd=65.0; 305 | s(54).E=2.5 ; 306 | 307 | s(55).xd=113.0; 308 | s(55).yd=65.0; 309 | s(55).E=3.0 ; 310 | 311 | s(56).xd=125.0; 312 | s(56).yd=70.0; 313 | s(56).E=4.1 ; 314 | 315 | s(57).xd=120.0; 316 | s(57).yd=72.0; 317 | s(57).E=3.6 ; 318 | 319 | s(58).xd=124.0; 320 | s(58).yd=80.0; 321 | s(58).E=3.9 ; 322 | 323 | s(59).xd=105.0; 324 | s(59).yd=82.0; 325 | s(59).E=3.2 ; 326 | 327 | s(60).xd=124.0; 328 | s(60).yd=90.0; 329 | s(60).E=2.9 ; 330 | 331 | s(61).xd=116.0; 332 | s(61).yd=92.0; 333 | s(61).E=3.6 ; 334 | 335 | s(62).xd=110.0; 336 | s(62).yd=90.0; 337 | s(62).E=3.6 ; 338 | 339 | s(63).xd=95.0; 340 | s(63).yd=85.0; 341 | s(63).E=2.9 ; 342 | 343 | s(64).xd=90.0; 344 | s(64).yd=95.0; 345 | s(64).E=4.3 ; 346 | 347 | %fifth 348 | 349 | s(65).xd=155.0; %ad 350 | s(65).yd=85.0; 351 | s(65).E=8.9 ; 352 | 353 | s(66).xd=158.0; 354 | s(66).yd=12.0; 355 | s(66).E= 3.8; 356 | 357 | s(67).xd=167.0; 358 | s(67).yd=22.0; 359 | s(67).E=2.9 ; 360 | 361 | s(68).xd=155.0; 362 | s(68).yd=24.0; 363 | s(68).E=2.4 ; 364 | 365 | s(69).xd=147.0; 366 | s(69).yd=31.0; 367 | s(69).E=2.3 ; 368 | 369 | s(70).xd=162; 370 | s(70).yd=35.0; 371 | s(70).E=2.6 ; 372 | 373 | 374 | 375 | s(71).xd=148.0; 376 | s(71).yd=43.0; 377 | s(71).E=4.8 ; 378 | 379 | s(72).xd=154.0; 380 | s(72).yd=55.0; 381 | s(72).E=2.9 ; 382 | 383 | s(73).xd=148.0; 384 | s(73).yd=58.0; 385 | s(73).E=3.8 ; 386 | 387 | s(74).xd=156.0; 388 | s(74).yd=70.0; 389 | s(74).E=3.7 ; 390 | 391 | s(75).xd=149.0; 392 | s(75).yd=69.0; 393 | s(75).E=3.5 ; 394 | 395 | s(76).xd=150.0; 396 | s(76).yd=80.0; 397 | s(76).E=3.2 ; 398 | 399 | s(77).xd=142.0; 400 | s(77).yd=82.0; 401 | s(77).E=2.7 ; 402 | 403 | s(78).xd=143.0; 404 | s(78).yd=88.0; 405 | s(78).E=3.5 ; 406 | 407 | s(79).xd=128.0; 408 | s(79).yd=96.0; 409 | s(79).E=4.3 ; 410 | 411 | %sixth 412 | 413 | s(80).xd=195.0;% ad 414 | s(80).yd=10.0; 415 | s(80).E=9.4 ; 416 | 417 | s(81).xd=183.0; 418 | s(81).yd=12.0; 419 | s(81).E=3.7 ; 420 | 421 | s(82).xd=182.0; 422 | s(82).yd=20.0; 423 | s(82).E=3.1 ; 424 | 425 | s(83).xd=195.0; 426 | s(83).yd=25.0; 427 | s(83).E=3.5 ; 428 | 429 | s(84).xd=184.0; 430 | s(84).yd=38.0; 431 | s(84).E=3.8 ; 432 | 433 | s(85).xd=192.0; 434 | s(85).yd=43.0; 435 | s(85).E=3.9 ; 436 | 437 | s(86).xd=185.0; 438 | s(86).yd=52.0; 439 | s(86).E=3.5 ; 440 | 441 | s(87).xd=171.0; 442 | s(87).yd=50.0; 443 | s(87).E=2.9 ; 444 | 445 | s(88).xd=165.0; 446 | s(88).yd=64.0; 447 | s(88).E= 4.9; 448 | 449 | s(89).xd=118.0; 450 | s(89).yd=68.0; 451 | s(89).E=4.3 ; 452 | 453 | s(90).xd=180.0; 454 | s(90).yd=73.0; 455 | s(90).E=4.4 ; 456 | 457 | 458 | 459 | s(91).xd=190.0; 460 | s(91).yd=75.0; 461 | s(91).E=3.2 ; 462 | 463 | s(92).xd=186.0; 464 | s(92).yd=83.0; 465 | s(92).E=2.2 ; 466 | 467 | s(93).xd=173.0; 468 | s(93).yd=83.0; 469 | s(93).E= 3.7; 470 | 471 | s(94).xd=184.0; 472 | s(94).yd=92.0; 473 | s(94).E=1.3 ; 474 | 475 | s(95).xd=169.0; 476 | s(95).yd=88.0; 477 | s(95).E=2.9 ; 478 | 479 | s(96).xd=148.0; 480 | s(96).yd=89.0; 481 | s(96).E=3.1 ; 482 | 483 | s(97).xd=155.0; 484 | s(97).yd=96.0; 485 | s(97).E=1.6 ; 486 | 487 | s(98).xd=146.0; 488 | s(98).yd=75.0; 489 | s(98).E= 2.3; 490 | 491 | s(99).xd=170.0; 492 | s(99).yd=55.0; 493 | s(99).E=2.8 ; 494 | 495 | s(100).xd=183.0; 496 | s(100).yd=38.0; 497 | s(100).E=1.3 ; %100 nodes 498 | 499 | 500 | 501 | for i=1:1:n 502 | % S(i).xd=rand(0,1)*xm; 503 | % XR(i)=S(i).xd; 504 | % S(i).yd=rand(0,1)*ym; 505 | % YR(i)=S(i).yd; 506 | s(i).G=0; 507 | %initially there are no cluster heads only nodes 508 | s(i).type='N'; 509 | 510 | temp_rnd0=i; 511 | %Random Election of Normal Nodes 512 | if (temp_rnd0>=m*n+1) 513 | % S(i).E=Eo; 514 | s(i).ENERGY=0; 515 | %plot(s(i).xd,s(i).yd,'o'); 516 | % hold on; 517 | end 518 | %Random Election of Advanced Nodes 519 | if (temp_rnd00 589 | s(i).type='N'; 590 | if (s(i).ENERGY==0) 591 | %plot(s(i).xd,s(i).yd,'blue o'); 592 | end 593 | if (s(i).ENERGY==1) 594 | %plot(s(i).xd,s(i).yd,'red +'); 595 | end 596 | %hold on; 597 | end 598 | end 599 | %plot(s(n+1).xd,s(n+1).yd,'green x'); 600 | 601 | 602 | STATISTICS(r+1).DEAD=dead; 603 | DEAD(r+1)=dead; 604 | DEAD_N(r+1)=dead_n; 605 | DEAD_A(r+1)=dead_a; 606 | 607 | %When the first node dies 608 | if (dead==1) 609 | if(flag_first_dead==0) 610 | first_dead=r 611 | flag_first_dead=1; 612 | end 613 | end 614 | 615 | countCHs=0; 616 | cluster=1; 617 | for i=1:1:n 618 | if(s(i).E>0) 619 | temp_rand=rand; 620 | if ( (s(i).G)<=0) 621 | 622 | %Election of Cluster Heads 623 | if(temp_rand<= (p/(1-p*mod(r,round(1/p))))) 624 | countCHs=countCHs+1; 625 | packets_TO_BS=packets_TO_BS+1; 626 | PACKETS_TO_BS(r+1)=packets_TO_BS; 627 | 628 | s(i).type='C'; 629 | s(i).G=round(1/p)-1; 630 | C(cluster).xd=s(i).xd; 631 | C(cluster).yd=s(i).yd; 632 | %plot(s(i).xd,s(i).yd,'k*'); 633 | 634 | distance=sqrt( (s(i).xd-(s(n+1).xd) )^2 + (s(i).yd-(s(n+1).yd) )^2 ); 635 | C(cluster).distance=distance; 636 | C(cluster).id=i; 637 | X(cluster)=s(i).xd; 638 | Y(cluster)=s(i).yd; 639 | cluster=cluster+1; 640 | 641 | %Calculation of Energy dissipated 642 | %distance; 643 | %figure(9); 644 | if (distance>do) 645 | s(i).E=s(i).E- ( (ETX+EDA)*(4000) + Emp*4000*( distance*distance*distance*distance )); 646 | %plot(s(i).E,s(i).E,'red .'); 647 | end 648 | if (distance<=do) 649 | s(i).E=s(i).E- ( (ETX+EDA)*(4000) + Efs*4000*( distance * distance )); 650 | %plot(s(i).E,s(i).E,'red .'); 651 | end 652 | end 653 | 654 | end 655 | end 656 | 657 | energy=energy+s(i).E; 658 | if(s(i).E<0) 659 | energy=energy-abs(s(i).E); 660 | end 661 | 662 | end 663 | 664 | STATISTICS(r+1).CLUSTERHEADS=cluster-1; 665 | CLUSTERHS(r+1)=cluster-1; 666 | 667 | %Election of Associated Cluster Head for Normal Nodes 668 | for i=1:1:n 669 | if ( s(i).type=='N' && s(i).E>0 ) 670 | if(cluster-1>=1) 671 | min_dis=sqrt( (s(i).xd-s(n+1).xd)^2 + (s(i).yd-s(n+1).yd)^2 ); 672 | min_dis_cluster=1; 673 | for c=1:1:cluster-1 674 | temp=min(min_dis,sqrt( (s(i).xd-C(c).xd)^2 + (s(i).yd-C(c).yd)^2 ) ); 675 | if ( tempdo) 685 | s(i).E=s(i).E- ( ETX*(4000) + Emp*4000*( min_dis * min_dis * min_dis * min_dis)); 686 | %plot(s(i).E,s(i).E,'red .'); 687 | end 688 | if (min_dis<=do) 689 | s(i).E=s(i).E- ( ETX*(4000) + Efs*4000*( min_dis * min_dis)); 690 | %plot(s(i).E,s(i).E,'red .'); 691 | end 692 | %Energy dissipated 693 | if(min_dis>0) 694 | s(C(min_dis_cluster).id).E = s(C(min_dis_cluster).id).E- ( (ERX + EDA)*4000 ); 695 | PACKETS_TO_CH(r+1)=n-dead-cluster+1; 696 | end 697 | 698 | s(i).min_dis=min_dis; 699 | s(i).min_dis_cluster=min_dis_cluster; 700 | 701 | end 702 | end 703 | 704 | end 705 | energy=energy/(n-dead); 706 | figure(33); 707 | xlabel('Round'); 708 | ylabel('average energy of network'); 709 | hold on; 710 | plot(r,energy,'red .'); 711 | figure(22); 712 | hold on; 713 | plot(r,dead,'black .'); 714 | 715 | 716 | end 717 | %hold on; 718 | 719 | %countCHs; 720 | %rcountCHs=rcountCHs+countCHs; 721 | 722 | 723 | 724 | %Code for Voronoi Cells 725 | %Unfortynately if there is a small 726 | %number of cells, Matlab's voronoi 727 | %procedure has some problems 728 | 729 | %[vx,vy]=voronoi(X,Y); 730 | %plot(X,Y,'r*',vx,vy,'b-'); 731 | % hold on; 732 | % voronoi(X,Y); 733 | % axis([0 xm 0 ym]); 734 | 735 | 736 | 737 | 738 | %end 739 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% STATISTICS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 740 | % % 741 | % DEAD : a rmax x 1 array of number of dead nodes/round 742 | % DEAD_A : a rmax x 1 array of number of dead Advanced nodes/round 743 | % DEAD_N : a rmax x 1 array of number of dead Normal nodes/round 744 | % CLUSTERHS : a rmax x 1 array of number of Cluster Heads/round 745 | % PACKETS_TO_BS : a rmax x 1 array of number packets send to Base Station/round 746 | % PACKETS_TO_CH : a rmax x 1 array of number of packets send to ClusterHeads/round 747 | % first_dead: the round where the first node died 748 | % % 749 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 750 | 751 | 752 | 753 | 754 | 755 | 756 | -------------------------------------------------------------------------------- /SEP/SEP150.m: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2 | % % 3 | % SEP: A Stable Election Protocol for clustered % 4 | % heterogeneous wireless sensor networks % 5 | % % 6 | % (c) Georgios Smaragdakis % 7 | % WING group, Computer Science Department, Boston University % 8 | % % 9 | % You can find full documentation and related information at: % 10 | % http://csr.bu.edu/sep % 11 | % % 12 | % To report your comment or any bug please send e-mail to: % 13 | % gsmaragd@cs.bu.edu % 14 | % % 15 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 | 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | % % 19 | % This is the LEACH [1] code we have used. % 20 | % The same code can be used for FAIR if m=1 % 21 | % % 22 | % [1] W.R.Heinzelman, A.P.Chandrakasan and H.Balakrishnan, % 23 | % "An application-specific protocol architecture for wireless % 24 | % microsensor networks" % 25 | % IEEE Transactions on Wireless Communications, 1(4):660-670,2002 % 26 | % % 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | 29 | clear; 30 | 31 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%%% 32 | 33 | %Field Dimensions - x and y maximum (in meters) 34 | xm=200; 35 | ym=100; 36 | 37 | %x and y Coordinates of the Sink 38 | sink.x=0.0*xm; 39 | sink.y=0.0*ym; 40 | 41 | %Number of Nodes in the field 42 | n=150; 43 | 44 | %Optimal Election Probability of a node 45 | %to become cluster head 46 | p=0.2; 47 | 48 | %Energy Model (all values in Joules) 49 | %Initial Energy 50 | Eo=0.5; 51 | %Eelec=Etx=Erx 52 | ETX=50*0.000000001; 53 | ERX=50*0.000000001; 54 | %Transmit Amplifier types 55 | Efs=10*0.000000000001; 56 | Emp=0.0013*0.000000000001; 57 | %Data Aggregation Energy 58 | EDA=5*0.000000001; 59 | 60 | %Values for Hetereogeneity 61 | %Percentage of nodes than are advanced 62 | m=0.1; 63 | %\alpha 64 | a=1; 65 | 66 | %maximum number of rounds 67 | rmax=800; 68 | 69 | %%%%%%%%%%%%%%%%%%%%%%%%% END OF PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%% 70 | 71 | %Computation of do 72 | do=sqrt(Efs/Emp); 73 | 74 | %Creation of the random Sensor Network 75 | %figure(1); 76 | 77 | 78 | 79 | 80 | 81 | 82 | s(1).xd=35.0;% ad 83 | s(1).yd=22.0; 84 | s(1).E= 6.5; 85 | 86 | s(2).xd=10.0; 87 | s(2).yd=10.0; 88 | s(2).E= 1.5; 89 | 90 | s(3).xd=15.0; 91 | s(3).yd=22.0; 92 | s(3).E= 2.1; 93 | 94 | s(4).xd=25.0; 95 | s(4).yd=13.0; 96 | s(4).E= 1.7; 97 | 98 | s(5).xd=26.0; 99 | s(5).yd=28.0; 100 | s(5).E= 4.6; 101 | 102 | s(6).xd=5.0; 103 | s(6).yd=32.0; 104 | s(6).E= 3.8; 105 | 106 | 107 | s(7).xd=5.0;% ad 108 | s(7).yd=19.0; 109 | s(7).E= 2.4; 110 | 111 | 112 | s(8).xd=15.0; 113 | s(8).yd=29.0; 114 | s(8).E= 3.1; 115 | 116 | 117 | s(9).xd=18.0; 118 | s(9).yd=5.0; 119 | s(9).E= 3.1; 120 | 121 | 122 | s(10).xd=32.0; 123 | s(10).yd=10.0; 124 | s(10).E= 3.1; 125 | 126 | %2 cluster 127 | 128 | s(11).xd=60.0;% ad 129 | s(11).yd=50.0; 130 | s(11).E= 8.4; 131 | 132 | s(12).xd=55.0; 133 | s(12).yd=12.0; 134 | s(12).E= 3.1; 135 | 136 | s(13).xd=71.0; 137 | s(13).yd=13.0; 138 | s(13).E= 1.4; 139 | 140 | s(14).xd=67.0; 141 | s(14).yd=26.0; 142 | s(14).E= 3.7; 143 | 144 | s(15).xd=44.0; 145 | s(15).yd=37.0; 146 | s(15).E= 3.01; 147 | 148 | s(16).xd=60.0; 149 | s(16).yd=40.0; 150 | s(16).E= 4.1; 151 | 152 | 153 | 154 | s(17).xd=35.0; % ad 155 | s(17).yd=40.0; 156 | s(17).E=2.3 ; 157 | 158 | s(18).xd=40.0; 159 | s(18).yd=46.0; 160 | s(18).E= 1.1; 161 | 162 | s(19).xd=43.0; 163 | s(19).yd=58.0; 164 | s(19).E=2.1 ; 165 | 166 | s(20).xd=26.0; 167 | s(20).yd=55.0; 168 | s(20).E=3.3 ; 169 | 170 | s(21).xd=28.0; 171 | s(21).yd=72.0; 172 | s(21).E=2.8 ; 173 | 174 | s(22).xd=16.0; 175 | s(22).yd=45.0; 176 | s(22).E=2.8 ; 177 | 178 | s(23).xd=21.0; 179 | s(23).yd=62.0; 180 | s(23).E=2.8 ; 181 | 182 | s(24).xd=35.0; 183 | s(24).yd=60.0; 184 | s(24).E=2.8 ; 185 | 186 | s(25).xd=35.0; 187 | s(25).yd=48.0; 188 | s(25).E=2.8 ; 189 | 190 | s(26).xd=30.0; 191 | s(26).yd=37.0; 192 | s(26).E=2.8 ; 193 | 194 | s(27).xd=50.0; 195 | s(27).yd=40.0; 196 | s(27).E=2.8 ; 197 | 198 | s(28).xd=47.0; 199 | s(28).yd=20.0; 200 | s(28).E=2.8 ; 201 | 202 | s(29).xd=63.0; 203 | s(29).yd=20.0; 204 | s(29).E=2.8 ; 205 | 206 | 207 | 208 | %3 cluster 209 | 210 | s(30).xd=100.0; %ad 211 | s(30).yd=66.0; 212 | s(30).E=9.9 ; 213 | 214 | s(31).xd=90.0; 215 | s(31).yd=3.0; 216 | s(31).E=3.9 ; 217 | 218 | s(32).xd=106.0; 219 | s(32).yd=6.0; 220 | s(32).E=3.7 ; 221 | 222 | s(33).xd=85.0; 223 | s(33).yd=15.0; 224 | s(33).E=3.6 ; 225 | 226 | 227 | s(34).xd=100.0; 228 | s(34).yd=18.0; 229 | s(34).E=2.5 ; 230 | 231 | s(35).xd=110.0; 232 | s(35).yd=19.0; 233 | s(35).E=2.9 ; 234 | 235 | s(36).xd=112.0; 236 | s(36).yd=33.0; 237 | s(36).E= 2.2; 238 | 239 | s(37).xd=85.0; 240 | s(37).yd=32.0; 241 | s(37).E=4.3 ; 242 | 243 | s(38).xd=102.0; 244 | s(38).yd=42.0; 245 | s(38).E=3.7 ; 246 | 247 | s(39).xd=93.0; 248 | s(39).yd=38.0; 249 | s(39).E=3.9 ; 250 | 251 | s(40).xd=108.0; 252 | s(40).yd=48.0; 253 | s(40).E=4.1 ; 254 | 255 | s(41).xd=98.0; 256 | s(41).yd=62.0; 257 | s(41).E= 3.4; 258 | 259 | s(42).xd=90.0; 260 | s(42).yd=52.0; 261 | s(42).E=2.2 ; 262 | 263 | s(43).xd=80.0; 264 | s(43).yd=46.0; 265 | s(43).E=3.1 ; 266 | 267 | s(44).xd=76.0; 268 | s(44).yd=45.0; 269 | s(44).E=3.2 ; 270 | 271 | s(45).xd=75.0; 272 | s(45).yd=60.0; 273 | s(45).E= 2.4; 274 | 275 | s(46).xd=85.0; 276 | s(46).yd=68.0; 277 | s(46).E=4.1 ; 278 | 279 | s(47).xd=94.0; 280 | s(47).yd=72.0; 281 | s(47).E=3.4 ; 282 | 283 | s(48).xd=75.0; 284 | s(48).yd=70.0; 285 | s(48).E=2.2 ; 286 | 287 | s(49).xd=80.0; 288 | s(49).yd=82.0; 289 | s(49).E=3.3 ; 290 | 291 | s(50).xd=74.0; 292 | s(50).yd=92.0; 293 | s(50).E=4.4 ; 294 | 295 | s(51).xd=65.0; 296 | s(51).yd=78.0; 297 | s(51).E=3.5 ; 298 | 299 | s(52).xd=50.0; 300 | s(52).yd=75.0; 301 | s(52).E=2.4 ; 302 | 303 | s(53).xd=53.0; 304 | s(53).yd=95.0; 305 | s(53).E=2.7 ; 306 | 307 | s(54).xd=40.0; 308 | s(54).yd=88.0; 309 | s(54).E=3.9 ; 310 | 311 | 312 | s(55).xd=22.0; 313 | s(55).yd=78.0; 314 | s(55).E=2.9 ; 315 | 316 | 317 | s(56).xd=24.0; 318 | s(56).yd=90.0; 319 | s(56).E=3.0 ; 320 | 321 | s(57).xd=4.0; 322 | s(57).yd=79.0; 323 | s(57).E=3.9 ; 324 | 325 | 326 | s(58).xd=38.0; 327 | s(58).yd=79.0; 328 | s(58).E=3.5 ; 329 | 330 | 331 | s(59).xd=55.0; 332 | s(59).yd=85.0; 333 | s(59).E=2.9 ; 334 | 335 | 336 | s(60).xd=59.0; 337 | s(60).yd=68.0; 338 | s(60).E=3.7 ; 339 | 340 | s(61).xd=69.0; 341 | s(61).yd=88.0; 342 | s(61).E=2.7 ; 343 | 344 | 345 | s(62).xd=78.0; 346 | s(62).yd=75.0; 347 | s(62).E=2.6 ; 348 | 349 | 350 | s(63).xd=90.0; 351 | s(63).yd=60.0; 352 | s(63).E=3.2 ; 353 | 354 | 355 | s(64).xd=86.0; 356 | s(64).yd=47.0; 357 | s(64).E=4.1 ; 358 | 359 | 360 | s(65).xd=96.0; 361 | s(65).yd=47.0; 362 | s(65).E=3.9 ; 363 | 364 | 365 | s(66).xd=80.0; 366 | s(66).yd=38.0; 367 | s(66).E=3.6 ; 368 | 369 | 370 | s(67).xd=81.0; 371 | s(67).yd=21.0; 372 | s(67).E=4.1 ; 373 | 374 | 375 | s(68).xd=95.0; 376 | s(68).yd=25.0; 377 | s(68).E=3.3 ; 378 | 379 | 380 | s(69).xd=110.0; 381 | s(69).yd=15.0; 382 | s(69).E=3.7 ; 383 | 384 | 385 | %fourth cluster 386 | 387 | s(70).xd=145.0; 388 | s(70).yd=18.0; 389 | s(70).E=9.3; 390 | 391 | s(71).xd=133.0; 392 | s(71).yd=8.0; 393 | s(71).E=4.1 ; 394 | 395 | s(72).xd=125.0; 396 | s(72).yd=18.0; 397 | s(72).E=3.7; 398 | 399 | s(73).xd=135.0; 400 | s(73).yd=34.0; 401 | s(73).E=2.3 ; 402 | 403 | s(74).xd=123.0; 404 | s(74).yd=42.0; 405 | s(74).E=4.6 ; 406 | 407 | s(75).xd=134.0; 408 | s(75).yd=52.0; 409 | s(75).E=2.1 ; 410 | 411 | s(76).xd=118.0; 412 | s(76).yd=50.0; 413 | s(76).E=4.6 ; 414 | 415 | s(77).xd=123.0; 416 | s(77).yd=60.0; 417 | s(77).E=4.1 ; 418 | 419 | s(78).xd=126.0; 420 | s(78).yd=65.0; 421 | s(78).E=2.5 ; 422 | 423 | s(79).xd=113.0; 424 | s(79).yd=65.0; 425 | s(79).E=3.0 ; 426 | 427 | s(80).xd=125.0; 428 | s(80).yd=70.0; 429 | s(80).E=4.1 ; 430 | 431 | s(81).xd=120.0; 432 | s(81).yd=72.0; 433 | s(81).E=3.6 ; 434 | 435 | s(82).xd=124.0; 436 | s(82).yd=80.0; 437 | s(82).E=3.9 ; 438 | 439 | s(83).xd=105.0; 440 | s(83).yd=82.0; 441 | s(83).E=3.2 ; 442 | 443 | s(84).xd=124.0; 444 | s(84).yd=90.0; 445 | s(84).E=2.9 ; 446 | 447 | s(85).xd=116.0; 448 | s(85).yd=92.0; 449 | s(85).E=3.6 ; 450 | 451 | s(86).xd=110.0; 452 | s(86).yd=90.0; 453 | s(86).E=3.6 ; 454 | 455 | s(87).xd=95.0; 456 | s(87).yd=85.0; 457 | s(87).E=2.9 ; 458 | 459 | s(88).xd=90.0; 460 | s(88).yd=95.0; 461 | s(88).E=4.3 ; 462 | 463 | s(89).xd=98.0; 464 | s(89).yd=95.0; 465 | s(89).E=3.3 ; 466 | 467 | s(90).xd=115.0; 468 | s(90).yd=80.0; 469 | s(90).E=2.3 ; 470 | 471 | s(91).xd=116.0; 472 | s(91).yd=73.0; 473 | s(91).E=2.4 ; 474 | 475 | s(92).xd=118.0; 476 | s(92).yd=70.0; 477 | s(92).E=2.7 ; 478 | 479 | s(93).xd=127.0; 480 | s(93).yd=45.0; 481 | s(93).E=2.5 ; 482 | 483 | s(94).xd=136.0; 484 | s(94).yd=35.0; 485 | s(94).E=3.3 ; 486 | 487 | s(95).xd=122.0; 488 | s(95).yd=25.0; 489 | s(95).E=3.5 ; 490 | 491 | s(96).xd=129.0; 492 | s(96).yd=25.0; 493 | s(96).E=3.6 ; 494 | 495 | s(97).xd=126.0; 496 | s(97).yd=9.0; 497 | s(97).E=3.7 ; 498 | 499 | %fifth 500 | 501 | s(98).xd=155.0; %ad 502 | s(98).yd=85.0; 503 | s(98).E=8.9 ; 504 | 505 | s(99).xd=158.0; 506 | s(99).yd=12.0; 507 | s(99).E= 3.8; 508 | 509 | s(100).xd=167.0; 510 | s(100).yd=22.0; 511 | s(100).E=2.9 ; 512 | 513 | s(101).xd=155.0; 514 | s(101).yd=24.0; 515 | s(101).E=2.4 ; 516 | 517 | s(102).xd=147.0; 518 | s(102).yd=31.0; 519 | s(102).E=2.3 ; 520 | 521 | s(103).xd=162; 522 | s(103).yd=35.0; 523 | s(103).E=2.6 ; 524 | 525 | 526 | 527 | s(104).xd=148.0; 528 | s(104).yd=43.0; 529 | s(104).E=4.8 ; 530 | 531 | s(105).xd=154.0; 532 | s(105).yd=55.0; 533 | s(105).E=2.9 ; 534 | 535 | s(106).xd=148.0; 536 | s(106).yd=58.0; 537 | s(106).E=3.8 ; 538 | 539 | s(107).xd=156.0; 540 | s(107).yd=70.0; 541 | s(107).E=3.7 ; 542 | 543 | s(108).xd=149.0; 544 | s(108).yd=69.0; 545 | s(108).E=3.5 ; 546 | 547 | s(109).xd=150.0; 548 | s(109).yd=80.0; 549 | s(109).E=3.2 ; 550 | 551 | s(110).xd=142.0; 552 | s(110).yd=82.0; 553 | s(110).E=2.7 ; 554 | 555 | s(111).xd=143.0; 556 | s(111).yd=88.0; 557 | s(111).E=3.5 ; 558 | 559 | s(112).xd=128.0; 560 | s(112).yd=96.0; 561 | s(112).E=4.3 ; 562 | 563 | 564 | s(113).xd=130.0; 565 | s(113).yd=90.0; 566 | s(113).E=4.4 ; 567 | 568 | s(114).xd=145.0; 569 | s(114).yd=81.0; 570 | s(114).E=4.6 ; 571 | 572 | 573 | s(115).xd=148.0; 574 | s(115).yd=75.0; 575 | s(115).E=4.8 ; 576 | 577 | 578 | s(116).xd=155.0; 579 | s(116).yd=60.0; 580 | s(116).E=2.3 ; 581 | 582 | 583 | s(117).xd=165.0; 584 | s(117).yd=53.0; 585 | s(117).E=3.5 ; 586 | 587 | 588 | s(118).xd=159.0; 589 | s(118).yd=49.0; 590 | s(118).E=3.9 ; 591 | 592 | 593 | s(119).xd=155.0; 594 | s(119).yd=38.0; 595 | s(119).E=2.7 ; 596 | 597 | 598 | s(120).xd=163.0; 599 | s(120).yd=20.0; 600 | s(120).E=2.9 ; 601 | 602 | %sixth 603 | 604 | s(121).xd=195.0; %ad 605 | s(121).yd=10.0; 606 | s(121).E=2.4 ; 607 | 608 | s(122).xd=183.0; 609 | s(122).yd=12.0; 610 | s(122).E=3.7 ; 611 | 612 | s(123).xd=182.0; 613 | s(123).yd=20.0; 614 | s(123).E=3.1 ; 615 | 616 | s(124).xd=195.0; 617 | s(124).yd=25.0; 618 | s(124).E=3.5 ; 619 | 620 | s(125).xd=184.0; 621 | s(125).yd=38.0; 622 | s(125).E=3.8 ; 623 | 624 | s(126).xd=192.0; 625 | s(126).yd=43.0; 626 | s(126).E=3.9 ; 627 | 628 | s(127).xd=185.0; 629 | s(127).yd=52.0; 630 | s(127).E=3.5 ; 631 | 632 | s(128).xd=171.0; 633 | s(128).yd=50.0; 634 | s(128).E=2.9 ; 635 | 636 | s(129).xd=165.0; 637 | s(129).yd=64.0; 638 | s(129).E= 4.9; 639 | 640 | s(130).xd=118.0; 641 | s(130).yd=68.0; 642 | s(130).E=4.3 ; 643 | 644 | s(131).xd=180.0; 645 | s(131).yd=73.0; 646 | s(131).E=4.4 ; 647 | 648 | 649 | 650 | s(132).xd=190.0; 651 | s(132).yd=75.0; 652 | s(132).E=3.2 ; 653 | 654 | s(133).xd=186.0; 655 | s(133).yd=83.0; 656 | s(133).E=2.2 ; 657 | 658 | s(134).xd=173.0; 659 | s(134).yd=83.0; 660 | s(134).E= 3.7; 661 | 662 | s(135).xd=184.0; 663 | s(135).yd=92.0; 664 | s(135).E=1.3 ; 665 | 666 | s(136).xd=169.0; 667 | s(136).yd=88.0; 668 | s(137).E=2.9 ; 669 | 670 | s(138).xd=148.0; 671 | s(138).yd=89.0; 672 | s(138).E=3.1 ; 673 | 674 | s(139).xd=155.0; 675 | s(139).yd=96.0; 676 | s(139).E=1.6 ; 677 | 678 | s(140).xd=146.0; 679 | s(140).yd=75.0; 680 | s(140).E= 2.3; 681 | 682 | s(141).xd=170.0; 683 | s(141).yd=55.0; 684 | s(141).E=2.8 ; 685 | 686 | s(142).xd=183.0; 687 | s(142).yd=38.0; 688 | s(142).E=1.3 ;% 100 nodes 689 | 690 | 691 | 692 | s(143).xd=179.0; 693 | s(143).yd=89.0; 694 | s(143).E=2.8 ; 695 | 696 | 697 | s(144).xd=178.0; 698 | s(144).yd=85.0; 699 | s(144).E=3.9 ; 700 | 701 | 702 | s(145).xd=174.0; 703 | s(145).yd=72.0; 704 | s(145).E=4.0 ; 705 | 706 | 707 | s(146).xd=179.0; 708 | s(146).yd=60.0; 709 | s(146).E=3.6 ; 710 | 711 | 712 | s(147).xd=182.0; 713 | s(147).yd=45.0; 714 | s(147).E=3.4 ; 715 | 716 | 717 | s(148).xd=195.0; 718 | s(148).yd=40.0; 719 | s(148).E=3.8 ; 720 | 721 | 722 | s(149).xd=184.0; 723 | s(149).yd=35.0; 724 | s(149).E=2.6 ; 725 | 726 | 727 | s(150).xd=191.0; 728 | s(150).yd=20.0; 729 | s(150).E=4.2 ; 730 | for i=1:1:n 731 | % S(i).xd=rand(1,1)*xm; 732 | % XR(i)=S(i).xd; 733 | % S(i).yd=rand(1,1)*ym; 734 | % YR(i)=S(i).yd; 735 | s(i).G=0; 736 | %initially there are no cluster heads only nodes 737 | s(i).type='N'; 738 | 739 | temp_rnd0=i; 740 | %Random Election of Normal Nodes 741 | if (temp_rnd0>=m*n+1) 742 | % S(i).E=Eo; 743 | s(i).ENERGY=0; 744 | % plot(S(i).xd,S(i).yd,'o'); 745 | % hold on; 746 | end 747 | %Random Election of Advanced Nodes 748 | if (temp_rnd00 820 | s(i).type='N'; 821 | if (s(i).ENERGY==0) 822 | % plot(S(i).xd,S(i).yd,'o'); 823 | end 824 | if (s(i).ENERGY==1) 825 | % plot(S(i).xd,S(i).yd,'+'); 826 | end 827 | %hold on; 828 | end 829 | end 830 | %plot(s(n+1).xd,s(n+1).yd,'x'); 831 | 832 | 833 | STATISTICS(r+1).DEAD=dead; 834 | DEAD(r+1)=dead; 835 | DEAD_N(r+1)=dead_n; 836 | DEAD_A(r+1)=dead_a; 837 | 838 | %When the first node dies 839 | if (dead==1) 840 | if(flag_first_dead==0) 841 | first_dead=r 842 | flag_first_dead=1; 843 | end 844 | end 845 | 846 | countCHs=0; 847 | cluster=1; 848 | for i=1:1:n 849 | if(s(i).E>0) 850 | temp_rand=rand; 851 | if ( (s(i).G)<=0) 852 | 853 | %Election of Cluster Heads 854 | if(temp_rand<= (p/(1-p*mod(r,round(1/p))))) 855 | countCHs=countCHs+1; 856 | packets_TO_BS=packets_TO_BS+1; 857 | PACKETS_TO_BS(r+1)=packets_TO_BS; 858 | 859 | s(i).type='C'; 860 | s(i).G=round(1/p)-1; 861 | C(cluster).xd=s(i).xd; 862 | C(cluster).yd=s(i).yd; 863 | plot(s(i).xd,s(i).yd,'k*'); 864 | 865 | distance=sqrt( (s(i).xd-(s(n+1).xd) )^2 + (s(i).yd-(s(n+1).yd) )^2 ); 866 | C(cluster).distance=distance; 867 | C(cluster).id=i; 868 | % X(cluster)=s(i).xd; 869 | % Y(cluster)=s(i).yd; 870 | cluster=cluster+1; 871 | 872 | %Calculation of Energy dissipated 873 | distance; 874 | if (distance>do) 875 | s(i).E=s(i).E- ( (ETX+EDA)*(4000) + Emp*4000*( distance*distance*distance*distance )); 876 | end 877 | if (distance<=do) 878 | s(i).E=s(i).E- ( (ETX+EDA)*(4000) + Efs*4000*( distance * distance )); 879 | end 880 | end 881 | 882 | end 883 | energy=energy+s(i).E; 884 | end 885 | 886 | 887 | end 888 | 889 | STATISTICS(r+1).CLUSTERHEADS=cluster-1; 890 | CLUSTERHS(r+1)=cluster-1; 891 | 892 | %Election of Associated Cluster Head for Normal Nodes 893 | for i=1:1:n 894 | if ( s(i).type=='N' & s(i).E>0 ) 895 | if(cluster-1>=1) 896 | min_dis=sqrt( (s(i).xd-s(n+1).xd)^2 + (s(i).yd-s(n+1).yd)^2 ); 897 | min_dis_cluster=1; 898 | for c=1:1:cluster-1 899 | temp=min(min_dis,sqrt( (s(i).xd-C(c).xd)^2 + (s(i).yd-C(c).yd)^2 ) ); 900 | if ( tempdo) 909 | s(i).E=s(i).E- ( ETX*(4000) + Emp*4000*( min_dis * min_dis * min_dis * min_dis)); 910 | end 911 | if (min_dis<=do) 912 | s(i).E=s(i).E- ( ETX*(4000) + Efs*4000*( min_dis * min_dis)); 913 | end 914 | %Energy dissipated 915 | if(min_dis>0) 916 | s(C(min_dis_cluster).id).E = s(C(min_dis_cluster).id).E- ( (ERX + EDA)*4000 ); 917 | PACKETS_TO_CH(r+1)=n-dead-cluster+1; 918 | end 919 | 920 | s(i).min_dis=min_dis; 921 | s(i).min_dis_cluster=min_dis_cluster; 922 | 923 | end 924 | end 925 | 926 | 927 | end 928 | energy=energy/(n-dead); 929 | figure(33); 930 | xlabel('Round'); 931 | ylabel('average energy of network'); 932 | hold on; 933 | plot(r,energy,'red.'); 934 | figure(22); 935 | hold on; 936 | plot(r,dead,'black .'); 937 | 938 | 939 | end 940 | 941 | 942 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% STATISTICS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 943 | % % 944 | % DEAD : a rmax x 1 array of number of dead nodes/round 945 | % DEAD_A : a rmax x 1 array of number of dead Advanced nodes/round 946 | % DEAD_N : a rmax x 1 array of number of dead Normal nodes/round 947 | % CLUSTERHS : a rmax x 1 array of number of Cluster Heads/round 948 | % PACKETS_TO_BS : a rmax x 1 array of number packets send to Base Station/round 949 | % PACKETS_TO_CH : a rmax x 1 array of number of packets send to ClusterHeads/round 950 | % first_dead: the round where the first node died 951 | % % 952 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 953 | 954 | 955 | 956 | 957 | 958 | 959 | -------------------------------------------------------------------------------- /SEP/SEP200.m: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2 | % % 3 | % SEP: A Stable Election Protocol for clustered % 4 | % heterogeneous wireless sensor networks % 5 | % % 6 | % (c) Georgios Smaragdakis % 7 | % WING group, Computer Science Department, Boston University % 8 | % % 9 | % You can find full documentation and related information at: % 10 | % http://csr.bu.edu/sep % 11 | % % 12 | % To report your comment or any bug please send e-mail to: % 13 | % gsmaragd@cs.bu.edu % 14 | % % 15 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 16 | 17 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 18 | % % 19 | % This is the LEACH [1] code we have used. % 20 | % The same code can be used for FAIR if m=1 % 21 | % % 22 | % [1] W.R.Heinzelman, A.P.Chandrakasan and H.Balakrishnan, % 23 | % "An application-specific protocol architecture for wireless % 24 | % microsensor networks" % 25 | % IEEE Transactions on Wireless Communications, 1(4):660-670,2002 % 26 | % % 27 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 28 | 29 | clear; 30 | 31 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%%% 32 | 33 | %Field Dimensions - x and y maximum (in meters) 34 | xm=200; 35 | ym=100; 36 | 37 | %x and y Coordinates of the Sink 38 | sink.x=0.0*xm; 39 | sink.y=0.0*ym; 40 | 41 | %Number of Nodes in the field 42 | n=200; 43 | 44 | %Optimal Election Probability of a node 45 | %to become cluster head 46 | p=0.2; 47 | 48 | %Energy Model (all values in Joules) 49 | %Initial Energy 50 | Eo=0.5; 51 | %Eelec=Etx=Erx 52 | ETX=50*0.000000001; 53 | ERX=50*0.000000001; 54 | %Transmit Amplifier types 55 | Efs=10*0.000000000001; 56 | Emp=0.0013*0.000000000001; 57 | %Data Aggregation Energy 58 | EDA=5*0.000000001; 59 | 60 | %Values for Hetereogeneity 61 | %Percentage of nodes than are advanced 62 | m=0.1; 63 | %\alpha 64 | a=1; 65 | 66 | %maximum number of rounds 67 | rmax=800; 68 | 69 | %%%%%%%%%%%%%%%%%%%%%%%%% END OF PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%% 70 | 71 | %Computation of do 72 | do=sqrt(Efs/Emp); 73 | 74 | %Creation of the random Sensor Network 75 | figure(1); 76 | 77 | 78 | 79 | 80 | 81 | s(1).xd=35.0; % ad 82 | s(1).yd=22.0; 83 | s(1).E= 6.5; 84 | 85 | s(2).xd=10.0; 86 | s(2).yd=10.0; 87 | s(2).E= 1.5; 88 | 89 | s(3).xd=15.0; 90 | s(3).yd=22.0; 91 | s(3).E= 2.1; 92 | 93 | s(4).xd=25.0; 94 | s(4).yd=13.0; 95 | s(4).E= 1.7; 96 | 97 | s(5).xd=26.0; 98 | s(5).yd=28.0; 99 | s(5).E= 4.6; 100 | 101 | s(6).xd=5.0; 102 | s(6).yd=32.0; 103 | s(6).E= 3.8; 104 | 105 | 106 | s(7).xd=5.0; 107 | s(7).yd=19.0; 108 | s(7).E= 2.4; 109 | 110 | 111 | s(8).xd=15.0; 112 | s(8).yd=29.0; 113 | s(8).E= 3.1; 114 | 115 | 116 | s(9).xd=18.0; 117 | s(9).yd=5.0; 118 | s(9).E= 3.1; 119 | 120 | 121 | s(10).xd=32.0; 122 | s(10).yd=10.0; 123 | s(10).E= 3.1; 124 | 125 | 126 | s(11).xd=5.0; 127 | s(11).yd=10.0; 128 | s(11).E= 3.1; 129 | 130 | s(12).xd=17.0; 131 | s(12).yd=12.0; 132 | s(12).E= 2.8; 133 | 134 | s(13).xd=22.0; 135 | s(13).yd=29.0; 136 | s(13).E= 4.3; 137 | 138 | s(14).xd=26.0; 139 | s(14).yd=19.0; 140 | s(14).E= 2.4; 141 | 142 | %2 cluster 143 | 144 | s(15).xd=60.0; %ad 145 | s(15).yd=50.0; 146 | s(15).E= 8.4; 147 | 148 | s(16).xd=55.0; 149 | s(16).yd=12.0; 150 | s(16).E= 3.1; 151 | 152 | s(17).xd=71.0; 153 | s(17).yd=13.0; 154 | s(17).E= 1.4; 155 | 156 | s(18).xd=67.0; 157 | s(18).yd=26.0; 158 | s(18).E= 3.7; 159 | 160 | s(19).xd=44.0; 161 | s(19).yd=37.0; 162 | s(19).E= 3.01; 163 | 164 | s(20).xd=60.0; 165 | s(20).yd=40.0; 166 | s(20).E= 4.1; 167 | 168 | 169 | s(21).xd=35.0; 170 | s(21).yd=40.0; 171 | s(21).E=3.3 ; 172 | 173 | s(22).xd=40.0; 174 | s(22).yd=46.0; 175 | s(22).E= 1.1; 176 | 177 | s(23).xd=43.0; 178 | s(23).yd=58.0; 179 | s(23).E=2.1 ; 180 | 181 | s(24).xd=26.0; 182 | s(24).yd=55.0; 183 | s(24).E=3.3 ; 184 | 185 | s(25).xd=28.0; 186 | s(25).yd=72.0; 187 | s(25).E=2.8 ; 188 | 189 | s(26).xd=16.0; 190 | s(26).yd=45.0; 191 | s(26).E=2.8 ; 192 | 193 | s(27).xd=21.0; 194 | s(27).yd=62.0; 195 | s(27).E=2.8 ; 196 | 197 | s(28).xd=35.0; 198 | s(28).yd=60.0; 199 | s(28).E=2.8 ; 200 | 201 | s(29).xd=35.0; 202 | s(29).yd=48.0; 203 | s(29).E=2.8 ; 204 | 205 | s(30).xd=30.0; 206 | s(30).yd=37.0; 207 | s(30).E=2.8 ; 208 | 209 | s(31).xd=50.0; 210 | s(31).yd=40.0; 211 | s(31).E=2.8 ; 212 | 213 | s(32).xd=47.0; 214 | s(32).yd=20.0; 215 | s(32).E=2.8 ; 216 | 217 | s(33).xd=63.0; 218 | s(33).yd=20.0; 219 | s(33).E=2.8 ; 220 | 221 | s(34).xd=8.0; 222 | s(34).yd=69.0; 223 | s(34).E= 2.9; 224 | 225 | s(35).xd=8.0; 226 | s(35).yd=52.0; 227 | s(35).E= 1.9; 228 | 229 | s(36).xd=28.0; 230 | s(36).yd=44.0; 231 | s(36).E= 3.3; 232 | 233 | s(37).xd=40.0; 234 | s(37).yd=32.0; 235 | s(37).E= 2.8; 236 | 237 | s(38).xd=50.0; 238 | s(38).yd=49.0; 239 | s(38).E= 4.1; 240 | 241 | s(39).xd=57.0; 242 | s(39).yd=30.0; 243 | s(39).E= 2.8; 244 | 245 | s(40).xd=64.0; 246 | s(40).yd=12.0; 247 | s(40).E= 3.5; 248 | 249 | 250 | %3 cluster 251 | 252 | s(41).xd=100.0; %ad 253 | s(41).yd=66.0; 254 | s(41).E=9.9 ; 255 | 256 | s(42).xd=90.0; 257 | s(42).yd=3.0; 258 | s(42).E=3.9 ; 259 | 260 | s(43).xd=106.0; 261 | s(43).yd=6.0; 262 | s(43).E=3.7 ; 263 | 264 | s(44).xd=85.0; 265 | s(44).yd=15.0; 266 | s(44).E=3.6 ; 267 | 268 | 269 | s(45).xd=100.0; 270 | s(45).yd=18.0; 271 | s(45).E=2.5 ; 272 | 273 | s(46).xd=110.0; 274 | s(46).yd=19.0; 275 | s(46).E=2.9 ; 276 | 277 | s(47).xd=112.0; 278 | s(47).yd=33.0; 279 | s(47).E= 2.2; 280 | 281 | s(48).xd=85.0; 282 | s(48).yd=32.0; 283 | s(48).E=4.3 ; 284 | 285 | s(49).xd=102.0; 286 | s(49).yd=42.0; 287 | s(49).E=3.7 ; 288 | 289 | s(50).xd=93.0; 290 | s(50).yd=38.0; 291 | s(50).E=3.9 ; 292 | 293 | s(51).xd=108.0; 294 | s(51).yd=48.0; 295 | s(51).E=4.1 ; 296 | 297 | s(52).xd=98.0; 298 | s(52).yd=62.0; 299 | s(52).E= 3.4; 300 | 301 | s(53).xd=90.0; 302 | s(53).yd=52.0; 303 | s(53).E=2.2 ; 304 | 305 | s(54).xd=80.0; 306 | s(54).yd=46.0; 307 | s(54).E=3.1 ; 308 | 309 | s(55).xd=76.0; 310 | s(55).yd=45.0; 311 | s(55).E=3.2 ; 312 | 313 | s(56).xd=75.0; 314 | s(56).yd=60.0; 315 | s(56).E= 2.4; 316 | 317 | s(57).xd=85.0; 318 | s(57).yd=68.0; 319 | s(57).E=4.1 ; 320 | 321 | s(58).xd=94.0; 322 | s(58).yd=72.0; 323 | s(58).E=3.4 ; 324 | 325 | s(59).xd=75.0; 326 | s(59).yd=70.0; 327 | s(59).E=2.2 ; 328 | 329 | s(60).xd=80.0; 330 | s(60).yd=82.0; 331 | s(60).E=3.3 ; 332 | 333 | s(61).xd=74.0; 334 | s(61).yd=92.0; 335 | s(61).E=4.4 ; 336 | 337 | s(62).xd=65.0; 338 | s(62).yd=78.0; 339 | s(62).E=3.5 ; 340 | 341 | s(63).xd=50.0; 342 | s(63).yd=75.0; 343 | s(63).E=2.4 ; 344 | 345 | s(64).xd=53.0; 346 | s(64).yd=95.0; 347 | s(64).E=2.7 ; 348 | 349 | s(65).xd=40.0; 350 | s(65).yd=88.0; 351 | s(65).E=3.9 ; 352 | 353 | 354 | s(66).xd=22.0; 355 | s(66).yd=78.0; 356 | s(66).E=2.9 ; 357 | 358 | 359 | s(67).xd=24.0; 360 | s(67).yd=90.0; 361 | s(67).E=3.0 ; 362 | 363 | s(68).xd=4.0; 364 | s(68).yd=79.0; 365 | s(68).E=3.9 ; 366 | 367 | 368 | s(69).xd=38.0; 369 | s(69).yd=79.0; 370 | s(69).E=3.5 ; 371 | 372 | 373 | s(70).xd=55.0; 374 | s(70).yd=85.0; 375 | s(70).E=2.9 ; 376 | 377 | 378 | s(71).xd=59.0; 379 | s(71).yd=68.0; 380 | s(71).E=3.7 ; 381 | 382 | s(72).xd=69.0; 383 | s(72).yd=88.0; 384 | s(72).E=2.7 ; 385 | 386 | 387 | s(73).xd=78.0; 388 | s(73).yd=75.0; 389 | s(73).E=2.6 ; 390 | 391 | 392 | s(74).xd=90.0; 393 | s(74).yd=60.0; 394 | s(74).E=3.2 ; 395 | 396 | 397 | s(75).xd=86.0; 398 | s(75).yd=47.0; 399 | s(75).E=4.1 ; 400 | 401 | 402 | s(76).xd=96.0; 403 | s(76).yd=47.0; 404 | s(76).E=3.9 ; 405 | 406 | 407 | s(77).xd=80.0; 408 | s(77).yd=38.0; 409 | s(77).E=3.6 ; 410 | 411 | 412 | s(78).xd=81.0; 413 | s(78).yd=21.0; 414 | s(78).E=4.1 ; 415 | 416 | 417 | s(79).xd=95.0; 418 | s(79).yd=25.0; 419 | s(79).E=3.3 ; 420 | 421 | 422 | s(80).xd=110.0; 423 | s(80).yd=15.0; 424 | s(80).E=3.7 ; 425 | 426 | s(81).xd=9.0; 427 | s(81).yd=88.0; 428 | s(81).E= 2.4; 429 | 430 | s(82).xd=29.0; 431 | s(82).yd=98.0; 432 | s(82).E= 3.1; 433 | 434 | s(83).xd=46.0; 435 | s(83).yd=80.0; 436 | s(83).E= 2.9; 437 | 438 | s(84).xd=59.0; 439 | s(84).yd=95.0; 440 | s(84).E= 3.2; 441 | 442 | s(85).xd=72.0; 443 | s(85).yd=79.0; 444 | s(85).E= 2.8; 445 | 446 | s(86).xd=65.0; 447 | s(86).yd=65.0; 448 | s(86).E= 3.8; 449 | 450 | s(87).xd=70.0; 451 | s(87).yd=50.0; 452 | s(87).E= 3.1; 453 | 454 | s(88).xd=80.0; 455 | s(88).yd=62.0; 456 | s(88).E= 1.1; 457 | 458 | s(89).xd=92.0; 459 | s(89).yd=69.0; 460 | s(89).E= 4.1; 461 | 462 | s(90).xd=104.0; 463 | s(90).yd=30.0; 464 | s(90).E= 3.1; 465 | 466 | s(91).xd=92.0; 467 | s(91).yd=19.0; 468 | s(91).E= 2.7; 469 | 470 | s(92).xd=88.0; 471 | s(92).yd=42.0; 472 | s(92).E= 2.9; 473 | 474 | 475 | 476 | %fourth cluster 477 | 478 | s(93).xd=145.0; 479 | s(93).yd=18.0; 480 | s(93).E=9.3; 481 | 482 | s(94).xd=133.0; 483 | s(94).yd=8.0; 484 | s(94).E=4.1 ; 485 | 486 | s(95).xd=125.0; 487 | s(95).yd=18.0; 488 | s(95).E=3.7 489 | 490 | s(96).xd=135.0; 491 | s(96).yd=34.0; 492 | s(96).E=8.3 ; 493 | 494 | s(97).xd=123.0; 495 | s(97).yd=42.0; 496 | s(97).E=4.6 ; 497 | 498 | s(98).xd=134.0; 499 | s(98).yd=52.0; 500 | s(98).E=2.1 ; 501 | 502 | s(99).xd=118.0; 503 | s(99).yd=50.0; 504 | s(99).E=4.6 ; 505 | 506 | s(100).xd=123.0; 507 | s(100).yd=60.0; 508 | s(100).E=4.1 ; 509 | 510 | s(101).xd=126.0; 511 | s(101).yd=65.0; 512 | s(101).E=2.5 ; 513 | 514 | s(102).xd=113.0; 515 | s(102).yd=65.0; 516 | s(102).E=3.0 ; 517 | 518 | s(103).xd=125.0; 519 | s(103).yd=70.0; 520 | s(103).E=4.1 ; 521 | 522 | s(104).xd=120.0; 523 | s(104).yd=72.0; 524 | s(104).E=3.6 ; 525 | 526 | s(105).xd=124.0; 527 | s(105).yd=80.0; 528 | s(105).E=3.9 ; 529 | 530 | s(106).xd=105.0; 531 | s(106).yd=82.0; 532 | s(106).E=3.2 ; 533 | 534 | s(107).xd=124.0; 535 | s(107).yd=90.0; 536 | s(107).E=2.9 ; 537 | 538 | s(108).xd=116.0; 539 | s(108).yd=92.0; 540 | s(108).E=3.6 ; 541 | 542 | s(109).xd=110.0; 543 | s(109).yd=90.0; 544 | s(109).E=3.6 ; 545 | 546 | s(110).xd=95.0; 547 | s(110).yd=85.0; 548 | s(110).E=2.9 ; 549 | 550 | s(111).xd=90.0; 551 | s(111).yd=95.0; 552 | s(111).E=4.3 ; 553 | 554 | s(112).xd=98.0; 555 | s(112).yd=95.0; 556 | s(112).E=3.3 ; 557 | 558 | s(113).xd=115.0; 559 | s(113).yd=80.0; 560 | s(113).E=2.3 ; 561 | 562 | s(114).xd=116.0; 563 | s(114).yd=73.0; 564 | s(114).E=2.4 ; 565 | 566 | s(115).xd=118.0; 567 | s(115).yd=70.0; 568 | s(115).E=2.7 ; 569 | 570 | s(116).xd=127.0; 571 | s(116).yd=45.0; 572 | s(116).E=2.5 ; 573 | 574 | s(117).xd=136.0; 575 | s(117).yd=35.0; 576 | s(117).E=3.3 ; 577 | 578 | s(118).xd=122.0; 579 | s(118).yd=25.0; 580 | s(118).E=3.5 ; 581 | 582 | s(119).xd=129.0; 583 | s(119).yd=25.0; 584 | s(119).E=3.6 ; 585 | 586 | s(120).xd=126.0; 587 | s(120).yd=9.0; 588 | s(120).E=3.7 ; 589 | 590 | s(121).xd=85.0; 591 | s(121).yd=98.0; 592 | s(121).E=3.2; 593 | 594 | s(122).xd=100.0; 595 | s(122).yd=84.0; 596 | s(122).E=2.7; 597 | 598 | s(123).xd=104.0; 599 | s(123).yd=78.0; 600 | s(123).E=3.1; 601 | 602 | s(124).xd=113.0; 603 | s(124).yd=69.0; 604 | s(124).E=3.5; 605 | 606 | s(125).xd=134.0; 607 | s(125).yd=60.0; 608 | s(125).E=2.5; 609 | 610 | s(126).xd=138.0; 611 | s(126).yd=48.0; 612 | s(126).E=2.2; 613 | 614 | s(127).xd=119.0; 615 | s(127).yd=45.0; 616 | s(127).E=2.9; 617 | 618 | s(128).xd=130.0; 619 | s(128).yd=35.0; 620 | s(128).E=3.6; 621 | 622 | s(129).xd=135.0; 623 | s(129).yd=15.0; 624 | s(129).E=3.8; 625 | 626 | %fifth 627 | 628 | s(130).xd=155.0; %ad 629 | s(130).yd=85.0; 630 | s(130).E=8.9 ; 631 | 632 | s(131).xd=158.0; 633 | s(131).yd=12.0; 634 | s(131).E= 3.8; 635 | 636 | s(132).xd=167.0; 637 | s(132).yd=22.0; 638 | s(132).E=2.9 ; 639 | 640 | s(133).xd=155.0; 641 | s(133).yd=24.0; 642 | s(133).E=2.4 ; 643 | 644 | s(134).xd=147.0; 645 | s(134).yd=31.0; 646 | s(134).E=2.3 ; 647 | 648 | s(135).xd=162; 649 | s(135).yd=35.0; 650 | s(135).E=2.6 ; 651 | 652 | 653 | 654 | s(136).xd=148.0; 655 | s(136).yd=43.0; 656 | s(136).E=4.8 ; 657 | 658 | s(137).xd=154.0; 659 | s(137).yd=55.0; 660 | s(137).E=2.9 ; 661 | 662 | s(138).xd=148.0; 663 | s(138).yd=58.0; 664 | s(138).E=3.8 ; 665 | 666 | s(139).xd=156.0; 667 | s(139).yd=70.0; 668 | s(139).E=3.7 ; 669 | 670 | s(140).xd=149.0; 671 | s(140).yd=69.0; 672 | s(140).E=3.5 ; 673 | 674 | s(141).xd=150.0; 675 | s(141).yd=80.0; 676 | s(141).E=3.2 ; 677 | 678 | s(142).xd=142.0; 679 | s(142).yd=82.0; 680 | s(142).E=2.7 ; 681 | 682 | s(143).xd=143.0; 683 | s(143).yd=88.0; 684 | s(143).E=3.5 ; 685 | 686 | s(144).xd=128.0; 687 | s(144).yd=96.0; 688 | s(144).E=4.3 ; 689 | 690 | 691 | s(145).xd=130.0; 692 | s(145).yd=90.0; 693 | s(145).E=4.4 ; 694 | 695 | s(146).xd=145.0; 696 | s(146).yd=81.0; 697 | s(146).E=4.6 ; 698 | 699 | 700 | s(147).xd=148.0; 701 | s(147).yd=75.0; 702 | s(147).E=4.8 ; 703 | 704 | 705 | s(148).xd=155.0; 706 | s(148).yd=60.0; 707 | s(148).E=2.3 ; 708 | 709 | 710 | s(149).xd=165.0; 711 | s(149).yd=53.0; 712 | s(149).E=3.5 ; 713 | 714 | 715 | s(150).xd=159.0; 716 | s(150).yd=49.0; 717 | s(150).E=3.9 ; 718 | 719 | 720 | s(151).xd=155.0; 721 | s(151).yd=38.0; 722 | s(151).E=2.7 ; 723 | 724 | 725 | s(152).xd=163.0; 726 | s(152).yd=20.0; 727 | s(152).E=2.9 ; 728 | 729 | s(153).xd=123.0; 730 | s(153).yd=98.0; 731 | s(153).E=3.6; 732 | 733 | s(154).xd=135.0; 734 | s(154).yd=85.0; 735 | s(154).E=2.9; 736 | 737 | s(155).xd=150.0; 738 | s(155).yd=65.0; 739 | s(155).E=2.7; 740 | 741 | s(156).xd=146.0; 742 | s(156).yd=52.0; 743 | s(156).E=1.5; 744 | 745 | s(157).xd=170.0; 746 | s(157).yd=45.0; 747 | s(157).E=2.3; 748 | 749 | s(158).xd=170.0; 750 | s(158).yd=37.0; 751 | s(158).E=2.6; 752 | 753 | s(159).xd=154.0; 754 | s(159).yd=20.0; 755 | s(159).E=1.1; 756 | 757 | s(160).xd=165.0; 758 | s(160).yd=15.0; 759 | s(160).E=2.8; 760 | 761 | %sixth 762 | 763 | s(161).xd=195.0; %ad 764 | s(161).yd=10.0; 765 | s(161).E=9.4 ; 766 | 767 | s(162).xd=183.0; 768 | s(162).yd=12.0; 769 | s(162).E=3.7 ; 770 | 771 | s(163).xd=182.0; 772 | s(163).yd=20.0; 773 | s(163).E=3.1 ; 774 | 775 | s(164).xd=195.0; 776 | s(164).yd=25.0; 777 | s(164).E=3.5 ; 778 | 779 | s(165).xd=184.0; 780 | s(165).yd=38.0; 781 | s(165).E=3.8 ; 782 | 783 | s(166).xd=192.0; 784 | s(166).yd=43.0; 785 | s(166).E=3.9 ; 786 | 787 | s(167).xd=185.0; 788 | s(167).yd=52.0; 789 | s(167).E=3.5 ; 790 | 791 | s(168).xd=171.0; 792 | s(168).yd=50.0; 793 | s(168).E=2.9 ; 794 | 795 | s(169).xd=165.0; 796 | s(169).yd=64.0; 797 | s(169).E= 4.9; 798 | 799 | s(170).xd=118.0; 800 | s(170).yd=68.0; 801 | s(170).E=4.3 ; 802 | 803 | s(171).xd=180.0; 804 | s(171).yd=73.0; 805 | s(171).E=4.4 ; 806 | 807 | 808 | 809 | s(172).xd=190.0; 810 | s(172).yd=75.0; 811 | s(172).E=3.2 ; 812 | 813 | s(173).xd=186.0; 814 | s(173).yd=83.0; 815 | s(173).E=2.2 ; 816 | 817 | s(174).xd=173.0; 818 | s(174).yd=83.0; 819 | s(174).E= 3.7; 820 | 821 | s(175).xd=184.0; 822 | s(175).yd=92.0; 823 | s(175).E=1.3 ; 824 | 825 | s(176).xd=169.0; 826 | s(176).yd=88.0; 827 | s(176).E=2.9 ; 828 | 829 | s(178).xd=148.0; 830 | s(178).yd=89.0; 831 | s(178).E=3.1 ; 832 | 833 | s(179).xd=155.0; 834 | s(179).yd=96.0; 835 | s(179).E=1.6 ; 836 | 837 | s(180).xd=146.0; 838 | s(180).yd=75.0; 839 | s(180).E= 2.3; 840 | 841 | s(181).xd=170.0; 842 | s(181).yd=55.0; 843 | s(181).E=2.8 ; 844 | 845 | s(182).xd=183.0; 846 | s(182).yd=38.0; 847 | s(182).E=1.3 ; 848 | 849 | 850 | 851 | s(183).xd=179.0; 852 | s(183).yd=89.0; 853 | s(183).E=2.8 ; 854 | 855 | 856 | s(184).xd=178.0; 857 | s(184).yd=85.0; 858 | s(184).E=3.9 ; 859 | 860 | 861 | s(185).xd=174.0; 862 | s(185).yd=72.0; 863 | s(185).E=4.0 ; 864 | 865 | 866 | s(186).xd=179.0; 867 | s(186).yd=60.0; 868 | s(186).E=3.6 ; 869 | 870 | 871 | s(187).xd=182.0; 872 | s(187).yd=45.0; 873 | s(187).E=3.4 ; 874 | 875 | 876 | s(188).xd=195.0; 877 | s(188).yd=40.0; 878 | s(188).E=3.8 ; 879 | 880 | 881 | s(189).xd=184.0; 882 | s(189).yd=35.0; 883 | s(189).E=2.6 ; 884 | 885 | 886 | s(190).xd=191.0; 887 | s(190).yd=20.0; 888 | s(190).E=4.2 ; 889 | 890 | s(191).xd=164.0; 891 | s(191).yd=85.0; 892 | s(191).E=1.9; 893 | 894 | s(192).xd=155.0; 895 | s(192).yd=94.0; 896 | s(192).E=3.9; 897 | 898 | s(193).xd=172.0; 899 | s(193).yd=98.0; 900 | s(193).E=3.1; 901 | 902 | s(194).xd=189.0; 903 | s(194).yd=98.0; 904 | s(194).E=2.7; 905 | 906 | s(195).xd=195.0; 907 | s(195).yd=85.0; 908 | s(195).E=3.3; 909 | 910 | s(196).xd=179.0; 911 | s(196).yd=65.0; 912 | s(196).E=4.0; 913 | 914 | s(197).xd=195.0; 915 | s(197).yd=59.0; 916 | s(197).E=2.6; 917 | 918 | s(198).xd=179.0; 919 | s(198).yd=39.0; 920 | s(198).E=1.8; 921 | 922 | s(199).xd=195.0; 923 | s(199).yd=30.0; 924 | s(199).E=3.3; 925 | 926 | s(200).xd=190.0; 927 | s(200).yd=10.0; 928 | s(200).E=3.7; 929 | sum=0; 930 | for i=1:1:n 931 | % S(i).xd=rand(1,1)*xm; 932 | % XR(i)=S(i).xd; 933 | % S(i).yd=rand(1,1)*ym; 934 | % YR(i)=S(i).yd; 935 | s(i).G=0; 936 | %initially there are no cluster heads only nodes 937 | s(i).type='N'; 938 | 939 | temp_rnd0=i; 940 | %Random Election of Normal Nodes 941 | if (temp_rnd0>=m*n+1) 942 | % S(i).E=Eo; 943 | s(i).ENERGY=0; 944 | % plot(S(i).xd,S(i).yd,'o'); 945 | % hold on; 946 | end 947 | %Random Election of Advanced Nodes 948 | if (temp_rnd00 1020 | s(i).type='N'; 1021 | if (s(i).ENERGY==0) 1022 | % plot(S(i).xd,S(i).yd,'o'); 1023 | end 1024 | if (s(i).ENERGY==1) 1025 | % plot(S(i).xd,S(i).yd,'+'); 1026 | end 1027 | %hold on; 1028 | end 1029 | end 1030 | %plot(s(n+1).xd,s(n+1).yd,'x'); 1031 | 1032 | 1033 | STATISTICS(r+1).DEAD=dead; 1034 | DEAD(r+1)=dead; 1035 | DEAD_N(r+1)=dead_n; 1036 | DEAD_A(r+1)=dead_a; 1037 | 1038 | %When the first node dies 1039 | if (dead==1) 1040 | if(flag_first_dead==0) 1041 | first_dead=r 1042 | flag_first_dead=1; 1043 | end 1044 | end 1045 | 1046 | countCHs=0; 1047 | cluster=1; 1048 | for i=1:1:n 1049 | if(s(i).E>0) 1050 | temp_rand=rand; 1051 | if ( (s(i).G)<=0) 1052 | 1053 | %Election of Cluster Heads 1054 | if(temp_rand<= (p/(1-p*mod(r,round(1/p))))) 1055 | countCHs=countCHs+1; 1056 | packets_TO_BS=packets_TO_BS+1; 1057 | PACKETS_TO_BS(r+1)=packets_TO_BS; 1058 | 1059 | s(i).type='C'; 1060 | s(i).G=round(1/p)-1; 1061 | C(cluster).xd=s(i).xd; 1062 | C(cluster).yd=s(i).yd; 1063 | plot(s(i).xd,s(i).yd,'k*'); 1064 | 1065 | distance=sqrt( (s(i).xd-(s(n+1).xd) )^2 + (s(i).yd-(s(n+1).yd) )^2 ); 1066 | C(cluster).distance=distance; 1067 | C(cluster).id=i; 1068 | X(cluster)=s(i).xd; 1069 | Y(cluster)=s(i).yd; 1070 | cluster=cluster+1; 1071 | 1072 | %Calculation of Energy dissipated 1073 | distance; 1074 | if (distance>do) 1075 | s(i).E=s(i).E- ( (ETX+EDA)*(4000) + Emp*4000*( distance*distance*distance*distance )); 1076 | end 1077 | if (distance<=do) 1078 | s(i).E=s(i).E- ( (ETX+EDA)*(4000) + Efs*4000*( distance * distance )); 1079 | end 1080 | end 1081 | 1082 | end 1083 | energy=energy+s(i).E; 1084 | end 1085 | end 1086 | 1087 | STATISTICS(r+1).CLUSTERHEADS=cluster-1; 1088 | CLUSTERHS(r+1)=cluster-1; 1089 | 1090 | %Election of Associated Cluster Head for Normal Nodes 1091 | for i=1:1:n 1092 | if ( s(i).type=='N' & s(i).E>0 ) 1093 | if(cluster-1>=1) 1094 | min_dis=sqrt( (s(i).xd-s(n+1).xd)^2 + (s(i).yd-s(n+1).yd)^2 ); 1095 | min_dis_cluster=1; 1096 | for c=1:1:cluster-1 1097 | temp=min(min_dis,sqrt( (s(i).xd-C(c).xd)^2 + (s(i).yd-C(c).yd)^2 ) ); 1098 | if ( tempdo) 1107 | s(i).E=s(i).E- ( ETX*(4000) + Emp*4000*( min_dis * min_dis * min_dis * min_dis)); 1108 | end 1109 | if (min_dis<=do) 1110 | s(i).E=s(i).E- ( ETX*(4000) + Efs*4000*( min_dis * min_dis)); 1111 | end 1112 | %Energy dissipated 1113 | if(min_dis>0) 1114 | s(C(min_dis_cluster).id).E = s(C(min_dis_cluster).id).E- ( (ERX + EDA)*4000 ); 1115 | PACKETS_TO_CH(r+1)=n-dead-cluster+1; 1116 | end 1117 | 1118 | s(i).min_dis=min_dis; 1119 | s(i).min_dis_cluster=min_dis_cluster; 1120 | 1121 | end 1122 | end 1123 | end 1124 | 1125 | 1126 | energy=energy/(n-dead); 1127 | figure(33); 1128 | xlabel('Round'); 1129 | ylabel('average energy of network'); 1130 | hold on; 1131 | plot(r,energy,'red.'); 1132 | figure(22); 1133 | hold on; 1134 | plot(r,dead,'black .'); 1135 | end 1136 | 1137 | 1138 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% STATISTICS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1139 | % % 1140 | % DEAD : a rmax x 1 array of number of dead nodes/round 1141 | % DEAD_A : a rmax x 1 array of number of dead Advanced nodes/round 1142 | % DEAD_N : a rmax x 1 array of number of dead Normal nodes/round 1143 | % CLUSTERHS : a rmax x 1 array of number of Cluster Heads/round 1144 | % PACKETS_TO_BS : a rmax x 1 array of number packets send to Base Station/round 1145 | % PACKETS_TO_CH : a rmax x 1 array of number of packets send to ClusterHeads/round 1146 | % first_dead: the round where the first node died 1147 | % % 1148 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1149 | 1150 | 1151 | 1152 | 1153 | 1154 | 1155 | --------------------------------------------------------------------------------