n3707.gms : CTRLC 테스트에서 사용되는 MIP 모델

설명



소형 모델 유형 :MIP


카테고리 : 슬롯 테스트 라이브러리


메인 파일 : n3707.gms

$title 'CTRLC 테스트에 사용된 MIP 모델' (N3707,SEQ=587)

모든 행을 MPS 순서로 설정합니다.
ig(i) 크거나 같은 행
il(i) 작거나 같은 행
즉(i) 동등 행
ir(i) 범위 행;

방정식 eobj 목적 함수
          예(i) 크거나 같음
          el(i) 작거나 같음
          ee(i) 평등은 동등하다
          er(i) 범위 equs;

j개의 모든 열을 MPS 순서로 설정합니다.
     jc (j) 연속 열
     jb (j) 이진 열
     ji (j) 정수 열
     jsc(j) 반연속 열
     jsi(j) 반정수 열
     S SOS 세트
     js1(s,j) sos 1개 열
     js2(s,j) sos 2개 열;

         변수 obj 목적 변수
양의 변수 xc (j) 연속 변수
                   r (i) 범위 행 변수

이진 변수 xb (j) 이진 변수
정수 변수 xi (j) 정수 변수
반연속 변수 xsc(j) 반연속 변수
반정수 변수 xsi(j) 반정수 변수
sos1 변수 xs1(s,j) sos 1 변수
sos2 변수 xs2(s,j) sos 2 변수;

매개변수 c(j) 목적 계수
            cobj 목적 상수
            b(i) 오른쪽
            ac (i,jc) 행렬 계수: 연속형 변수
            ab (i,jb) 행렬 계수: 이진 변수
            ai (i,ji) 행렬 계수: 정수 변수
      asc(i,jsc) 행렬 계수: 반연속 변수
      asi(i,jsi) 행렬 계수: 반정수 변수
      as1(i,s,j) 행렬 계수: sos 1 변수
      as2(i,s,j) 행렬 계수: sos 2개 변수;

eobj..obj =e= sum(jc, c(jc )*xc (jc ))
             + 합계(jb, c(jb)*xb(jb))
             + 합계(ji, c(ji )*xi(ji ))
             + 합계(jsc, c(jsc)*xsc(jsc))
             + 합계(jsi, c(jsi)*xsi(jsi))
             + 합계(js1(s,j), c(j)*xs1(js1))
             + sum(js2(s,j), c(j)*xs2(js2)) + cobj;

예(ig).. sum(jc, ac (ig,jc )*xc (jc ))
                       + 합계(jb, ab (ig,jb)*xb (jb))
             + sum(ji, ai (ig,ji )*xi (ji ))
             + 합계(jsc, asc(ig,jsc)*xsc(jsc))
             + 합계(jsi, asi(ig,jsi)*xsi(jsi))
             + 합계(js1, as1(ig,js1)*xs1(js1))
             + sum(js2, as2(ig,js2)*xs2(js2)) =g= b(ig);

el(il).. sum(jc, ac (il,jc )*xc (jc ))
             + 합계(jb, ab(il,jb)*xb(jb))
             + 합계(지, 아이(일,지)*xi(지))
             + 합계(jsc, asc(il,jsc)*xsc(jsc))
             + 합계(jsi, asi(il,jsi)*xsi(jsi))
             + 합계(js1, as1(il,js1)*xs1(js1))
             + sum(js2, as2(il,js2)*xs2(js2)) =l= b(il);

ee(즉).. sum(jc, ac (즉,jc )*xc (jc ))
             + 합계(jb, ab (즉,jb)*xb (jb))
             + sum(ji, ai (ie,ji )*xi (ji ))
             + 합계(jsc, asc(즉,jsc)*xsc(jsc))
             + 합계(jsi, asi(즉,jsi)*xsi(jsi))
             + 합계(js1, as1(즉,js1)*xs1(js1))
             + sum(js2, as2(ie,js2)*xs2(js2)) =e= b(ie);

er(ir).. sum(jc, ac (ir,jc )*xc (jc ))
             + 합계(jb, ab(ir,jb)*xb(jb))
             + sum(ji, ai (ir,ji )*xi (ji ))
             + 합계(jsc, asc(ir,jsc)*xsc(jsc))
             + 합계(jsi, asi(ir,jsi)*xsi(jsi))
             + 합계(js1, as1(ir,js1)*xs1(js1))
             + sum(js2, as2(ir,js2)*xs2(js2)) =e= r(ir);

모델 m / 모두 /;

mps2gdx를 설정; 매개변수 mps2gdxstats(mps2gdx);

*=== --gdxfile이 지정된 경우
*======= 모델 데이터 로드
$gdxfile을 설정하지 않은 경우 $goTo nogdxfile
$gdxIn %gdxfile%.gdx
$load i j mps2gdx s mps2gdxstats
$load ig il 즉 ir
$load jc jb ji jsc jsi js1 js2
$load cobj cb
$load ac ab ai asc asi as1 as2
$load xc xb xi xsc xsi xs1 xs2 r
$gdxIn

*====== 지정된 경우 포인트 데이터 로드
$if 설정 포인트 $gdxIn %gdxfile%_%point%.gdx
$if 설정 포인트 $load ee 예: el eobj
$if 설정점 $load xc xb xi xsc xsi xs1 xs2 r
$goTo 완료egdxfile

*=== --gdxfile이 지정되지 않았습니다.
*======= 모델 데이터 로드
$label nogdx파일
$gdxIn n3707.gdx
$load i j mps2gdx s mps2gdxstats
$load ig il 즉 ir
$load jc jb ji jsc jsi js1 js2
$load cobj cb
$load ac ab ai asc asi as1 as2
$load xc xb xi xsc xsi xs1 xs2 r
$gdxIn

*======= 지정된 경우 포인트 데이터 로드
$if 세트 포인트 $gdxIn n3707_%point%.gdx
$if 설정 포인트 $load ee 예: el eobj
$if 설정점 $load xc xb xi xsc xsi xs1 xs2 r
$label donegdxfile

옵션 limcol=0,limrow=0,solprint=off;
obj를 최소화하는 mip를 사용하여 m을 해결합니다.