설명
이 예는 다중 목표 배낭 모델을 해결하는 방법을 보여줍니다. 모델 라이브러리의 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 표시;