1. 程式人生 > >Matlab實用化小函式(2):庫存管理之庫存決策問題求解

Matlab實用化小函式(2):庫存管理之庫存決策問題求解

需求描述:《庫存管理(第二版)》     清華大學出版社       趙曉波,黃四民著  P74~P76例題5-2,詳細如圖:

 

(2)基於Matlab的庫存管理實現

%------------------------------功能描述------------------------------------
%函式功能:根據持貨成本、啟動成本和多期需求生成最優補貨決策
%引數:startCost   啟動成本 __in__
%引數:cargoCost   持貨成本 __in__
%引數:demand      多期需求矩陣 __in__
%引數:flag        任意指定的一個極大值,用於識別結果矩陣中的最小值
%引數:decisionMatrix 補貨決策矩陣 __out__
%------------------------------函式實現------------------------------------
function decisionMatrix = stockDecision(startCost, cargoCost, demand, flag)
%庫存管理問題求解
t = length(demand);
resault = ones(t + 1,t + 1)  * flag;
resault(t+1,1) = 0;

for i = 1:1:t   %外圍迴圈從1迴圈到t
    j = 0;
    tmp = 0;
    temp = 0;
    %生成第三項
    for k = 1:1:i
         %生成第二項1 <= j <= i -1  j * h * demand(t + 1 - i + j);     
        temp =  j * cargoCost * demand(1, t + 1 - i + j);   
        % 生成一個第二項就往上加  
        tmp = temp + tmp;
        %生成第三項 1 <= k <= i  min(t + 1 -i + k, :)
        resault(t+1-i, k) =  startCost + tmp + min(resault(t + 1 - i + k, :));
        j = j + 1;       
    end
end
decisionMatrix = resault;
end

(3)函式測試:

demand = [235, 147, 208, 191, 156, 94];
startCost = 800;
cargoCost = 3;
resault = stockDecision(startCost, cargoCost, demand, 1000000)

測試結果:

resault =

        4055        3696        4321        5290        6880        7490     1000000
        3255        3256        3652        4774        5102     1000000     1000000
        2632        2455        3109        3155     1000000     1000000     1000000
        1882        2068        1832     1000000     1000000     1000000     1000000
        1600        1082     1000000     1000000     1000000     1000000     1000000
         800     1000000     1000000     1000000     1000000     1000000     1000000
           0     1000000     1000000     1000000     1000000     1000000     1000000