組員:唐思琪、林書霆、柯炯名、簡佑臻、王婷、胡祐銓

Q1

set.seed(1111)
s = 1000      # 模擬次數
qty = 20*50*8 # 一天生產的量
dailychips = function(day=1){
  quality = sample(c(1,0), day*qty, prob = c(0.83, 0.17), replace = T) # 生產品質
  defective_accept = rbinom(1, sum(quality==0), prob = 0.1) # 瑕疵但被接受的數量
  good_accept = rbinom(1, sum(quality), prob = 0.95)        # 正常且被接受的數量
  accept = defective_accept + good_accept  # 被接受的數量
  good_accept_ratio = good_accept / accept # 被接受數量中,正常數量的佔比
  c(accept, good_accept_ratio)
}

stable = replicate(s, dailychips())   # 模擬紀錄表
result1 = sum(stable[2,] >= 0.98) / s # 至少有98%商品是正常被遞送的機率
result2 = sum(stable[1,] >= 6400) / s # 至少有6400艘是被接受的機率

print(paste0('(a) : ', result1))
[1] "(a) : 0.281"
print(paste0('(b) : ', result2))
[1] "(b) : 0.896"

Q2

montly = replicate(s, dailychips(30))
quarterly = replicate(s, dailychips(90))
hist(montly[2,], breaks = 20)

hist(quarterly[2,], breaks = 20)

shapiro.test(montly[1,])     # p值大於0.05, 接受假設(為常態分佈)

    Shapiro-Wilk normality test

data:  montly[1, ]
W = 0.99915, p-value = 0.9375
shapiro.test(quarterly[1,])  # p值大於0.05, 接受假設(為常態分佈)

    Shapiro-Wilk normality test

data:  quarterly[1, ]
W = 0.99816, p-value = 0.3539

Q3

library(EnvStats)
library(MASS)
library(dplyr)

S = 10000
full_load = 3800  # 每艘船的載貨量
per_cost = 7200
DGlou = rtri(S, min=4000, max=8000, mode=6000) %>% round(0) # Glou的需求量
DRock = rtri(S, min=4500, max=7500, mode=6000) %>% round(0) # Rock的需求量
byRick = runif(S, min=0.5, max=1.0) *full_load %>% round(0)          # 由Rick捕魚的每日生產量(比例)
byMorty = rtri(S, min=0.5, max=1, mode=0.75) *full_load %>% round(0) # 由Morty捕魚的每日生產量(比例)

# 兩地價格會互相影響(共變)
sigmaG = 0.5
sigmaR = 0.25
meanG = 3.5
meanR = 3.65
cor_GR = seq(-0.8,0.8,0.2)    # 所有Glou和Rock可能的相關係數

# 初始化存放空間
meanPayoff = matrix(nrow=length(cor_GR), ncol=4)
CVAR5 = matrix(nrow=length(cor_GR), ncol=4)

for (i in (1:length(cor_GR))){
  # Glou和Rock的共變異數
  cov_GR = sigmaG * sigmaR * cor_GR[i] 
  # 模擬在不同的相關係數下的共變異矩陣
  covMatrix = matrix(c(sigmaG^2, cov_GR, cov_GR, sigmaR^2), nrow=2)
  # 根據共變異矩陣結果不同,模擬10000次價格
  price = mvrnorm(S, mu = c(meanG, meanR), Sigma = covMatrix) 
  payoff = matrix(nrow=S, ncol=4) # 初始化策略總獲利表
  
  for (s in 1:S){
    # a) Rick goes to Glou and Morty goes to Rock
    payoff[s,1] = min(DGlou[s], byRick[s]) * price[s,1] + 
                  min(DRock[s], byMorty[s]) * price[s,2] - 2*per_cost
    # b) Rick goes to Rock and Morty goes to Glou
    payoff[s,2] = min(DRock[s], byRick[s]) * price[s,2] +
                  min(DGlou[s], byMorty[s]) * price[s,1] - 2*per_cost
    # c) Rick and Morty go to Glou
    payoff[s,3] = min(DGlou[s], (byRick[s] + byMorty[s])) * price[s,1] - 2*per_cost
    # d) Rick and Morty go to Rock
    payoff[s,4] = min(DRock[s], (byRick[s] + byMorty[s])) * price[s,2] - 2*per_cost

  }
  
  # 有4個strategy各自迭代計算出平均payoff和CVAR5
  for (j in c(1:4)){
    meanPayoff[i,j] = mean(payoff[,j])
    VAR5 = quantile(payoff[,j], probs = 0.05) # 最壞5%
    CVAR5[i,j] = payoff[which(payoff[,j]<= VAR5), j] %>% mean()
  }
}

