1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y5qTm5Zy
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
VCG拍卖是更一般的特定用途 VCG机制。当VCG拍卖尝试对商品进行社会最优分配时,VCG机制允许从一组可能的结果中选择社会最优的结果。如果竞标者之间可能发生勾结,则VCG的表现将优于 广义第二价拍卖 为卖方产生的收入和分配效率。VCG机制满足激励兼容和个体理性的条件,并且在所有分配单物品的有效,激励兼容且个体理性的机制中,VCG机制使得每个竞拍者的期望支付最大化.
Vickrey–Clarke–Groves(VCG)拍卖 是多件物品的密封竞价拍卖的一种。投标人提交的投标书将报告其对这些物品的估价,而不知道其他投标人的投标书。拍卖系统将物品分配到 社会最优 方式:向每个人收取他们对其他投标人造成的伤害。它给竞标者 激励他们竞标其真实估值,通过确保每个投标人的最佳策略是对项目的真实估值进行投标;竞标者串通可能会破坏它,特别是在某些情况下,单个竞标者以不同的名称进行多次竞标会破坏这一点。它是一个 Vickrey拍卖会 用于多个项目。
4.部分源码
.........................................
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
....................
01-153m