harker.gms : 공간 경쟁 모델

설명

공간 평형 모델은 다양한 설명을 위해 사용됩니다.
시장 행동을 모델링하는 방법. 경쟁적이고 독점적인 시장
소비자 잉여와 생산자 잉여를 사용하여 모형화됩니다. 쿠르노나쉬
과점 모델은 대각선화 또는 야코비 알고리즘으로 해결됩니다.

소형 모델 유형 :NLP


카테고리 : 슬롯 게임 모델 라이브러리


메인 파일 : harker.gms

$title 공간 경쟁 모델(HARKER,SEQ=85)

$onText
공간 평형 모델은 다양한 설명을 위해 사용됩니다.
시장 행동을 모델링하는 방법. 경쟁적이고 독점적인 시장
소비자 잉여와 생산자 잉여를 사용하여 모형화됩니다. 쿠르노나쉬
과점 모델은 대각선화(Diagonalization) 또는 야코비(Jacobi) 알고리즘으로 해결됩니다.

네트워크 구조:

        하나 둘 셋 수요와 공급 지점
        / \ \ /
       / \ \ /
     4 -- 5 -- 6개의 전송 노드

선형 수요 함수: 수요(가격) = (rho - 가격)/eta

선형 한계 비용 함수: 비용(공급) = 알파 + 2*베타*공급

운송 비용: 비용(t(ij)) = kappa(ij)*t(ij) + nu(ij)*t(ij)^3

Harker, PT, 공간 경쟁의 대안 모델. 운영
연구 34, 3(1986), 410-425.

키워드: 비선형계획법, 공간평형모형, 미시경제학,
          시장행동, 경쟁시장, 독점시장, 쿠르노나쉬
          과점
$offText

세트
   n '노드' / 1, 2, 3, 4, 5, 6 /
   l(n) '지역' / 하나, 둘, 셋 /;

별칭 (l,lp), (n,np);

테이블 계수(l,*) '수요 및 공급 데이터'
           알파 베타 로 에타
   하나 1.0 .5 19 .2
   2개 2.0 .4 27 .01
   3개 1.5 .3 30 .3 ;

테이블 쌍(n,np,*) '데이터 전송'
               카파누
   1.4 1 .5
   1.5 2 .2
   2.6 3 .3
   3.6 1 .4
   4.원 2 .3
   4.5 1 .1
   4.6 1 .1
   5.1 3 .5
   5.4 2 .2
   5.6 1 1.0
   6.2 2 .25
   6.3 2 .2
   6.4 1 .9
   6.5 3 .8;

arc(n,np) '활성 호' 설정;

arc(n,np) = pair(n,np,"카파");

양수변수
   t(n,np) '수송'
   tt(l,lp) '명목상의 o-d 흐름'
   d(n) '수요'
   s(n) '공급';

변수 obj '목표값';

방정식
   발 '공급 수요 균형'
   sbal(l) '공급 잔고'
   dbal(l) '수요 잔고'
   nbal(n) '노드 잔액'
   in(l) '유입 잔액'
   objdef '객관적 정의'
   objoli '객관적 정의 과점';

스칼라
   오후 '제품 시장 유형'
   tm '운송 시장 유형';

bal.. sum(l, d(l)) =e= sum(l, s(l));

nbal(n).. s(n)$l(n) + sum(arc(np,n), t(arc)) =e= d(n)$l(n) + sum(arc(n,np), t(arc));

objdef.. obj =e= sum(l, coefs(l,"rho")*d(l) - pm*coefs(l,"eta")*sqr(d(l)))
               - sum(l, coefs(l,"알파")*s(l) + coefs(l,"베타")*sqr(s(l)))
               - sum(arc, pair(arc,"카파")*t(arc)
                         + tm*pairs(arc,"nu")*power(t(arc),3));

모델 슬롯 게임 / bal, nbal, objdef /;

매개변수
   rep1 '운송 요약'
   rep2 '공급 수요 및 가격 요약';

s.l(l) = 25;
d.l(l) = 25;

