蒙特卡洛算法模拟在线雇佣问题

使用蒙特卡洛算法,借助MATLAB编程模拟了在线雇佣问题[1],并得到了雇佣第几位应聘者与雇佣到分数大于98应聘者概率的变化曲线,具体结果见图1。分析可知,当雇佣第1位应聘者到雇佣第34位应聘者时,雇佣到分数大于98应聘者的概率逐渐增加;当雇佣第35位应聘者到雇佣第100位应聘者时,对应概率逐渐减少。故最优策略是雇佣第34位应聘者,这样得到的雇佣到分数大于98应聘者的概率最大,其值为52.26%。
在这里插入图片描述
图1 雇佣到分数大于98应聘者的概率与雇佣第几位应聘者的关系曲线

对应MATLAB代码如下:

a=[]; % 存储雇佣到分数应大于98聘者的概率
s=10000; % 模拟次数
for t=1:100 % 数值模拟中雇佣第t个应聘者
    k=0; 
    for i=1:s %开始模拟
        x=randperm(100); %100位应聘者随机排列
        best = max(x(1:t));
        best1 = x(find(x(t+1:100)>best,1)+t);
        if best1>98
            k=k+1; %统计每次模拟中雇佣到分数大于98的应聘者数目
        end
    end
    a(t)=k/s; %统计雇佣到最优应聘者的概率
end
[a_max a_] = max(a)
plot(a)
hold on 
% plot(a_,[1:a_max],'--');
line([a_,a_],[0,a_max],'color','k','linestyle','--');
hold on
line([0,a_],[a_max,a_max],'color','k','linestyle','--');
xlabel('雇佣的应聘者');
ylabel('雇佣到分数大于98应聘者的概率');

参考文献:

[1] Retrieved May 12, 2019, from https://blog.csdn.net/qq_41093189/article/details/79176763.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值