설명
이 테스트는 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) '수집 중';