혼합정수계획법인것으로 알고 있으며
math 모델시 계산시간이 많이 걸리는 것으로 알고 있는데
생각보다 해가 빨리 나오네요
만약 잘못된 부분이 있으면 알려주세요
전화번호는 010-5083-1146 입니다.
문제내용과 formulation을 올립니다.
3개의 창고에서 5개의 가게로 물건을 할당하려고 합니다. 각 창고에서 가게로 가는 할당량이
sucap이고 sucap이 할당이 되는 가게까지의 거리가 capacity2입니다. 만약 가게에
sucap이 할당이 되면 open이 1 이 되면서 가게까지의 거리가 목적식에 포함됩니다.
따라서 할당량은 변동비의 요소로 거리는 고정비의 요소로
최적의 할당과 고정된 거리를 최소화하는 고정비용 수송문제를 변형한 formulation입니다.
한 번 검토 부탁드립니다.
int nbWarehouses = ...;
int nbStores = ...;
range Warehouses = 1..nbWarehouses;
range Stores = 1..nbStores;
int capacity1[Stores]=...;
int capacity[Warehouses] = ...;
int capacity2[Stores][Warehouses]=...;
int cost[Stores][Warehouses] = ...;
dvar boolean open[Stores][Warehouses];
dvar int sucap[Stores][Warehouses];
maximize
sum(w in Warehouses, s in Stores) sucap[s][w]
+ sum(w in Warehouses, s in Stores)(cost[s][w]-cost[s][w] * open[s][w]);
subject to {
forall(w in Warehouses)
sum(s in Stores) sucap[s][w] <= capacity[w];
forall(s in Stores)
sum(w in Warehouses) sucap[s][w] <= capacity1[s];
forall(s in Stores, w in Warehouses)
sucap[s][w]<=capacity2[s][w]*open[s][w];
forall(s in Stores, w in Warehouses)
sucap[s][w]>=0;
forall(w in Warehouses)
sum(s in Stores) open[s][w]==1;
}
nbWarehouses = 5;
nbStores = 3;
capacity1 = [100, 100,54];
capacity = [46,46,46,46,70];
capacity2 =[ [46,46,46,46,70],[46,46,46,46,70],
[46,46,46,46,70],];
cost =[
[ 366, 366, 370, 354, 334 ],
[ 346, 274, 234, 334, 314 ],
[ 398, 366, 326, 394, 346 ],
];
부탁(ilog)_1.txt