Transportation Model
Transportation Model에 대한 이야기를 하겠다
Transportation Model은 다음과 같은 특성을 갖는 문제를 해결하기 위해서 사용한다.
. 제품을 출발지에서 도착지까지 가능한 최소의 비용으로 수송한다.
. 각 출발지는 공급할 수 있는 수량이 고정되어 있다.
예를 들어서 설명하면 아래와 같이 설명 할 수 있겠다.
농업용기계를 생산하는 공장 P0, P1, P2의 3곳이 있다.
이 기계를 필요로 하는 농장은 W0, W1, W2의 3곳이다.
기계 1대를 공장에서 각 목적지까지 수송하는데 드는 비용은 거리와 상황에 따라 수송단가가 달라진다.
총 수송비용을 최소화하기 위해서 각각의 공장에서 농장까지 몇대의 기계를 수송할지를 결정 하는 것이 Transportation Model의 목적이다.
#Transportation Model
from ortools.linear_solver import pywraplp
import pandas as pd
def main():
solver = pywraplp.Solver('', pywraplp.Solver.CBC_MIXED_INTEGER_PROGRAMMING)
costInput = pd.read_excel('../input/transportationsample/Transportation.xls', sheet_name='Cost')
supplyInput = pd.read_excel('../input/transportationsample/Transportation.xls', sheet_name='Supply')
demandInput = pd.read_excel('../input/transportationsample/Transportation.xls', sheet_name='Demand')
supplyIdList = supplyInput.ID.tolist()
demandIdList = demandInput.ID.tolist()
maxDemand = 0
supplyList = supplyInput.SUPPLY.tolist()
demandList = demandInput.DEMAND.tolist()
for i in demandList:
maxDemand = maxDemand + i
costArray = [[0]*len(demandIdList) for i in range(len(supplyIdList))]
for i in range(len(supplyIdList)):
for j in range(len(demandIdList)):
cost = costInput[costInput.PLANT == supplyIdList[i]][demandIdList[j]].tolist()[0]
costArray[i][j] = cost
#Solution X initialization
X = [[solver.IntVar(0, maxDemand,'') for i in range(len(supplyIdList))] for j in range(len(demandIdList))]
for j in range(len(demandIdList)):
demandSum = 0
for i in range(len(supplyIdList)):
demandSum = demandSum + X[i][j]
solver.Add(demandSum == demandList[j])
for i in range(len(supplyIdList)):
supplySum = 0
for j in range(len(demandIdList)):
supplySum = supplySum + X[i][j]
solver.Add(supplySum <= supplyList[i])
costSum = 0
for i in range(len(supplyIdList)):
for j in range(len(demandIdList)):
costSum = costSum + X[i][j]*costArray[i][j]
solver.Minimize(costSum)
solver.Solve()
for i in X:
print("")
for j in i:
print(int(j.SolutionValue()), end=' ')
if __name__ == '__main__':
main()
Author And Source
이 문제에 관하여(Transportation Model), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@happymingoo/Transportation-Model저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)