설명
DQQ 절차를 설명하십시오. 이 절차는 다중 규모에 사용됩니다. LP 모델(즉, 다양한 계수 및/또는 변수가 있는 모델) 극단적인 범위에서). 쿼드 정밀도를 활용합니다. 솔버 QUADMINOS는 발생하는 값의 극단적인 범위를 처리합니다. 위의 참조에서 여러 사례가 DQQ로 해결되었습니다. 이러한 인스턴스 중 일부는 여기에서 다음을 지정하여 처리할 수 있습니다. 실행 시 GDX 입력, 예: > 게임 dqq --GDXNAME=파일럿 다음과 같은 경우에 대한 데이터를 포함합니다(난이도가 높아지는 순서대로). Pilot4, 조종사, Pilot87, tma_me, glcaerwt, glcalift 이러한 인스턴스는 mps2gms 유틸리티를 통해 MPS 파일에서 얻었습니다.
대형 모델 유형 :슬롯
카테고리 : 슬롯 모델 라이브러리
메인 파일 : dqq.gms 포함: pilot4.gdx pilot.gdx pilot87.gdx tma_me.gdx glcaerwt.gdx glcalift.gdx
$title 웜 스타트 쿼드 정밀도 MINOS(DQQ,SEQ=414)
$onText
DQQ 절차를 설명합니다. 이 절차는 다중 규모에 사용됩니다.
LP 모델(즉, 다양한 계수 및/또는 변수가 있는 모델)
극단적인 범위에서). 쿼드 정밀도를 활용합니다.
솔버 QUADMINOS는 발생하는 값의 극단적인 범위를 처리합니다.
위의 참조에서 여러 사례가 DQQ로 해결되었습니다.
이러한 인스턴스 중 일부는 여기에서 다음을 지정하여 처리할 수 있습니다.
실행 시 GDX 입력, 예:
> 게임 dqq --GDXNAME=파일럿
다음과 같은 경우에 대한 데이터를 포함합니다(난이도가 높아지는 순서대로).
Pilot4, 조종사, Pilot87, tma_me, glcaerwt, glcalift
이러한 인스턴스는 mps2gms 유틸리티를 통해 MPS 파일에서 얻었습니다.
Ma, D., Yang, L., Fleming, R.M.T., Thiele, I., Palsson, B.O.,
Saunders, M.A. 게놈 규모 모델의 안정적이고 효율적인 솔루션
대사 및 고분자 발현, 과학 보고서 7,
품목 번호 40863(2017).
doi:10.1038/srep40863. http://rdcu.be/oCpn
키워드: 선형 프로그래밍, 웜 스타트, 멀티스케일 모델, 슬롯 언어 기능,
4배 정밀도 부동 소수점 연산, QUADMINOS
$offText
$GDXNAME이 설정되지 않은 경우 $set GDXNAME 파일럿4
$ifThen LPNAME을 설정하지 않음
$ LPNAME MINOS 설정
$ 세트 OPTNUM 11
$else
$ 세트 OPTNUM 0
$endIf
세트
i 'MPS 순서의 모든 행'
ig(i) '보다 크거나 같은 행'
il(i) '작거나 같은 행'
즉(i) '동등 행'
ir(i) '범위 지정 행';
세트
j 'MPS 순서의 모든 열'
jc(j) '연속 열';
매개변수
c(j) '객관 계수'
cobj '목적 상수'
b(i) '오른쪽'
ac(i,jc) '행렬 계수: 연속 변수';
mps2gms를 설정하십시오.
매개변수 mps2gmsstats(mps2gms);
방정식
eobj '목적 함수'
예(i) '보다 크거나 같은 동등'
el(i) '작거나 같음'
ee(i) '평등 평등'
er(i) '범위 동등';
변수 obj '객관적 변수';
양수변수
xc(j) '연속 변수'
r(i) '범위 행 변수';
$gdxIn %GDXNAME%
$load i j mps2gms mps2gmsstats
$load ig il 즉 ir
$로드 jc
$load cobj cb
$로드 AC
$로드 xc r
$gdxIn
eobj..obj =e= sum(jc, c(jc)*xc(jc)) + cobj;
예(ig).. sum(jc, ac(ig,jc)*xc(jc)) =g= b(ig);
el(il)..sum(jc, ac(il,jc)*xc(jc)) =l= b(il);
ee(즉).. sum(jc, ac(ie,jc)*xc(jc)) =e= b(ie);
er(ir).. sum(jc, ac(ir,jc)*xc(jc)) =e= r(ir);
모델 m / 모두 /;
옵션 limCol = 0, limRow = 0, solPrint = off;
$onText
DQQ 절차를 구현합니다.
1. 배정밀도 MINOS, 스케일링 온, optFile = 11로 해결
2. Quad-precision MINOS, 스케일링 온, optFile = 12로 해결
3. 쿼드 정밀도 MINOS, 스케일링 오프, optFile = 13으로 해결
$offText
$onEcho > minos.o11
* DQQ의 1단계(D)
스케일 옵션 2
타당성 공차 1e-7
최적성 허용오차 1e-7
주파수 100000 확장
LU 인자 허용오차 1.9
LU 업데이트 허용 오차 1.9
$offEcho
$onEcho >quadminos.o12
* DQQ의 2단계(Q1)
스케일 옵션 2
타당성 공차 1e-15
최적성 허용오차 1e-15
주파수 100000 확장
LU 인자 허용오차 10.0
LU 업데이트 허용 오차 10.0
$offEcho
$onEcho >quadminos.o13
* DQQ의 3단계(Q2)
스케일 옵션 0
타당성 공차 1e-15
최적성 허용오차 1e-15
주파수 100000 확장
LU 인자 허용오차 5.0
LU 업데이트 허용 오차 5.0
$offEcho
매개변수 xbar1(jc), xbar2(jc), xbar3(jc);
스칼라 obj1, itr1, obj2, itr2, dx2 / NA /, obj3, itr3, dx3 / NA /;
* 1단계: 정규(이중정밀도) MINOS로 풀기
m.opt파일 = %OPTNUM%;
옵션 lp = %LPNAME%;
obj를 최소화하는 lp를 사용하여 m을 해결합니다.
obj1 = m.objVal;
itr1 = m.iterUsd;
xbar1(jc) = xc.L(jc);
* 2단계: 쿼드 정밀도 MINOS로 해결
m.opt파일 = 12;
옵션 lp = 쿼드미노스;
obj를 최소화하는 lp를 사용하여 m을 해결합니다.
obj2 = m.objVal;
itr2 = m.iterUsd;
xbar2(jc) = xc.L(jc);
* 3단계: 4배 정밀도 MINOS로 풀기, 스케일링 없음
m.opt파일 = 13;
옵션 lp = 쿼드미노스;
obj를 최소화하는 lp를 사용하여 m을 해결합니다.
obj3 = m.objVal;
itr3 = m.iterUsd;
xbar3(jc) = xc.L(jc);
dx2 = smaxjc, abs(xbar1(jc) - xbar2(jc));
dx3 = smaxjc, abs(xbar2(jc) - xbar3(jc));
파일 로그 /''/;
putClose 로그 ' '
/ '인스턴스 이름: %GDXNAME%'
/ '1단계: itr =' itr1:10:0 ' obj =' obj1:18:8
/ '2단계: itr =' itr2:10:0 ' obj =' obj2:18:8 ' dx =' dx2:14:8
/ '3단계: itr =' itr3:10:0 ' obj =' obj3:18:8 ' dx =' dx3:14:8
/;