S*k\(\rightarrow\) max \(\sum_{j} p_ju_{ij}\)
计算结果 (策略\事件) E1 = 0 E2 = 10 E3 = 20 E4 = 30 E5 = 40 EUV(t=2)事件概率(pj) 0.1 0.2 0.4 0.2 0.1
S1 = 0 0.03 0.03 0.03 0.03 0.03 0.03
S2 = 10 0.02 0.14 0.14 0.14 0.14 0.128
S3 = 20 0.01 0.11 0.34 0.34 0.34 0.261
S4 = 30 0.0 0.09 0.29 0.63 0.63 0.323
S5 = 40 0.0 0.06 0.25 0.56 1.0 0.324 \(\longleftarrow\) max
根据 EUV决策准则有
max (0.03, 0.128 , 0.261, 0.323, 0.324) = 0.324
对应的决策策略为 S5,为决策者选择的策略。
计算代码 /** * 效用曲线拟合(EUV) * @param matrix * @param row * @param col */ private static void EUV(double[][] matrix, double a, int row, int col){ //先求出收益矩阵中的最大值与最小值 double min = matrix[1][0]; double max = matrix[1][0]; for (int i = 2; i < row; i++) { for (int j = 0; j < col; j++) { if(matrix[i][j] > max){ max = matrix[i][j]; } if(matrix[i][j] < min){ min = matrix[i][j]; } } } System.out.println("min="+min+"max="+max); //然后求出效用值矩阵 /*计算方法 小于最小值(a) => 0 大于最大值(b) => 1 介于之间=> (x-a/b-a)^t,其中t为效用曲线系数 */ double[][] avail = new double[row+1][col]; for (int i = 1; i <= row; i++) { for (int j = 0; j < col; j++) { avail[0][j] = matrix[0][j]; //将自然状态概率复制到第一行中 if(matrix[i][j] <= min){ avail[i][j] = 0.0; }else if(matrix[i][j] >= max){ avail[i][j] = 1.0; }else { double pow = Math.pow((matrix[i][j] - min) / (max - min), t); avail[i][j] = new BigDecimal(pow).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); } } } for (int i = 0; i < row; i++) { System.out.println(Arrays.toString(avail[i])); } //再求期望效用值 double[] maxMar = new double[row+1]; double availMax = 0.0; //效用期望最大值 int maxIndex = 0; double temp = 0.0; double chance = 0.0; for (int i = 1; i <= row; i++) { for (int j = 0; j < col; j++) { chance = avail[0][j]; //自然概率 temp = (j != 0) ? (temp + avail[i][j]*chance) : (avail[i][j]*chance); } double value =new BigDecimal(temp).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue(); maxMar[i] = value; if(i == 1){ availMax = value; maxIndex = 1; } else if(value > availMax){ availMax = value; maxIndex = i; } } System.out.println(Arrays.toString(maxMar)); System.out.println(availMax+"--"+maxIndex); } 总结至此,决策模型模块的所有算法模型都分析,建立并实现完成。
参考运筹学(第4版)本科版