moo01.gms : 확장 가능한 다중 목표 배낭 모델 해결

설명

이 예는 다중 목표 배낭 모델을 해결하는 방법을 보여줍니다.
모델 라이브러리의 EPSCMMIP를 기반으로 합니다.
이 예에서는 항목 수, 무게 수를 설정할 수 있습니다.
이중 대시 매개변수를 통한 치수 및 목표 수:
--NBITM=<항목 수>
--NBDIM=<가중치 벡터의 차원 수>
--NBOBJ=<목표 수 또는 값 차원>

키워드: 다중 목표 최적화, 배낭

카테고리 : 슬롯 데이터 유틸리티 라이브러리


메인 파일 : moo01.gms 다음을 포함합니다: moo01.gms

$title 확장 가능한 다중 목표 배낭 모델 풀기 (moo01,SEQ=151)

$onText
이 예에서는 다목적 배낭 모델을 해결하는 방법을 보여줍니다.
모델 라이브러리의 EPSCMMIP를 기반으로 합니다.
이 예에서는 항목 수, 무게 수를 설정할 수 있습니다.
이중 대시 매개변수를 통한 치수 및 목표 수:
--NBITM=<항목 수>
--NBDIM=<가중치 벡터의 차원 수>
--NBOBJ=<목표 수 또는 값 차원>

키워드: 다중 목표 최적화, 배낭
$offText

$설정되지 않은 경우 NBITM $set NBITM 50
$ NBDIM이 설정되지 않은 경우 $set NBDIM 2
$설정되지 않은 경우 NBOBJ $set NBOBJ 2

$설정되지 않은 경우 GRIDPOINTS $set GRIDPOINTS 20
$설정되지 않은 경우 PARALLEL_JOBS $set PARALLEL_JOBS 1

세트
   i '항목' / i1*i%NBITM% /
   j '무게 크기' / j1*j%NBDIM% /   
   k '값 차원' / k1*k%NBOBJ% /
   p '파레토 포인트' / point1*point1000 /;

매개변수
   a(i,j) '항목 i의 가중치'
   c(i,k) '항목 i의 값'
   b(j) '무게 j에 대한 배낭 용량'
   dir(k) '최대값의 경우 목적 함수 1, 최소값의 경우 -1의 방향' / #k 1/   
   pareto_obj(p,k) '파레토 포인트의 객관적인 값' 
;
a(i,j) =UniformInt(1,100);
c(i,k)=UniformInt(1,100);
b(j) =UniformInt(1,100) * %NBITM%/4; 

변수
   Z(k) '객관 변수'
   X(i) '결정 변수';

이진변수 X;

방정식
   objfun(k) '목적 함수'
   con(j) '용량 제약';

objfun(k)..sum(i, c(i,k)*X(i)) =e= Z(k);

con(j).. sum(i, a(i,j)*X(i)) =l= b(j);

모델 예 / 모두 /;

$onEcho > cplex.opt
스레드 1
$offEcho

$libInclude moo EpsConstraint 예 MIP k dir Z p pareto_obj -gridpoints=%GRIDPOINTS% -parallel_jobs=%PARALLEL_JOBS% -solver=cplex -optfile_init=1 -optfile_main=1

pareto_obj 표시;