moo03.gms : 벤솔면체 모델 풀기

설명

이 예는 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 표시;