決策模型(一):不肯定型決策法



前言

所謂的不肯定型的決策是指決策者對環境狀況一無所知。這時決策者是根據本身的主觀傾向進行決策,由決策者的主觀態度的不一樣基本可分爲四種準則:悲觀主義決策準則、樂觀主義決策準則、等可能性準則、最小機會損失決策準則。下面將以一個例子來講明這幾種決策準則。html

設某工廠是按批生產某產品並按批銷售,每件產品的成本爲30元,批發價爲每件35元,若每個月生產的產品當月銷售不完,則每件損失1元。工廠每投產一批是10件,最大月生產能力是40件,決策者可選者的方案能夠是 0 件、10 件、20 件、30 件、40 件。假設決者對其產品的需求狀況一無所知。問該決策者該如何決策?java

要想解決上訴問題,必須先知道決策矩陣。從問題中咱們知道決策者可選的決策方案有五種,這是他們的策略集合,記作 {Si},i = 1,2,···,5。通過咱們分析,可判定將發生五種銷售狀況:銷售 0 件、10 件、20 件、30 件、40 件,可是不知道他們發生的機率。這就是事件集合。記作{Ej>},j=1,2,···,5。而對於每一個 」策略—事件「 對均可以計算出相應的收益值或損失值。例如單選擇月產量爲 20 件時,銷售爲 10 件。這時收益值爲:spa

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

所以能夠將每個 」策略—事件「 對對應的收益值或損失值求出,記作 aij,將這些數據彙總在一個矩陣中,以下所示:htm

(策略\事件) 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

這就是決策矩陣,根據決策矩陣中元素所示的含義不一樣,可稱爲收益矩陣,損失矩陣,風險矩陣,後悔矩陣等。blog

悲觀主義(max min)決策準則

定義

悲觀主義決策又被稱爲保守主義決策準則,他分析各類最壞的可能結果,而後從中選擇最好的,以它對應的策略爲決策策略,用符合表示爲 max min 決策準則。事件

計算步驟

在收益矩陣中先從各策略所對應的結果中選出最小值,將他們至於表的最右列,而後今後列中選出最大值,以他對應的策略爲決策者應選的決策策略。ci

計算公式

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

計算結果
(策略\事件) 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);
}

總結

在不肯定型的決策中是因人、因地、因時選擇決策準則的,可是在實際中當決策者面臨不肯定型決策問題時,首先是獲取有關各事件發生的信息。使不肯定型決策問題轉化爲風險決策。下篇將討論風險決策。

參考

相關文章
相關標籤/搜索