私は最適化が初めてで、単純なシナリオで実装する必要があります。
5 種類の乗用車/バンを生産できる自動車メーカーが存在します。生産できる各モデルには、必要な労働時間数と必要な鉄鋼のトン数、およびそのような車/バンを 1 台販売することで得られる利益が関連付けられています。製造業者は現在、一定量の鉄鋼と労働力を利用できます。これらは、総利益を最適化するように使用する必要があります。
これが私がこだわっている部分です - 各車には最低注文数もあります。企業は、そのモデルを生産/販売することが経済的に実行可能になる前に、各モデルを一定数製造する必要があります。optim()
`lower = ...' 引数には最小注文数量のベクトルを指定できるため、最終条件がなければこれは簡単に に送信されますが、0 はオプションと見なされません。誰かが最小注文を考慮して、これを解決するのを手伝ってくれますか? 関連する情報/制約を整理した方法は次のとおりです。
Dorian <- data.frame(Model = c('SmCar', 'MdCar', 'LgCar', 'MdVan', 'LgVan'),
SteelReq = c(1.5,3,5,6,8), LabReq=c(30,25,40,45,55),
MinProd = c(1000,1000,1000,200,200),
Profit = c(2000,2500,3000,5500,7000))
Materials <- data.frame(Steel=6500,Labor=65000)
NetProfit<-function(x) {
x[1]->SmCar
x[2]->MdCar
x[3]->LgCar
x[4]->MdVan
x[5]->LgVan
np<-sum(Dorian$Profit*c(SmCar,MdCar,LgCar,MdVan,LgVan))
np
}
LowerVec <- Dorian$MinProd #Or 0, how would I add this option?
UpperVec <- apply(rbind(Materials$Labor/Dorian$LabReq,
Materials$Steel/Dorian$SteelReq),2,min)
# Attempt at using optim()
optim(c(0,0,0,0,0),NetProfit,lower=LowerVec, upper=UpperVec)
最終的には、確率変数を Profit や LabReq (必要な労働力) などのパラメーターの既知の分布に置き換え、これを関数にラップして、確率変数のパラメーターと同様に入力として使用できる Steel と Labor を取得したいと考えています。何度もシミュレートしてから、必要な利益と労働力の特定のパラメーターを指定して平均解を見つけたいと思うので、理想的には、シミュレーションを実行できるように、この最適化も高速になります。助けてくれてありがとう!