설명
이 예는 Bensolvehedron의 인스턴스를 해결하는 방법을 보여줍니다. Bensolvehedron은 다목적 최적화 문제의 클래스입니다. besolve.org에 소개되었습니다. 벤솔면체의 인스턴스는 다음 수에 따라 생성됩니다. 목표 p와 다면체 m의 복잡성. 둘 다 이중 대시 매개변수를 통해 설정할 수 있습니다. --p=<목표 수> --m=<다면체의 복잡성> 키워드: 다중 목표 최적화, 벤솔면체 목표 수 다면체의 복잡성
카테고리 : 슬롯 무료체험 데이터 유틸리티 라이브러리
메인 파일 : moo03.gms 포함: moo03.gms
$title 벤솔면체 모델 풀기 (moo03,SEQ=153)
$onText
이 예에서는 Bensolvehedron의 인스턴스를 해결하는 방법을 보여줍니다.
Bensolvehedron은 다목적 최적화 문제의 클래스입니다.
besolve.org에 소개되었습니다.
벤솔면체의 인스턴스는 다음 수에 따라 생성됩니다.
목표 p와 다면체 m의 복잡성.
둘 다 이중 대시 매개변수를 통해 설정할 수 있습니다.
--p=<목표 수>
--m=<다면체의 복잡성>
키워드: 다중 목표 최적화, 벤솔면체
$offText
* 목표 수
$설정되지 않은 경우 p $set p 2
* 다면체의 복잡성
$설정되지 않은 경우 m $set m 3
$eval p2m %p%+2*%m%
$평가 n (%p2m%)**%p%
$평가 n2 2*%n%
p '목표' 설정 / p1*p%p% /
m '복잡성' / m1*m%m% /
n2 '변수 2x' / n1*n%n2% /
n(n2) '변수' / n1*n%n% /
cel 'C의 요소' / c1*c%p2m% /
Comb(n,p,cel) 'C 요소의 모든 조합' / system.powerSetRight /
포인트 '파레토 포인트' / point1*point1000 /;
매개변수 C(p,n) '목적 행렬'
C_val(cel) 'C의 요소 값'
A(n2,n) '제약조건 행렬'
b(n2) '제약조건 벡터'
dir(p) '최대값의 경우 목적 함수 1, 최소값의 경우 -1의 방향' / #p -1 /
pareto_obj(points,p) '파레토 포인트의 객관적인 값';
A(n,n) = 1;
A(n2,n)$(ord(n2)=ord(n)+카드(n)) = -1;
b(n) = 1;
C_val(cel) = ord(cel)-((%p2m%-1)/2)-1;
루프(빗(n,p,cel),
C(p,n) = C_val(cel);
);
변수 Z(p) '객관 변수';
양수 변수 X(n) '결정 변수';
방정식 목표(p)
제약조건(n2);
목표(p).. Z(p) =e= sum(n, C(p,n)*X(n));
제약 조건(n2).. sum(n,A(n2,n)*X(n)) =l= b(n2);
모델 벤솔면체 / 모든 /;
$onEcho > cplex.opt
스레드 1
$offEcho
$libinclude moo 샌드위치 벤솔면체 LP p dir Z 포인트 pareto_obj -solver=cplex -optfile_init=1 -optfile_main=1
pareto_obj 표시;