程式要求及作法
本作業大概可切割成以下三個PART:
PART1 讀輸入檔:以一函式
void initialize_p(int *T, int *K , int *i, int **d, double **p, int *M1, int *M2, int *S, int *H, int *C, int *Q1, int *Q2, int *L, int *A, int *R); 或
void initialize_r(int &T, int &K , int &i, int *&d, double *&p, int &M1, int &M2, int &S, int &H, int &C, int &Q1, int &Q2, int &L, int &A, int &R); 實作之
本問題相關資料,包括n、K、表一的機率分佈(d[k], p[k],k=0,…,K-1),及諸如M(包括M1, M2)、S、H、C、Q(包括Q1, Q2)、L、A、R 等參數必須存至一個名為「input.txt」
的文字檔。其格式定義如下:
T 10 􀃍 T = 10:總共模擬10 日
i 2 􀃍 I[0] = 2:期初之存缺貨量
K 5 􀃍 K = 5:總共有5 種不同的需求值
d 2 0.15 􀃍 d[0] = 2, p[0] = 15%:需求為2 單位的機率為15%
d 5 0.35 􀃍 d[1] = 5, p[1] = 35%:需求為5 單位的機率為35%
d 4 0.25 􀃍 d[2] = 4, p[2] = 25%:需求為4 單位的機率為25%
d 6 0.15 􀃍 d[3] = 6, p[3] = 15%:需求為6 單位的機率為15%
d 3 0.10 􀃍 d[4] = 3, p[4] = 10%:需求為3 單位的機率為10%
M 500 350 􀃍 M1 = 500, M2 = 350:兩種不同的單位製造成本
S 400 􀃍 S = 400
H 100 􀃍 H = 100
C 250 􀃍 C = 250
Q 6 12 􀃍 Q1 = 6, Q2 = 12
L 2 􀃍 L = 2
A 2 􀃍 A = 2
R 5 􀃍 R = 5
首先,必須在程式開頭宣告一個名為「Policy」的struct,其定義如下:
typedef struct {
int M, Q; //分別代表M1或M2,Q1或Q2
int *I, *O; //分別代表I[ ],O[ ]
int *DC; //代表日花費 DC[ ]
int TCost; //代表總花費
} Policy;
PART3.2 計算各機制每天之存缺貨量I[t]、訂貨量O[t]、日花費DC[t],及其總花費TCost
首先,I[0]=i(PART1 讀檔的第2 項),而O[0]=D[0]=DC[0]=0針對第一種用安全存貨量訂貨時機之機制(即P[0]&P[2]),以函式
void GetCost1(Policy *P, int T, int K , int i, int *D, int S, int H,int C, int L, int A) 實作,計算P.I[], P.O[], P.DC[]及P.TCost
針對第二種用再訂購點訂貨時機之機制(即P[1]&P[3]),以函式void GetCost2(Policy *P, int T, int K , int i, int *D, int S, int H,
int C, int L, int R) 實作,計算P.I[], P.O[], P.DC[]及P.TCost再以函式 void Print_Policy(Policy P, int T, int *D)將P[0],…,P[3]等四種
機制中總成本最小者之D[t]、O[t]、I[t]、DC[t]列印出來,t=0,…,T。