📄 emrpc.cpp
字号:
// EMRPC.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "math.h"
//计算节点i一次成功传输前的重传次数
int fun_re_trans(int Nre_trans_i);
//计算第i条路径能量权重
float fun_Wenergy(float Ptx_i,float Eremain_i,float Prx_i_1,float Eremain_i_1,int Nre_trans_i);
//计算第i条路径的队列权重
double fun_Wqueue(int Nqueue_i);
//EMRPC路径算法,计算路径权重
double fun_EMRPC();
int main(int argc, char* argv[])
{
printf("Hello World!\n");
printf("%f",fun_EMRPC());
return 0;
}
/************************************************************************/
/*计算节点i一次成功传输前的重传次数 */
/************************************************************************/
int fun_re_trans(int Nre_trans_i){
return 1+Nre_trans_i;
}
/************************************************************************/
/*计算第i条路径能量权重 */
/************************************************************************/
float fun_Wenergy(float Ptx_i,float Eremain_i,float Prx_i_1,float Eremain_i_1,int Nre_trans_i){
return (Ptx_i/Eremain_i+Prx_i_1/Eremain_i_1)*fun_re_trans(Nre_trans_i);
}
/************************************************************************/
/*计算第i条路径的队列权重 */
/************************************************************************/
double fun_Wqueue(int Nqueue_i){
return log(1+Nqueue_i);
}
/************************************************************************/
/*EMRPC路径算法 */
/************************************************************************/
double fun_EMRPC(){
//a,b 是用来平衡Wenergy和Wqueue的权重因子
float a,b;
//设定权重因子
printf("请输入平衡Wenergy和Wqueue的权重因子a和b\n");
printf("a:");
scanf("%f",&a);
printf("b:");
scanf("%f",&b);
//路径数n
int n;
printf("请输入路径数目n:");
scanf("%d",&n);
//EMRPC算法参数定义
float Ptx_i;//节点i的发射消耗能量
float Eremain_i;//节点i的剩余能量
float Prx_i_1;//下一跳节点的接收消耗能量
float Eremain_i_1;//下一跳节点的剩余能量
int Nre_trans_i;//节点i在上一次成功传输前的重传次数
int Nqueue_i;//节点i的队列长度
//W是计算所得的路径权重
double W=0;
for (int i=1;i<=n;i++)
{
printf("计算第%d条路径权重\n",i);
printf("计算第%d条路径的能量权重Wenergy\n",i);
printf("输入第%d条路径的能量权重参数:\n",i);
printf("Ptx_%d(节点%d 的发射消耗能量):",i,i);
scanf("%f",&Ptx_i);
printf("Prx_%d_1(下一跳节点的接收消耗能量):",i);
scanf("%f",&Prx_i_1);
printf("Eremain_%d(节点%d的剩余能量):",i,i);
scanf("%f",&Eremain_i);
printf("Eremain_%d_1(下一跳节点的剩余能量):",i);
scanf("%f",&Eremain_i_1);
printf("Nre_trans_%d(节点%d在上一次成功传输前的重传次数):",i,i);
scanf("%d",&Nre_trans_i);
printf("计算第%d条路径的队列权重Wqueue\n",i);
printf("输入第%d条路径的队列权重参数:\n",i);
printf("Nre_trans_%d(节点%d的队列长度):",i,i);
scanf("%d",&Nqueue_i);
W+=a*fun_Wenergy(Ptx_i,Eremain_i,Prx_i_1,Eremain_i_1,Nre_trans_i)+b*fun_Wqueue(Nqueue_i);
}
return W;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -