决策模型(一):不确定型决策法



前言

所谓的不确定型的决策是指决策者对环境情况一无所知。这时决策者是根据自己的主观倾向进行决策,由决策者的主观态度的不同基本可分为四种准则:悲观主义决策准则、乐观主义决策准则、等可能性准则、最小机会损失决策准则。下面将以一个例子来说明这几种决策准则。

设某工厂是按批生产某产品并按批销售,每件产品的成本为30元,批发价为每件35元,若每月生产的产品当月销售不完,则每件损失1元。工厂每投产一批是10件,最大月生产能力是40件,决策者可选者的方案可以是 0 件、10 件、20 件、30 件、40 件。假设决者对其产品的需求情况一无所知。问该决策者该如何决策?

要想解决上诉问题,必须先知道决策矩阵。从问题中我们知道决策者可选的决策方案有五种,这是他们的策略集合,记做 {Si},i = 1,2,···,5。经过我们分析,可断定将发生五种销售情况:销售 0 件、10 件、20 件、30 件、40 件,但是不知道他们发生的概率。这就是事件集合。记做{Ej>},j=1,2,···,5。而对于每个 ”策略—事件“ 对都可以计算出相应的收益值或损失值。例如单选择月产量为 20 件时,销售为 10 件。这时收益值为:

10 x (35 - 30) - 1 x (20 - 10) = 40 元

因此可以将每一个 ”策略—事件“ 对对应的收益值或损失值求出,记做 aij,将这些数据汇总在一个矩阵中,如下所示:

(策略\事件) E1 = 0 E2 = 10 E3 = 20 E4 = 30 E5 = 40
S1 = 0 0 0 0 0 0
S2 = 10 -10 50 50 50 50
S3 = 20 -20 40 100 100 100
S4 = 30 -30 30 90 150 150
S5 = 40 -40 20 80 140 200

这就是决策矩阵,根据决策矩阵中元素所示的含义不同,可称为收益矩阵,损失矩阵,风险矩阵,后悔矩阵等。

悲观主义(max min)决策准则

定义

悲观主义决策又被称为保守主义决策准则,他分析各种最坏的可能结果,然后从中选择最好的,以它对应的策略为决策策略,用符合表示为 max min 决策准则。

计算步骤

在收益矩阵中先从各策略所对应的结果中选出最小值,将他们至于表的最右列,然后从此列中选出最大值,以他对应的策略为决策者应选的决策策略。

计算公式

S*k \(\rightarrow\) max min (aij )

计算结果
(策略\事件) E1 = 0 E2 = 10 E3 = 20 E4 = 30 E5 = 40 min
S1 = 0 0 0 0 0 0 0 \(\longleftarrow\) max
S2 = 10 -10 50 50 50 50 - 10
S3 = 20 -20 40 100 100 100 - 20
S4 = 30 -30 30 90 150 150 - 30
S5 = 40 -40 20 80 140 200 - 40

根据 max min 决策准则有

max (0 , - 10 , - 20, - 30 , - 40) = 0

对应的决策策略为 S1,为决策者选择的策略。在本例中为 “什么也不生产”,这个结论似乎很荒谬,但是在实际生产中表示先看一看,以后再做决定。

计算代码
/**
 * 悲观主义决策
 * @matrix 决策矩阵
 * @row 决策矩阵行数
 * @col 决策矩阵列数
 */
public static void maxMin(double[][] matrix, int row, int col){
    double[] maxMar = new double[row];
    for (int i = 0; i < row; i++) {
        double min = matrix[i][0]; //让第一个最小
        for (int j = 1; j < col; j++) {
            if(matrix[i][j] < min){
                min = matrix[i][j];
            }
        }
        maxMar[i] = min;
    }
    System.out.println(Arrays.toString(maxMar));
    double max = maxMar[0];
    for (int i = 0; i < row; i++) {
        if(maxMar[i] > max){
            max = maxMar[i];
        }
    }
    System.out.println("悲观主义决策结果:"+max);
}

乐观主义(max max)决策准则

定义

持有乐观主义决策准则的决策者对待风险的态度与悲观主义者不同,他不会放过任何一个获得最好结果的机会。来争取好中之好的乐观态度来选择他的决策策略。

计算步骤