(a)

plot(cor_GR, meanPayoff[,1], col='slateblue', lwd=2, type="l", ylim=c(4000, 6500), ylab = 'Avg. Payoff', xaxt="n")
lines(cor_GR, meanPayoff[,2], col='sienna1')
lines(cor_GR, meanPayoff[,3], col='lightskyblue')
lines(cor_GR, meanPayoff[,4], col='seagreen4')
axis(1, at = cor_GR)

(b)

plot(cor_GR, CVAR5[,1], col='slateblue', type="l", ylim=c(-3000, 2000), ylab = 'CVAR 5%', xaxt="n")
lines(cor_GR, CVAR5[,2], col='sienna1')
lines(cor_GR, CVAR5[,3], col='lightskyblue')
lines(cor_GR, CVAR5[,4], col='seagreen4')
axis(1, at = cor_GR)

Q4

bidding = function(n = 100000000){
  willing_to_pay = max(rnorm(n, mean = 3000000, sd = 350000))
}
two = replicate(2, bidding()) %>% max() %>% round()
three = replicate(3, bidding()) %>% max() %>% round()
ten = replicate(10, bidding()) %>% max() %>% round()
two; three; ten
[1] 4971453
[1] 5041671
[1] 5128140
LS0tCnRpdGxlOiAiSFcyX0dyb3VwMiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoK57WE5ZOh77ya5ZSQ5oCd55Cq44CB5p6X5pu46ZyG44CB5p+v54Kv5ZCN44CB57Ch5L2R6Ie744CB546L5am344CB6IOh56WQ6YqTCgojIyBRMQpgYGB7cn0Kc2V0LnNlZWQoMTExMSkKcyA9IDEwMDAgICAgICAjIOaooeaTrOasoeaVuApxdHkgPSAyMCo1MCo4ICMg5LiA5aSp55Sf55Si55qE6YePCmRhaWx5Y2hpcHMgPSBmdW5jdGlvbihkYXk9MSl7CiAgcXVhbGl0eSA9IHNhbXBsZShjKDEsMCksIGRheSpxdHksIHByb2IgPSBjKDAuODMsIDAuMTcpLCByZXBsYWNlID0gVCkgIyDnlJ/nlKLlk4Hos6oKICBkZWZlY3RpdmVfYWNjZXB0ID0gcmJpbm9tKDEsIHN1bShxdWFsaXR5PT0wKSwgcHJvYiA9IDAuMSkgIyDnkZXnlrXkvYbooqvmjqXlj5fnmoTmlbjph48KICBnb29kX2FjY2VwdCA9IHJiaW5vbSgxLCBzdW0ocXVhbGl0eSksIHByb2IgPSAwLjk1KSAgICAgICAgIyDmraPluLjkuJTooqvmjqXlj5fnmoTmlbjph48KICBhY2NlcHQgPSBkZWZlY3RpdmVfYWNjZXB0ICsgZ29vZF9hY2NlcHQgICMg6KKr5o6l5Y+X55qE5pW46YePCiAgZ29vZF9hY2NlcHRfcmF0aW8gPSBnb29kX2FjY2VwdCAvIGFjY2VwdCAjIOiiq+aOpeWPl+aVuOmHj+S4re+8jOato+W4uOaVuOmHj+eahOS9lOavlAogIGMoYWNjZXB0LCBnb29kX2FjY2VwdF9yYXRpbykKfQoKc3RhYmxlID0gcmVwbGljYXRlKHMsIGRhaWx5Y2hpcHMoKSkgICAjIOaooeaTrOe0gOmMhOihqApyZXN1bHQxID0gc3VtKHN0YWJsZVsyLF0gPj0gMC45OCkgLyBzICMg6Iez5bCR5pyJOTgl5ZWG5ZOB5piv5q2j5bi46KKr6YGe6YCB55qE5qmf546HCnJlc3VsdDIgPSBzdW0oc3RhYmxlWzEsXSA+PSA2NDAwKSAvIHMgIyDoh7PlsJHmnIk2NDAw6ImY5piv6KKr5o6l5Y+X55qE5qmf546HCgpwcmludChwYXN0ZTAoJyhhKSA6ICcsIHJlc3VsdDEpKQpwcmludChwYXN0ZTAoJyhiKSA6ICcsIHJlc3VsdDIpKQpgYGAKCiMjIFEyCmBgYHtyfQptb250bHkgPSByZXBsaWNhdGUocywgZGFpbHljaGlwcygzMCkpCnF1YXJ0ZXJseSA9IHJlcGxpY2F0ZShzLCBkYWlseWNoaXBzKDkwKSkKaGlzdChtb250bHlbMixdLCBicmVha3MgPSAyMCkKaGlzdChxdWFydGVybHlbMixdLCBicmVha3MgPSAyMCkKc2hhcGlyby50ZXN0KG1vbnRseVsxLF0pICAgICAjIHDlgLzlpKfmlrwwLjA1LCDmjqXlj5flgYfoqK0o54K65bi45oWL5YiG5L2IKQpzaGFwaXJvLnRlc3QocXVhcnRlcmx5WzEsXSkgICMgcOWAvOWkp+aWvDAuMDUsIOaOpeWPl+WBh+iorSjngrrluLjmhYvliIbkvYgpCmBgYAoKIyMgUTMKYGBge3J9CmxpYnJhcnkoRW52U3RhdHMpCmxpYnJhcnkoTUFTUykKbGlicmFyeShkcGx5cikKClMgPSAxMDAwMApmdWxsX2xvYWQgPSAzODAwICAjIOavj+iJmOiIueeahOi8ieiyqOmHjwpwZXJfY29zdCA9IDcyMDAKREdsb3UgPSBydHJpKFMsIG1pbj00MDAwLCBtYXg9ODAwMCwgbW9kZT02MDAwKSAlPiUgcm91bmQoMCkgIyBHbG9155qE6ZyA5rGC6YePCkRSb2NrID0gcnRyaShTLCBtaW49NDUwMCwgbWF4PTc1MDAsIG1vZGU9NjAwMCkgJT4lIHJvdW5kKDApICMgUm9ja+eahOmcgOaxgumHjwpieVJpY2sgPSBydW5pZihTLCBtaW49MC41LCBtYXg9MS4wKSAqZnVsbF9sb2FkICU+JSByb3VuZCgwKSAgICAgICAgICAjIOeUsVJpY2vmjZXprZrnmoTmr4/ml6XnlJ/nlKLph48o5q+U5L6LKQpieU1vcnR5ID0gcnRyaShTLCBtaW49MC41LCBtYXg9MSwgbW9kZT0wLjc1KSAqZnVsbF9sb2FkICU+JSByb3VuZCgwKSAjIOeUsU1vcnR55o2V6a2a55qE5q+P5pel55Sf55Si6YePKOavlOS+iykKCiMg5YWp5Zyw5YO55qC85pyD5LqS55u45b2x6Z+/KOWFseiuiikKc2lnbWFHID0gMC41CnNpZ21hUiA9IDAuMjUKbWVhbkcgPSAzLjUKbWVhblIgPSAzLjY1CmNvcl9HUiA9IHNlcSgtMC44LDAuOCwwLjIpICAgICMg5omA5pyJR2xvdeWSjFJvY2vlj6/og73nmoTnm7jpl5zkv4LmlbgKCiMg5Yid5aeL5YyW5a2Y5pS+56m66ZaTCm1lYW5QYXlvZmYgPSBtYXRyaXgobnJvdz1sZW5ndGgoY29yX0dSKSwgbmNvbD00KQpDVkFSNSA9IG1hdHJpeChucm93PWxlbmd0aChjb3JfR1IpLCBuY29sPTQpCgpmb3IgKGkgaW4gKDE6bGVuZ3RoKGNvcl9HUikpKXsKICAjIEdsb3XlkoxSb2Nr55qE5YWx6K6K55Ww5pW4CiAgY292X0dSID0gc2lnbWFHICogc2lnbWFSICogY29yX0dSW2ldIAogICMg5qih5pOs5Zyo5LiN5ZCM55qE55u46Zec5L+C5pW45LiL55qE5YWx6K6K55Ww55+p6ZmjCiAgY292TWF0cml4ID0gbWF0cml4KGMoc2lnbWFHXjIsIGNvdl9HUiwgY292X0dSLCBzaWdtYVJeMiksIG5yb3c9MikKICAjIOagueaTmuWFseiuiueVsOefqemZo+e1kOaenOS4jeWQjO+8jOaooeaTrDEwMDAw5qyh5YO55qC8CiAgcHJpY2UgPSBtdnJub3JtKFMsIG11ID0gYyhtZWFuRywgbWVhblIpLCBTaWdtYSA9IGNvdk1hdHJpeCkgCiAgcGF5b2ZmID0gbWF0cml4KG5yb3c9UywgbmNvbD00KSAjIOWIneWni+WMluetlueVpee4veeNsuWIqeihqAogIAogIGZvciAocyBpbiAxOlMpewogICAgIyBhKSBSaWNrIGdvZXMgdG8gR2xvdSBhbmQgTW9ydHkgZ29lcyB0byBSb2NrCiAgICBwYXlvZmZbcywxXSA9IG1pbihER2xvdVtzXSwgYnlSaWNrW3NdKSAqIHByaWNlW3MsMV0gKyAKICAgICAgICAgICAgICAgICAgbWluKERSb2NrW3NdLCBieU1vcnR5W3NdKSAqIHByaWNlW3MsMl0gLSAyKnBlcl9jb3N0CiAgICAjIGIpIFJpY2sgZ29lcyB0byBSb2NrIGFuZCBNb3J0eSBnb2VzIHRvIEdsb3UKICAgIHBheW9mZltzLDJdID0gbWluKERSb2NrW3NdLCBieVJpY2tbc10pICogcHJpY2VbcywyXSArCiAgICAgICAgICAgICAgICAgIG1pbihER2xvdVtzXSwgYnlNb3J0eVtzXSkgKiBwcmljZVtzLDFdIC0gMipwZXJfY29zdAogICAgIyBjKSBSaWNrIGFuZCBNb3J0eSBnbyB0byBHbG91CiAgICBwYXlvZmZbcywzXSA9IG1pbihER2xvdVtzXSwgKGJ5Umlja1tzXSArIGJ5TW9ydHlbc10pKSAqIHByaWNlW3MsMV0gLSAyKnBlcl9jb3N0CiAgICAjIGQpIFJpY2sgYW5kIE1vcnR5IGdvIHRvIFJvY2sKICAgIHBheW9mZltzLDRdID0gbWluKERSb2NrW3NdLCAoYnlSaWNrW3NdICsgYnlNb3J0eVtzXSkpICogcHJpY2VbcywyXSAtIDIqcGVyX2Nvc3QKCiAgfQogIAogICMg5pyJNOWAi3N0cmF0ZWd55ZCE6Ieq6L+t5Luj6KiI566X5Ye65bmz5Z2HcGF5b2Zm5ZKMQ1ZBUjUKICBmb3IgKGogaW4gYygxOjQpKXsKICAgIG1lYW5QYXlvZmZbaSxqXSA9IG1lYW4ocGF5b2ZmWyxqXSkKICAgIFZBUjUgPSBxdWFudGlsZShwYXlvZmZbLGpdLCBwcm9icyA9IDAuMDUpICMg5pyA5aOeNSUKICAgIENWQVI1W2ksal0gPSBwYXlvZmZbd2hpY2gocGF5b2ZmWyxqXTw9IFZBUjUpLCBqXSAlPiUgbWVhbigpCiAgfQp9CgpgYGAKCiMjIyAoYSkKYGBge3J9CnBsb3QoY29yX0dSLCBtZWFuUGF5b2ZmWywxXSwgY29sPSdzbGF0ZWJsdWUnLCBsd2Q9MiwgdHlwZT0ibCIsIHlsaW09Yyg0MDAwLCA2NTAwKSwgeWxhYiA9ICdBdmcuIFBheW9mZicsIHhheHQ9Im4iKQpsaW5lcyhjb3JfR1IsIG1lYW5QYXlvZmZbLDJdLCBjb2w9J3NpZW5uYTEnKQpsaW5lcyhjb3JfR1IsIG1lYW5QYXlvZmZbLDNdLCBjb2w9J2xpZ2h0c2t5Ymx1ZScpCmxpbmVzKGNvcl9HUiwgbWVhblBheW9mZlssNF0sIGNvbD0nc2VhZ3JlZW40JykKYXhpcygxLCBhdCA9IGNvcl9HUikKYGBgCiMjIyAoYikKYGBge3J9CnBsb3QoY29yX0dSLCBDVkFSNVssMV0sIGNvbD0nc2xhdGVibHVlJywgdHlwZT0ibCIsIHlsaW09YygtMzAwMCwgMjAwMCksIHlsYWIgPSAnQ1ZBUiA1JScsIHhheHQ9Im4iKQpsaW5lcyhjb3JfR1IsIENWQVI1WywyXSwgY29sPSdzaWVubmExJykKbGluZXMoY29yX0dSLCBDVkFSNVssM10sIGNvbD0nbGlnaHRza3libHVlJykKbGluZXMoY29yX0dSLCBDVkFSNVssNF0sIGNvbD0nc2VhZ3JlZW40JykKYXhpcygxLCBhdCA9IGNvcl9HUikKYGBgCgoKIyMgUTQKYGBge3J9CmxpYnJhcnkoZHBseXIpCgpiaWRkaW5nID0gZnVuY3Rpb24obiA9IDEwMDAwMDAwMCl7CiAgd2lsbGluZ190b19wYXkgPSBtYXgocm5vcm0obiwgbWVhbiA9IDMwMDAwMDAsIHNkID0gMzUwMDAwKSkKfQp0d28gPSByZXBsaWNhdGUoMiwgYmlkZGluZygpKSAlPiUgbWF4KCkgJT4lIHJvdW5kKCkKdGhyZWUgPSByZXBsaWNhdGUoMywgYmlkZGluZygpKSAlPiUgbWF4KCkgJT4lIHJvdW5kKCkKdGVuID0gcmVwbGljYXRlKDEwLCBiaWRkaW5nKCkpICU+JSBtYXgoKSAlPiUgcm91bmQoKQp0d287IHRocmVlOyB0ZW4KYGBgCgorIOaIkeWAkeeZvOePvumaqOiRl+ertuWDueeahOS6uuaVuOiuiuWkmigyLT4zLT4xMCnvvIzlg7nmoLzmnIPororlpKfjgII=