* 1. 고전적 공간 가격 균형: 완전경쟁
* 평균 원가 가격 책정에 직면한 생산자와 공급업체
* 교통수단:

오후 = .5;
tm = 1/3;

nlp를 사용하여 obj를 최대화하는 슬롯 게임를 해결합니다.

rep1(arc, "cspe2") = t.l(arc);
rep2("공급",l,"cspe2") = s.l(l);
rep2("수요",l,"cspe2") = d.l(l);
rep2("가격",l,"cspe2") = coefs(l,"rho") - coefs(l,"eta")*d.l(l);

* 2. 기업이 두 가지 모두를 소유하는 독점 가격 균형
* 생산 수단 및 유통 네트워크(따라서 한계
* 비용 가격은 공장과 선로 모두에서 우선 적용됩니다):

오후 = 1;
TM = 1;

nlp를 사용하여 obj를 최대화하는 슬롯 게임를 해결합니다.

rep1(arc, "monop1") = t.l(arc);
rep2("공급",l,"monop1") = s.l(l);
rep2("수요",l,"monop1") = d.l(l);
rep2("가격",l,"monop1") = coefs(l,"rho") - coefs(l,"eta")*d.l(l);

* 3. 기업이 사용하는 독점 가격 균형
* 평균 원가 가격이 책정된 유통 네트워크:

오후 = 1;
tm = 1/3;

nlp를 사용하여 obj를 최대화하는 슬롯 게임를 해결합니다.

rep1(arc, "monop2") = t.l(arc);
rep2("공급",l,"monop2") = s.l(l);
rep2("수요",l,"monop2") = d.l(l);
rep2("가격",l,"monop2") = coefs(l,"rho") - coefs(l,"eta")*d.l(l);

* 4. 평균 원가 가격을 적용하는 다중 생산자 과점 모델
* 교통 링크:

오후 = 1;
tm = 1/3;

* Cournot-Nash를 풀려면 추가 방정식이 필요합니다.
* 대각선화 또는 야코비 알고리즘에 의한 과점 모델.
*
* 다음의 값을 보유하는 d.l(l)-tt.l(lp,l)의 사용에 유의하세요.
* 이전 반복

변수 tt(l,lp) '명목상 o-d 흐름';

방정식
   sbal(l) '공급 잔고'
   dbal(l) '수요 잔고'
   in(l) '유입 잔액'
   objoli '객관적 정의 과점';

sbal(l)..s(l) =e= sum(lp, tt(l,lp));

dbal(l).. d(l) =e= sum(lp, tt(lp,l));

in(l).. d(l) =e= tt(l,l) + sum(arc(n,l), t(arc));

objoli.. obj =e= sum(l, coefs(l,"rho")*d(l) - pm*coefs(l,"eta")
                * 합계(lp, (d.l(l) - tt.l(lp,l) + tt(lp,l))*tt(lp,l)))
                - sum(l, coefs(l,"알파")*s(l) + coefs(l,"베타")*sqr(s(l)))
                - sum(arc, pair(arc,"카파")*t(arc)
                          + tm*pairs(arc,"nu")*power(t(arc),3));

모델 하콜리/nbal, sbal, dbal, in, objoli/;

iter '반복 횟수' 설정 / iter1*iter20 /;

매개변수
   objold '이전 목적'
   irep(iter,n,np) '반복 요약';

옵션 irep:8:1:2, limCol = 0, limRow = 0;

tt.l(l,lp) = 1;

객체 = 0;
harkoli.objVal = 1;

루프(iter$(abs(objold - harkoli.objVal) > 1e-5),
   objold = harkoli.objVal;
   nlp를 사용하여 obj를 최대화하는 harkoli를 해결합니다.
   harkoli.solPrint = %solPrint.quiet%;
   irep(iter,arc) = t.l(arc);
);

디스플레이 irep;

rep1(arc, "oligop") = t.l(arc);
rep2("공급",l,"올리고프") = s.l(l);
rep2("수요",l,"올리고프") = d.l(l);
rep2("가격",l,"oligop") = coefs(l,"rho") - coefs(l,"eta")*d.l(l);

담당자1, 담당자2 표시;