决策者在分析收益矩阵各”策略—事件“对的结果中选出最大者,记在表的最右列。再从该列数值中选出最大者,以它对应的策略为决策策略。

计算公式

S*k \(\rightarrow\) max max (aij )

计算结果
(策略\事件) E1 = 0 E2 = 10 E3 = 20 E4 = 30 E5 = 40 min
S1 = 0 0 0 0 0 0 0
S2 = 10 -10 50 50 50 50 50
S3 = 20 -20 40 100 100 100 100
S4 = 30 -30 30 90 150 150 150
S5 = 40 -40 20 80 140 200 200 \(\longleftarrow\) max

根据 max max 决策准则有

max (0 , 50 , 100, 150 , 200) = 200

对应的决策策略为 S5,为决策者选择的策略。也就是选择每月生产 40 件。

计算代码
/**
 * 乐观主义决策
 * @matrix 决策矩阵
 * @row 决策矩阵行数
 * @col 决策矩阵列数
 */
public static void maxMax(double[][] matrix, int row, int col){
    double[] maxMar = new double[row];
    for (int i = 0; i < row; i++) {
        double max = matrix[i][0]; //让第一个最大
        for (int j = 1; j < 5; j++) {
            if(matrix[i][j] > max){
                max = matrix[i][j];
            }
        }
        maxMar[i] = max;
    }
    System.out.println(Arrays.toString(maxMar));
    double max = maxMar[0];
    for (int i = 0; i < row; i++) {
        if(maxMar[i] > max){
            max = maxMar[i];
        }
    }
    System.out.println("乐观主义决策结果:"+max);
}

等可能性(Laplace)准则

定义

等可能性(Laplace)准则是19世纪数学家 Laplace 提出的。该准则认为所以事件发生的概率是相等的。也就是每一事件发生的概率都是 1 / 事件数。

计算步骤

决策者先计算各策略的收益期望值,然后在所有这些期望值中选择最大者。以它对应的策略为决策策略。

计算公式

S*k \(\rightarrow\) max { E ( Si ) }

计算结果
(策略\事件) E1 = 0 E2 = 10 E3 = 20 E4 = 30 E5 = 40 E (Si) = \(\sum_{j} pa_{ij}\)
S1 = 0 0 0 0 0 0 0
S2 = 10 -10 50 50 50 50 38
S3 = 20 -20 40 100 100 100 64
S4 = 30 -30 30 90 150 150 78
S5 = 40 -40 20 80 140 200 80 \(\longleftarrow\) max

在本例中 P = \(\frac{1}{5}\),期望值

max { E ( Si ) } = max {0, 38, 64, 78, 80 } = 80

对应的策略 S5 为决策策略

计算代码
/**
 * 等概率准则决策
 * @matrix 决策矩阵
 * @row 决策矩阵行数
 * @col 决策矩阵列数
 */
public static void laplace(double[][] matrix, int row, int col){
    double[] maxMar = new double[row];
    for (int i = 0; i < row; i++) {
        double sum = 0;
        for (int j = 0; j < col; j++) {
            sum += matrix[i][j];
        }
        maxMar[i] = sum / col;
    }
    System.out.println(Arrays.toString(maxMar));
    double max = maxMar[0];
    for (int i = 0; i < row; i++) {
        if(maxMar[i] > max){
            max = maxMar[i];
        }
    }
    System.out.println("等概率准则决策结果:"+max);
}    

最小机会损失决策准则

定义

最小机会损失决策策略又被称为最小遗憾值决策准则或 Savage 决策准则。首先要将收益矩阵中的各元素变换为每一 “策略—事件” 对的机会损失值(遗憾值,后悔值)。其含义是:当某一事件发生后,由于决策者没有选用收益最大的策略,而形成的损失值。

计算步骤

首先计算出当发生 k 事件后,各策略的收益最大值

aik = max ( aik )

这时各策略的机会损失值为

