概述
最大载干比算法
最大载干比(Max C/D)算法的基本思想是基站根据用户反馈的信道状态信息,依据用户的接收信号瞬时载干比值进行优先级排序,并按该优先级顺序选择用户,保证在任意时刻总是瞬时载干比值最好的用户得到服务。如果在某一时隙T内有K个用户需要进行数据服务,用户n的载干比值为∈(n),那么被服务的用户n'为n'=arg max ((n))。
n=1,2,…,K
这种调度方法可以有效利用系统资源,提升系统吞吐量,且实现方法简单。其缺点是没有考虑系统各用户间的公平性。在实际系统中使用这种调度算法时,某些信道条件较差的用户一直无法获得调度机会,造成用户“饿死”现象。
C语言代码:
#include<stdio.h>
int main()
{
int a[1000],b[1000],c[1000],d[1000];
int i,j,k,w,x,y;
int n,sd,flag=1;
printf("输入用户个数:n");
scanf("%d",&n);
printf("输入用户载干比值:n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
// for(j=0;j<n;j++)
// {
// printf("%d",a[j]);
// }
// printf("n");
printf("输入用户需求长度:n");
for(i=0;i<n;i++)
{
scanf("%d",&b[i]);
}
// for(j=0;j<n;j++)
// {
// printf("%d",b[j]);
// }
// printf("n");
printf("输入处理速度:n");
scanf("%d",&sd);
for(i=0;i<n;i++)
{
c[i]=i+1;
d[i]=0;
}
for(i=0;i<n;i++)
{
for(k=0;k<n-i;k++)
{
if(a[k]<a[k+1])
{
w=a[k];
x=b[k];
y=c[k];
a[k]=a[k+1];
b[k]=b[k+1];
c[k]=c[k+1];
a[k+1]=w;
b[k+1]=x;
c[k+1]=y;
}
}
}
// for(j=0;j<n;j++)
// {
// printf("%d",a[j]);
// }
// printf("n");
//
// for(j=0;j<n;j++)
// {
// printf("%d",b[j]);
// }
// printf("n");
i=0;
while(flag!=0)
{
flag=0;
if(b[i]!=0&&b[i]>sd)
{
b[i]=b[i]-sd;
d[i]=d[i]+sd;
}
else if(b[i]!=0&&b[i]<=sd)
{
d[i]=d[i]+b[i];
b[i]=0;
i++;
}
for(j=0;j<n;j++)
{
printf("%d ",b[j]);
}
printf("n");
for(j=0;j<n;j++)
{
if(b[j]!=0)
{
flag=flag+1;
}
}
}
for(i=0;i<n;i++)
{
printf("用户%d用时%dn",c[i],d[i]+d[i-1]);
d[i]=d[i-1]+d[i];
}
}
实现效果:
最后
以上就是难过薯片为你收集整理的c语言实现最大载干比(Max C/I)算法(简易模型)的全部内容,希望文章能够帮你解决c语言实现最大载干比(Max C/I)算法(简易模型)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复