این کد مصرف انرژی سرخوشه ها در لیچ:
کد:
if ( S(f1).chd>d0)
S(f1).E=S(f1).E- ( (ETX+EDA)*(4000) + Emp*4000*( S(f1).chd.^4 ));
end
if (S(f1).chd<=d0)
S(f1).E=S(f1).E- ( (ETX+EDA)*(4000) + Efs*4000*( S(f1).chd.^2 ));
end
loadInd1= ([S(sIndexTemp).ch]==S(f1).index);%all node indecis that send information from border to inside cluster head like O->ch->ch
load=sum([S(loadInd1).degree]);% if a ch give four nodes, after that, this ch select self ch with three given nodes then the last ch degree would bee 7
S(f1).E= S(f1).E-( (ERX + EDA)*4000 )*load;
% hold on; plot( S(f1).x,S(f1).y,'gs','markersize',6,'markerfacecolor','k' )
در حین جمع اوری داده توسط سرخوشه ها به تعداد نود هایی که داده را به سرخوشه ارسال می کنند، یعنی همون لود، از انرژی اولیه سرخوشه کم می شود (سطر 7 به پایین) ولی در حین ارسال از سرخوشه به سینک، همه بسته ها به یک بسته تبدیل می شوند (فشردگی و حذف افزونگی) و با توجه به اینکه فاصله آن با سینک چقدر هست، یکی از حالات بالا رخ می دهد (سطر 1 تا 6).
در مورد نود های عادی هم به شکل زیر می باشد:
کد:
if ( S(f2).chd>d0)
S(f2).E=S(f2).E- ( ETX*(4000) + Emp*4000*( S(f2).chd.^4));
end
if (S(f2).chd<=d0)
S(f2).E=S(f2).E- ( ETX*(4000) + Efs*4000*(S(f2).chd.^2));
end
فرمول مصرف انرژی هم مطابق با کد بالاست، اون پارمتر ها هم که شاید می دونید ولی باز میگم:
- : ETX انرژی مصرفی مدار در حین ارسال یک بیت
- : ERX انرژی مصرفی مدار در حین دریافت یک بیت
- : EDA انرژی مصرفی به ازای هر بیت در حین جمع اوری (فقط در سرخوشه ها استفاده میشه)
- : EMP انرژی مصرفی برای تقویت سیگنال برای فواصل بیشتر از فاصله پایه (87 متر تقرریبا)
- : EFS انرژی مصرفی برای تقویت سیگنال برای فواصل کمتر از فاصله پایه (87 متر تقرریبا)
- load : تعداد نودهای متصل شده به هر یک از سرخوشه ها
- d0: فاصله پایه