\(a'_{ik}\) = { max ( aik ) - aik }

从所有最大机会损失值中选取最小者,它对应的策略为决策策略。

计算公式

S*k \(\rightarrow\) min max \(a'_{ik}\)

计算结果(该矩阵为损失矩阵)
(策略\事件) E1 = 0 E2 = 10 E3 = 20 E4 = 30 E5 = 40 max
S1 = 0 0 50 100 150 200 200
S2 = 10 10 0 50 100 150 150
S3 = 20 20 10 0 50 100 100
S4 = 30 30 20 10 0 50 50
S5 = 40 40 30 20 10 0 40 \(\longleftarrow\) min

决策结果为

min {200, 150, 100, 50, 40 } = 40

对应的策略 S5 为决策策略。在分析产品废品率时,应用本决策准则就比较方便。

计算代码
/**
 * 最小机会损失决策
 * @matrix 决策矩阵
 * @row 决策矩阵行数
 * @col 决策矩阵列数
 */
public static void savage(double[][] matrix, int row, int col){
    //损失矩阵
    double[][] loss = new double[row][col];
    for (int j = 0; j < col; j++) {
        double max = matrix[0][j]; //先定每一列的第一个最大
        for (int i = 1; i < row; i++) {
            if(matrix[i][j] > max){
                max = matrix[i][j];
            }
        }
        //损失矩阵中对应位置的值 = 决策矩阵中列最大值 - 决策矩阵中对应位置值
        for (int i = 0; i < row; i++) {
            loss[i][j] = max - matrix[i][j];
        }
    }
    //此时损失矩阵已经求出
    double[] maxMar = new double[row];
    for (int i = 0; i < row; i++) {
        double max = loss[i][0]; //让第一个最大
        for (int j = 1; j < col; j++) {
            if(loss[i][j] > max){
                max = loss[i][j];
            }
        }
        maxMar[i] = max;
    }
    System.out.println(Arrays.toString(maxMar));
    double min = maxMar[0];
    for (int i = 0; i < row; i++) {
        if(maxMar[i] < min){
            min = maxMar[i];
        }
    }
    System.out.println("最小机会损失决策结果:"+min);
}

折中主义准则

定义

当用 min max 决策准则或 max max 决策准则来处理问题时,有的决策者认为这样它极端了。于是提出把这两种决策准则给予综合,令 a 为乐观系数,且 0 < a < 1。

计算步骤

\(a^i_{max}\)\(a^i_{min}\)分别表示第 i策略可能得到最大收益值与最小收益值。根据下列关系式

\(H_i\)= \(a*a^i_{max}\) + \((1-a)a*a^i_{min}\)

将计算出的 \(H_i\) 记在矩阵表右侧,然后选择其中的最大者,对应的策略即为决策策略

计算公式

S*k \(\rightarrow\) max { H }

计算结果(设 a = 1/3)
(策略\事件) E1 = 0 E2 = 10 E3 = 20 E4 = 30 E5 = 40 \(H_i\)
S1 = 0 0 0 0 0 0 0
S2 = 10 -10 50 50 50 50 10
S3 = 20 -20 40 100 100 100 20
S4 = 30 -30 30 90 150 150 30
S5 = 40 -40 20 80 140 200 40 \(\longleftarrow\) max

决策结果为

min {0, 10, 20, 30, 40 } = 40

对应的策略 S5 为决策策略。

计算代码
/**
 * 折中主义决策
 * @matrix 决策矩阵
 * @row 决策矩阵行数
 * @col 决策矩阵列数
 * @a 乐观系数
 */
public static void eclecticism(double[][] matrix, int row, int col,double a){
    double[] H = new double[row];
    for (int i = 0; i < row; i++) {
        double max = matrix[i][0]; //让第一个最大
        double min = matrix[i][0]; //让第一个最小
        for (int j = 1; j < col; j++) {
            if(matrix[i][j] > max){
                max = matrix[i][j];
            }
            if(matrix[i][j] < min){
                min = matrix[i][j];
            }
        }
        //对运算结果四舍五入,保留两位小数
        H[i] = new BigDecimal(a*max + (1-a) * min).setScale(2, RoundingMode.UP).doubleValue();
    }
    System.out.println(Arrays.toString(H));
    double max = H[0];
    for (int i = 0; i < row; i++) {
        if(H[i] > max){
            max = H[i];
        }
    }
    System.out.println("折中主义准则决策结果:"+max);
}

总结

在不确定型的决策中是因人、因地、因时选择决策准则的,但是在实际中当决策者面临不确定型决策问题时,首先是获取有关各事件发生的信息。使不确定型决策问题转化为风险决策。下篇将讨论风险决策。

参考

posted @ 2018-11-04 20:26 Dmego 阅读(...) 评论(...) 编辑 收藏