開始使用免費開始

在個案研究中加入邏輯性限制

延續汽車製造業的「具產能限制的工廠選址模型」個案研究。你已取得 4 個 pandas 資料框 demandvar_costfix_costcap,分別包含各地區需求(千輛汽車)、單位變動生產成本(千美元)、固定生產成本(千美元),以及生產產能(千輛汽車)。另外也建立了 2 個 Python 串列 locsize,內含可選位置與兩種工廠產能等級。以上變數都已經印到主控台供你查看。初始化模型、定義決策變數、建立目標函式與限制式的程式碼也都已替你完成。

本練習屬於課程

Python 的供應鏈分析

檢視課程

練習說明

  • 新增一個邏輯性限制:如果美國的高產能工廠啟用,則德國必須同時啟用一座低產能工廠。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Initialize, Define Decision Vars., Object. Fun., and Constraints
model = LpProblem("Capacitated Plant Location Model", LpMinimize)
loc = ['USA', 'Germany', 'Japan', 'Brazil', 'India']
size = ['Low_Cap','High_Cap']
x = LpVariable.dicts("production_", [(i,j) for i in loc for j in loc],
                     lowBound=0, upBound=None, cat='Integer')
y = LpVariable.dicts("plant_", 
                     [(i,s) for s in size for i in loc], cat='Binary')
model += (lpSum([fix_cost.loc[i,s] * y[(i,s)] for s in size for i in loc])
          + lpSum([var_cost.loc[i,j] * x[(i,j)] for i in loc for j in loc]))
for j in loc:
    model += lpSum([x[(i, j)] for i in loc]) == demand.loc[j,'Dmd']
for i in loc:
    model += lpSum([x[(i, j)] for j in loc]) <= lpSum([cap.loc[i,s]*y[(i,s)] 
                                                       for s in size])

# Define logical constraint
model += ____ - ____ <= ____
編輯並執行程式碼