주메뉴 바로가기 본문 바로가기 하단 바로가기

고객지원

기술문의

고정비용 수송문제에 대한 formulation입니다. 검토부탁

  • 김성태
  • 2007.08.29
  • 조회수 1,748
혼합정수계획법인것으로 알고 있으며
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

댓글 1

  • 유환주2007-08-29
    문제의 크기에 따라서 풀이 시간이 급격히 늘어날 수 있습니다.
    이 정도 사이즈는 규모가 적은 문제라고 생각합니다.
    목적식이 설명과 다소 달라서 수정을 했습니다.
    4번째의 제약도 조금 이해하기 쉽게 고쳤습니다.
    .
    규모가 큰 문제는 답변을 드릴만한 여유가 없을 수 있습니다.
    아이콘삭제

댓글 입력