m基于VCG拍卖机制的认知无线电频谱竞拍共享算法matlab仿真
1.算法描述
认知无线电的概念起源于1999年Joseph Mitolo博士的奠基性工作,其核心思想是CR具有学习能力,能与周围环境交互信息,以感知和利用在该空间的可用频谱,并限制和降低冲突的发生。CR的学习能力是使它从概念走向实际应用的真正原因。有了足够的人工智能,它就可能通过吸取过去的经验来对实际的情况进行实时响应,过去的经验包括对死区、干扰和使用模式等的了解。这样,CR有可能赋予无线电设备根据频带可用性、位置和过去的经验来自主确定采用哪个频带的功能。随着许多CR相关研究的展开,对CR技术存在多种不同的认识。最典型的一类是围绕Mitola博士提出的基于机器学习和模式推理的认知循环模型来展开研究,他们强调软件定义无线电(Software Defined Radio,SDR)是CR实现的理想平台。
针对CR研究中存在的多种描述,美国FCC提出了CR的一个相当简化的版本。他们在FCC-03322中建议任何具有自适应频谱意识的无线电都应该被称为认知无线电CR。FCC更确切地把CR定义为基于与操作环境的交互能动态改变其发射机参数的无线电,其具有环境感知和传输参数自我修改的功能。CR是一种新型无线电,它能够在宽频带上可靠地感知频谱环境,探测合法的授权用户(主用户)的出现,能自适应地占用即时可用的本地频谱,同时在整个通信过程中不给主用户带来有害干扰。无线电环境中的无线信道和干扰是随时间变化的,这就暗示CR将具有较高的灵活性。目前,CR的应用大多是基于FCC的观点,因此也称CR为频谱捷变无线电、机会频谱接入无线电等。
---------------------------------------------------
认知无线电技术是目前解决频谱资源利用不均衡的一种有效方法,其中,动态频谱分配是实现频谱资源共享的关键技术。在认知无线电系统中,认知用户的最终目的是充分使用空闲频段。在认知无线电系统中,由于与授权用户共存以及可用频段的跨度很大这两个问题,使得频谱共享技术在认知无线电系统中显得尤为重要。在CR系统中,认知用户需要根据频谱检测的结果去分配可用频谱。在多认知用户的系统中,可能会有多个认知用户想要使用可用频谱,而它们同时接入可能会导致碰撞冲突,所以认知无线电系统需要专门的频谱共享算法去解决这个问题。
在当前无线频谱资源严重不足的情况下,如何能够将频谱池中的空闲频谱合理地分配给有需要的认知用户,需要通过资源配置算法来实现。传统的协作式频谱共享技术都是假设各认知用户会按照自己的实际需要上报自己的需求,但是在资源不足的场景中,各个认知用户可能出于自私等原因会虚报自己的频谱需求,我们提出一种克服用户自私性的频谱共享算法。
VCG拍卖是更一般的特定用途 VCG机制。当VCG拍卖尝试对商品进行社会最优分配时,VCG机制允许从一组可能的结果中选择社会最优的结果。如果竞标者之间可能发生勾结,则VCG的表现将优于 广义第二价拍卖 为卖方产生的收入和分配效率。VCG机制满足激励兼容和个体理性的条件,并且在所有分配单物品的有效,激励兼容且个体理性的机制中,VCG机制使得每个竞拍者的期望支付最大化.
Vickrey–Clarke–Groves(VCG)拍卖 是多件物品的密封竞价拍卖的一种。投标人提交的投标书将报告其对这些物品的估价,而不知道其他投标人的投标书。拍卖系统将物品分配到 社会最优 方式:向每个人收取他们对其他投标人造成的伤害。它给竞标者 激励他们竞标其真实估值,通过确保每个投标人的最佳策略是对项目的真实估值进行投标;竞标者串通可能会破坏它,特别是在某些情况下,单个竞标者以不同的名称进行多次竞标会破坏这一点。它是一个 Vickrey拍卖会 用于多个项目。
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB核心程序
for nn = 1:M nn TIME = 10000; NUM = 0; %信道lemda lemda2 = 1/1000 + (1/100-1/1000)*rand(N,1);%1/1000 ~ 1/100的均匀分布 hi = zeros(nn,1); for t = 1:TIME %Step 1,算法执行的开始,对参加竞价的次用户数等进行初始化。 hi = rand(nn,1); hicr = rand(nn,1); IIs = []; for i = 1:nn fail = 1; %授权用户出现的概率 P = rand; P2 = rand; while fail == 1 if P2 < 0.01%有认知用户 %Step 2,计算出次用户 i 对频谱 j 的估价vi for j =1:N Vi1(j) = 1 - lemda(j)/(log2(1+hi(i)*p/No)); Vi2(j) = 1 - lemda2(j)/(log2(1+hicr(i)*p/No)); end %Step 3,计算出每个次用户最终提交的竞标价格bi for mm1 =1:N bi1(j) = Vi1(j) - randn(1); bi2(j) = Vi2(j) - randn(1); end %Step 4,比较每个次用户的估价价格和自己提交的竞价价格的大小,如果估价 %价格小于竞标价格,说明频谱 j 不适合次用户 i,返回到 Step 2,否则 %直接执行下一步。 for mm1 =1:N Vi_bi1(j) = Vi1(j) - bi1(j); Vi_bi2(j) = Vi2(j) - bi2(j); end Vi_bi = [Vi_bi1,Vi_bi2]; else%无认知用户 %Step 2,计算出次用户 i 对频谱 j 的估价vi for j =1:N Vi(j) = 1 - lemda(j)/(log2(1+hi(i)*p/No)); end %Step 3,计算出每个次用户最终提交的竞标价格bi for mm1 =1:N bi(j) = Vi(j) - randn(1); end %Step 4,支付机制Vi_bi for mm1 =1:N Vi_bi(j) = Vi(j) - bi(j); end end %去掉小于0的 Ind1 = find(Vi_bi>0); if isempty(Ind1)==1 fail = 1; else%没有中断,则选择%Step 5,找出最大的竞标价格及对应的次用户 i。 [VV,II] = max(Vi_bi); fail = 0; end end IIs=[IIs,II]; end %如果IIs前后不同,则说明成功,进行一次切换 for iis = 1:length(IIs)-1 if IIs(iis+1)~=IIs(iis) NUM = NUM+1; end end end PRO(nn) = NUM/TIME; end