对于这样的一棵决策树进行灵敏度分析,首先我们来寻找可以被分析的参数——我这里寻找了六个参数——
- 第一次红白球在罐中的分别占比;
- 第二阶段红罐中的蓝绿占比;
- 第二阶段白罐中的蓝绿占比;
- 第一次参加支付的费用;
- 第二次参加支付的费用;
- 最后获得奖金的数量。
我们对于每一变量在初始条件下,对于以下四个决策变量进行分析:
- 第一次决策玩不玩(决策一)
- 抽到白球决定是不是继续玩(决策二)
- 抽到红球决定是不是继续玩(决策三)
- 对于期望收益(玩家)的影响(k)
利用matlab记录每一次迭代的最优解作为分析的基础——因为这里的决策变量和相关变量较少且决策变量均为简单的离散形式,所以我写的时候直接令其遍历求解。
给出代码如下:
因为情况本身不是很复杂我们不妨遍历所有的解
%先定义六个参数作为我们灵敏度分析变量;三个对应比例,三个对应钱数p1=0.55;%对应第一次抽取到红球的概率
p2=0.7;%对应白罐中抽取到蓝球的概率p3=0.1;%对应红罐中抽取到蓝球的概率a1= 10;%对应参与游戏的费用
a2= 10;%对应参与第二次抽奖
w = 50;%对应最终抽到蓝球的奖金接下来将进行遍历来寻求迭代最优解
% %定义一个初始矩阵代表 0-1 变量情况
% A=[0 1;
% 1 0];
% %定义一个初始解
% k=0;
% result=zeros(6,1);
% for i=1:2
% for j=1:2
% for m=1:2
% tem=[A(i,:) A(j,:) A(m,:)];
%
k0=tem(1)*(1-p1)*tem(3)*((w-a1-a2)*p2+(-a1-a2)*(1-p2))+tem(1)*(1-p1)*tem(4)*(-a1)+tem(1)*p1*
tem(5)*((w-a1-a2)*p3+(-a1-a2)*(1-p3))+tem(1)*p1*tem(6)*(-a1)+tem(2)*0;
% if k0>k
% k=k0;
% result=tem;
% end
% end
% end
% end
上述是初始部分,接下来需要利用上面的代码进行灵敏度分析
r1=[];
r2=[];
r3=[];
kCum=[];
for l=1:1000 %这里改变量进行不同的灵敏度分析w=0.1*l;
A=[0 1;
1 0];
%定义一个初始解k=0;
result=zeros(6,1); for i=1:2
for j=1:2 for m=1:2
tem=[A(i,:) A(j,:) A(m,:)];
k0=tem(1)*(1-p1)*tem(3)*((w-a1-a2)*p2+(-a1-a2)*(1-p2))+tem(1)*(1-p1)*tem(4)*(-a1)+tem(1)*p1*
tem(5)*((w-a1-a2)*p3+(-a1-a2)*(1-p3))+tem(1)*p1*tem(6)*(-a1)+tem(2)*0; if k0>k
k=k0; result=tem; end
end end end
r1=[r1 result(1)]; r2=[r2 result(3)]; r3=[r3 result(5)]; kCum=[kCum k]
end
plot(0.1:0.1:100,kCum,'-g')
需要注意的是,对于不同的参数进行灵敏度分析时需要及时对于上述主程序中的最外层参量调整为需要分析的参量;
三次决策中:1 代表选择玩 ;0 代表选择不玩。
结果说明
接下来我们看一下灵敏度分析的结果,我们拿最后奖金的金额举例子:
对于 w 的灵敏度分析