설명
원래 공식은 비협조적 게임입니다. 내쉬 균형을 추구합니다. Nash 게임은 다음으로 확장됩니다. Stackelberg 또는 리더-추종자 게임입니다. Stackelberg 게임은 다릅니다 그 한 회사(리더)의 원래 Nash 게임에서 이제 다른 모든 기업(팔로어)이 설정한 가격을 예상하고 이 정보를 바탕으로 자체 가격을 책정합니다.
소형 유형 모델 :MPEC mcp
카테고리 : 슬롯 나라 모델 라이브러리
메인 파일 : nash.gms
$title 비협조적 게임: Nash 및 Stackelberg 버전 (NASH,SEQ=269)
$onText
원래 형식은 비협조적 게임입니다.
내쉬 균형을 추구합니다. Nash 게임은 다음으로 확장됩니다.
Stackelberg 또는 리더-추종자 게임입니다. Stackelberg 게임은 다릅니다
그 한 회사(리더)의 원래 Nash 게임에서
이제 다른 모든 기업(팔로어)이 설정한 가격을 예상하고
이 정보를 바탕으로 자체 가격을 책정합니다.
참고자료:
F.H. 머피, H.D. Sherali, A.L. Soyster, "수학적
과점 시장 결정을 위한 프로그래밍 접근 방식
평형", 수학 계획법 24 (1982) 92-106
PT 하커, “대각선화와 수렴의 가속화”
유한차원 변이 부등식에 대한 투영 알고리즘",
수학적 프로그래밍 41 (1988) 29-59.
S.P. Dirkse 및 M.C. Ferris, "MCPLIB: 비선형 혼합 모음
상보성 문제", 소프트웨어의 최적화 방법 5(1995), 319-345.
생산량 벡터 q(I)와 함께 아래 데이터는 다음을 정의합니다.
0. 총 수량 TQ = 생산되는 합계I,q(I)
1. 역수요함수 p(TQ), 즉 소비자가 구매하는 단가
일정량의 TQ를 요구하고 실제로 구매합니다. 역수요
함수 p(TQ)는 수요곡선에서 파생됩니다.
TQ(p) = dbar*p**(-감마)
항복
p(TQ) = dbar**(1/감마)*TQ**(-1/감마)
2. i기업의 총 생산비용 TC_i(q_i) (단위당 비용이 아님)
한계비용과 가격을 동일시하고 각 기업의 공급량을 가정하면
곡선은 일정한 탄력성 함수입니다. q = L*p**beta 일부 상수 L에 대해
공급 탄력성 베타를 사용하면 가격 함수를 얻을 수 있습니다.
p = (q/L)**(1/베타)
위의 가격(단가당 고정 비용)에 상수 c를 추가하면
다음 함수 TC에는 원하는 한계 비용(예: 가격)이 있습니다.
TC(I) = c(I)*q(I) + 베타(I)/(1+베타(I))*L(I)**(1/베타(I))
*q(I)**((1+베타(I))/베타(I))
내쉬 방식으로 행동하는 개별 기업
(즉, 그들은 다른 회사의 결정이 고정되어 있다고 가정합니다)
이익을 극대화하기 위한 생산 q(I):
이익(i) = q(I)*p(TQ) - TC(I)
키워드: 혼합 상보성 문제, 평형 제약 조건, 내쉬 게임,
스태켈버그 게임, 과점시장균형, 일반균형
모델
$offText
세트
나는 '확고하다' / 1*10 /
Leader(I) '최대 1개의 리더 회사';
테이블 IData(I,*) '기업 데이터'
c L 베타
1 5 10 1.2
2 3 10 1
3 8 10 .9
4 5 10 .6
5 1 10 1.5
6 3 10 1
7 7 10 .7
8 4 10 1.1
9 6 10 .95
10 3 10 .75;
스칼라
감마 '수요 탄력성' / 1.2 /
dbar '기준 또는 단가 수요' / 5000 /;
매개변수
c(I) '단위생산비용'
L(I) '공급곡선 규모계수'
베타(I) '공급 곡선 탄력성'
s(I);
c(I) = IData(I,'c');
L(I) = IData(I,'L');
베타(I) = IData(I,'베타');
s(I) = (베타(I)/(1 + 베타(I)))*L(I)**(1/베타(I));
별칭(I,J,K)
양수 변수
q(I) '생산 벡터';
변수
p '가격'
z '리더 이익';
방정식
dNegProfit(I) 'd(-이익)/dq: dTC - p - q(I)*dp'
obj '리더 이익 = q(I)*p - TC'
defp '총 생산량';
데프..
p =e= (dbar/sum(J, q(J)))**(1/감마);
dNegProfit(I)$[리더 아님(I)] ..
c(I) + (L(I)*q(I))**(1/베타(I)) - p + q(I)*(1/감마)*p/sum(J, q(J)) =g= 0;
OBJ..
z =e= sum리더(I), q(I)*p - q(I)*c(I) - s(I)*q(I)**((1 + 베타(I))/beta(I));
모델
nashmcp / dNegProfit.q, defp.p /
nashmpec / dNegProfit.q, defp.p, obj /;
* DNLP 하위 해결사에서 일부 도메인 위반을 허용합니다.
옵션 domLim = 50;
$ifI %슬롯 나라mcp% == nlpec 옵션 dnlp = conopt;
매개변수 보고서;
p.l = 1;
q.l(I) = 1;
리더(I) = 아니오;
mcp를 사용하여 nashmcp를 해결합니다.
* Nash 사례에서 플레이어 이익을 계산합니다.
* 즉, 모든 플레이어가 다른 플레이어의 전략에 대해 아무것도 가정하지 않는 경우
보고서(I,'nash') = q.l(I)*p.l - c(I)*q.l(I) - s(I)*q.l(I)**((1 + 베타(I))/beta(I));
report('price','nash') = p.l;
리더(K) = 아니오;
루프(K,
리더(K) = 예;
mpec max z를 사용하여 nashmpec을 해결합니다.
* Stackelberg(리더-팔로워) 사례에서 플레이어 이익을 계산합니다.
보고서(I,K) = q.l(I)*p.l - c(I)*q.l(I) - s(I)*q.l(I)**((1 + 베타(I))/beta(I));
report('가격',K) = p.l;
리더(K) = 아니오;
);
매개변수 대표 '백분율 변화';
reprel(I,J) = 100*(report(I,J) - Report(I,'nash'))/report(I,'nash');
reprel('price',J) = 100*(report('price',J) - report('price','nash'))/report('price','nash');
보고서 표시, 반발;