paperco.gms : 수직 통합 회사

설명

이것은 PAPERCO 모델의 대체 공식입니다.
전산경제학, 9장. 이 버전에서는 다음을 소개합니다.
방정식과 가변 공간을 분할하기 위한 여러 세트
네 그룹. 이 예에서는 구현 방법을 추가로 보여줍니다.
LOOP 문을 사용하여 제안된 시나리오입니다.

소형 모델 유형 :LP


카테고리 : 무료 슬롯 사이트 모델 라이브러리


메인 파일 : paperco.gms

$title 수직 통합 회사(PAPERCO,SEQ=102)

$onText
이것은 PAPERCO 모델의 대체 공식입니다.
전산경제학, 9장. 이 버전에서는 다음을 소개합니다.
방정식과 가변 공간을 분할하기 위한 여러 세트
네 그룹. 이 예에서는 구현 방법을 추가로 보여줍니다.
LOOP 문을 사용하여 제안된 시나리오.

Thompson, G 및 Thor, S, 전산경제학: 경제 모델링
최적화 소프트웨어로. 사이언티픽 프레스(Scientific Press), 샌프란시스코, 1991년.

키워드: 선형 프로그래밍, 생산 계획, 펄프 및 제지 산업,
          시나리오 분석, 제작
$offText

$eolCom //

세트
   l '로그 공급자' / 회사, 농부 /
   w '목재 제품' / 분쇄, 칩 /
   p '펄프 유형' / 펄프-1, 펄프-2 /
   q '종이 종류' / 크래프트, 신문용지, 인쇄 /;

테이블 ap(w,p) '펄프 제조 투입 요건'
               펄프-1 펄프-2
   접지 .6 .3
   칩 .4 .7;

테이블 aq(p,q) '제지 제조 입력 요구사항'
               크래프트 신문 인쇄
   펄프-1 .68 .45 .25
   펄프-2 .32 .55 .75;

테이블 cw(w,p) '목재 운송 비용'
               펄프-1 펄프-2
   (지상
    칩) 40 55;

테이블 cp(p,q) '펄프 운송 비용'
               크래프트 신문 인쇄
   펄프-1 40 60 70
   펄프-2 55 50 45;

테이블 sdat(q,*) '판매 데이터'
               하부 상부
   크래프트 18 25
   신문용지 12 15
   0 7 인쇄;

매개변수
   pq(q) '판매 가격' / kraft 265, 신문 용지 275, 인쇄 310 /
   pp(p) '펄프 가격'
   pc(w) '목제품 가격' / 접지 18, 칩 16 /;

스칼라 플로그 / 65 /;

양수 변수
   로그(l) '로그 구매(톤)'
   xw(w,p) '목재 제품 출하량(톤)'
   펄프(p) '펄프 생산량(톤)'
   xp(p,q) '펄프 선적량(톤)'
   paper(q) '종이제품의 생산 및 판매(톤)'
   sales(p) '펄프 판매량(톤)'
   buy(p) '펄프 구매(톤)';

변동이익 '순영업소득';

방정식
    로그발
    wbal(w,p)
    p발(p)
    qbal(p,q)
    obj;

logbal.. .97*sum(l, log(l)) =e= sum((w,p), xw(w,p));

wbal(w,p).. xw(w,p) =e= ap(w,p)*펄프(p);

pbal(p).. sum(q, xp(p,q)) =e= 구매(p) - 판매량(p) + 펄프(p);

qbal(p,q).. xp(p,q) =e= aq(p,q)*paper(q);

obj..profit =e= sum(p, pp(p)*sales(p)) //펄프 판매량
               + sum(q, pq(q)*paper(q)) // 종이 판매량
               - sum(l, plog*logs(l)) // 로그 비용
               - sum((p,q), cp(p,q)*xp(p,q)) // 펄프 운송 비용
               - sum((w,p), (cw(w,p)+pc(w))*xw(w,p)) // 목재 운송 비용
               - 합계(p, pp(p)*구매(p));

paper.lo(q) = sdat(q,'lower');
paper.up(q) = sdat(q,'상부');

모형 목재 / 모두 /;

시나리오 '시나리오 식별자' 설정 / 시나리오-1*scenario-3 /;

테이블 psdat(scenario,p,*) '펄프 무역의 한계(톤)'
                펄프-1.s 펄프-1.p 펄프-2.s 펄프-2.p
   시나리오-1
   시나리오-2 3 5 3 5
   시나리오-3 6 6 10 10;

테이블 ppdat(scenario,p) '펄프 무역 가격 데이터(톤당 $)'
                펄프-1 펄프-2
   시나리오-1 120 140
   시나리오-2 120 140
   시나리오-3 120 150;

루프(시나리오,
   buy.up(p) = psdat(scenario,p,'p');
   sales.up(p) = psdat(scenario,p,'s');
   pp(p) = ppdat(시나리오,p);
   LP를 사용하여 목재의 이익을 극대화하는 문제를 해결합니다.
   옵션 limCol = 0, limRow = 0;
);