asyncfix01.gms : HoldFixed를 사용하여 비동기 해석 테스트

설명

이 테스트는 HoldFixed=1을 사용한 비동기 해석이
일관되지 않은 솔루션을 만듭니다.

기고자: Michael Bussieck, 2021년 6월

소형 모델 유형 :크레이지 슬롯


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


메인 파일 : asyncfix01.gms

$title HoldFixed를 사용하여 비동기식 테스트 해결(ASYNCFIX01,SEQ=863)

$onText
이 테스트는 HoldFixed=1을 사용한 비동기식 해결이 그렇지 않음을 확인합니다.
일관되지 않은 솔루션을 만듭니다.

기고자: Michael Bussieck, 2021년 6월
$offText

세트
   합금 '시중에 판매되는 제품' / a*i /
   elem '필수 원소' / 납, 아연, 주석 /;

테이블 compdat(*,alloy) '구성 데이터(% 및 가격)'
            a b c d e f g h i
   리드 10 10 40 60 30 30 30 50 20
   아연 10 30 50 30 30 40 20 40 30
   주석 80 60 10 10 40 30 50 10 50
   가격 4.1 4.3 5.8 6.0 7.6 7.5 7.3 6.9 7.3;

매개변수
   rb(elem) '필수 혼합' / 납 30, 아연 30, 주석 40 /
   ce(alloy) '구성 오류(pct-100)';

ce(합금) = sum(요소, compdat(요소,합금)) - 100;
CE를 표시;

변수
   v(alloy) '합금 구매(파운드)'
   파이 '총 비용';

양수 변수 v;

방정식
   pc(elem) '구매 제약'
   mb '물질 균형'
   ac '회계: 총 비용';

pc(요소).. sum(합금, compdat(요소,합금)*v(합금)) =e= rb(요소);

mb.. sum(합금, v(합금)) =e= 1;

ac..phi =e= sum(합금, compdat("가격",합금)*v(합금));

모델
   b1 'mb가 없는 문제' / pc, ac /
   b2 'mb 문제' / pc, mb, ac /;

v.fx('c') = 0.1;
b2.holdfixed = 1;

매개변수 h(합금);

b2.solvelink = %solveLink.asyncGrid%;

lp를 사용하여 phi를 최소화하는 b2를 해결합니다.
h('a') = b2.핸들;
display$ReadyCollect(h) '대기 중';
v.fx('c') = 10000;
옵션 AsyncSolLst=1;
display$handlecollect(b2.handle) '수집 중';
abort$(abs(1-sum(alloy, v.l(alloy)))>1e-5) '나쁜 점';
display$handledelete(b2.handle) '수집 중';

v.fx('c') = 0.1;
b2.solvelink = %solveLink.aSyncThreads%;

lp를 사용하여 phi를 최소화하는 b2를 해결합니다.
h('a') = b2.핸들;
display$ReadyCollect(h) '대기 중';
v.fx('c') = 10000;
옵션 AsyncSolLst=1;
display$handlecollect(b2.handle) '수집 중';
abort$(abs(1-sum(alloy, v.l(alloy)))>1e-5) '나쁜 점';
display$handledelete(b2.handle) '수집 중';