설명
이 문제는 TRNSPORT에 대한 민감도 분석을 수행합니다. 문제. 기본 모델은 무료 슬롯 사이트 모델에서 가져옵니다. 도서관. 각 변형에 대해 별도의 모델이 해결됩니다. 운송 비용 매트릭스. 각 링크의 운송 비용이 인상됩니다. 30% 감소했으며 배송 패턴은 다음 중 하나입니다. 무료 슬롯 사이트 데이터 테이블에 저장되거나 추가 분석을 위해 파일에 기록됩니다. 통계 시스템에 의해.
소형 모델 유형 :LP
카테고리 : 무료 슬롯 사이트 모델 라이브러리
메인 파일 : senstran.gms
$title LOOPS를 이용한 민감도 분석(SENSTRAN,SEQ=106)
$onText
이 문제는 TRNSPORT에 대한 민감도 분석을 수행합니다.
문제. 기본 모델은 무료 슬롯 사이트 모델에서 가져옵니다.
도서관. 각 변형에 대해 별도의 모델이 해결됩니다.
운송 비용 매트릭스. 각 링크의 운송 비용이 인상됩니다.
30% 감소했으며 배송 패턴은 다음 중 하나입니다.
무료 슬롯 사이트 데이터 테이블에 저장되거나 추가 분석을 위해 파일에 기록됩니다.
통계 시스템에 의해.
Dantzig, GB, 3.3장. 선형 프로그래밍 및 확장.
프린스턴 대학 출판부, 뉴저지주 프린스턴, 1963년.
키워드: 선형 계획법, 민감도 분석, 선형 계획법,
교통 문제, 일정
$offText
세트
i '통조림 식물' / 시애틀, 샌디에고 /
j 'markets' / 뉴욕, 시카고, 토피카 /;
매개변수
a(i) '경우에 따라 식물 i의 용량'
/시애틀 350
샌디에이고 600 /
b(j) '경우에 따라 시장 j의 수요'
/ 뉴욕 325
시카고 300
토피카 275 /;
테이블 d(i,j) '거리(천 마일)'
뉴욕 시카고 토피카
시애틀 2.5 1.7 1.8
샌디에고 2.5 1.8 1.4;
스칼라 f '1,000마일당 케이스당 운임(달러)' / 90 /;
매개변수 c(i,j) '케이스당 운송 비용(단위: 수천 달러)';
c(i,j) = f*d(i,j)/1000;
변수
x(i,j) '케이스의 선적 수량'
z '총 운송 비용(천 달러)';
양수 변수 x;
방정식
비용 '목적 함수 정의'
Supply(i) '공장 i의 공급 제한을 준수합니다.'
수요(j) '시장 j의 수요를 충족';
비용.. z =e= sum((i,j), c(i,j)*x(i,j));
공급(i).. sum(j, x(i,j)) =l= a(i);
수요(j)..sum(i, x(i,j)) =g= b(j);
모델 운송 / 모두 /;
trnsport의 $sTitle 민감도 부분
$eolCom //
별칭 (i,ip), (j,jp);
스칼라
sens '감도 값' / .3 /
pors '옵션을 넣거나 저장함 save = 0 put = 1' / 0 /
카운터 '최대 문제 수' / 2 /;
매개변수 보고서(*,ip,jp,i,j) '요약 결과';
File repdat '민감도 데이터 보고서 파일';
옵션 limCol = 0, limRow = 0, solPrint = off;
포르 = 1; // '파일 쓰기'
카운터 = 2; // '모든 문제를 실행하려면 inf로 설정하세요.'
if(포르스,
repdat.nw = 5;
담당자.nd = 0;
담당자.lw = 11;
put repdat "낮음/높음 i j x(i,j)" /;
);
카운터 = 10;
loop((ip,jp)$counter, counter = counter - 1;
c(ip,jp) = c(ip,jp)*(1-sens); // 셀 줄이기
z를 최소화하는 lp를 사용하여 전송을 해결합니다. // 모델 해결
if(포르스,
넣다 / "낮음",ip.tl,jp.tl; // 쓰기
loop((i,j), // 해결책
x.l(i,j)를 넣으세요; // 한 줄에 하나씩 해결
);
그렇지 않으면
보고서("낮음",ip,jp,i,j) = x.l(i,j); // 결과 저장
);
c(ip,jp) = c(ip,jp)/(1 - 센스)*(1 + 센스); // 셀 증가
z를 최소화하는 lp를 사용하여 전송을 해결합니다. // 모델 해결
c(ip,jp) = c(ip,jp)/(1 + 센스); // 셀 재설정
if(포르스,
넣다 / "높음",ip.tl,jp.tl; // 쓰기
loop((i,j), // 해결책
x.l(i,j))를 넣습니다. // 한 줄에 하나씩 해결
그렇지 않으면
report("high",ip,jp,i,j) = x.l(i,j) // 결과 저장
);
if(por이 아님,
옵션 보고서:3:3:2;
보고서 표시;
);
);