楼主: Jackie_Chan
23854 61

[经济学模型] 《可计算一般均衡模型的基本原理与编程》(第二版)CGE模型讨论   [推广有奖]

41
Cinga01 发表于 2020-9-25 14:04:59
听雪无声 发表于 2020-8-31 19:48
请问老师,社会核算矩阵里各部门的进口关税是如何计算出的?统计年鉴只有总的进口关税。
这个应该是根据某些已有数据,自己按比例拆分吧

42
Cinga01 发表于 2020-9-25 14:13:17
各位同学好,我也在学习张欣老师的CGE模型这本书,希望能够加您一起组建一个CGE的交流群

43
Cinga01 发表于 2020-9-25 14:13:35
Cinga01 发表于 2020-9-25 14:13
各位同学好,我也在学习张欣老师的CGE模型这本书,希望能够加您一起组建一个CGE的交流群
guan_xinjia@163.com

44
Cinga01 发表于 2020-9-25 14:14:02
Cinga01 发表于 2020-9-25 14:13
1078130537@qq.com

45
wangtong0 发表于 2020-10-3 20:48:59
董不黑 发表于 2019-12-5 23:00
请问,程序里的汉字注释都是乱码应该怎么办啊
请问你是Mac版吗?我也出现了乱码,请问您最后如何解决的呢??

46
斑布都 发表于 2021-1-23 01:34:38
老师好,同学们好!我用直接交叉熵第14章例题14-7-2的Sam表进行调平,却出现的如下的错误

**** Exec Error at line 83: log: FUNC SINGULAR: x = 0


代码是:

*编制GAMS程序语言,用直接交叉熵平衡SAM表。
*第十四章例题7.2数据
set ac   /sec1,sec2soe,sec2pri,sec2fdi,sec3,com1,com2,com3,lab,cap,hhr,hhu,ent,
        gov,vatl,vatk,bustax,tariff,invsav,row,total/;
set a(ac)  /sec1,sec2soe,sec2pri,sec2fdi,sec3/;
set c(ac)  /com1,com2,com3/;
set f(ac)  /lab,cap/;
set hoh(ac)  /hhr,hhu/;
set vat(ac) /vatl,vatk/;
*set acnt(ac)  除了总数之外的所有账户;
set i(ac) /sec1,sec2soe,sec2pri,sec2fdi,sec3,com1,com2,com3,lab,cap,hhr,hhu,ent
        ,gov,vatl,vatk,bustax,tariff,invsav,row/;

*acnt(ac)=YES; acnt('total')=NO;
*i(ac)=YES; i('total')=NO;

alias (ac,acp),(a,ap),(c,cp),(f,fp),(hoh,hp),(vat,vatp);
alias (i,j);

table sam(ac,acp)
$INCLUDE C:\Users\phili\Desktop\GAMs\必读文件夹\张欣 第二版所有CGE模型的GAMS程序 解压密码 gzcbs2017\chap14QXSAM.inc

*display sam

*这里SAM表是从外面用txt文件引进


parameters
    Q0(i,j)    initial value SAM表各个初始流量
    H0         sum of all transaction flows (初始流量总数);

*Assignment for parameters
    Q0(i,j)=sam(i,j);
    H0=sum((i,j),sam(i,j));

display H0,sam;

Variables
    Q(i,j)       要调整的SAM表中的各个数值
    H            调整SAM表的总值
    Hratio       调整和原始两个总数的比例
    z            目标函数的数值即预期熵值;

*nonneg           每个变量必须是非负数
Positive variable Q(i,j);

equations
    totalsum         被调整的总数
    directentropy    目标函数 预期交叉熵
    balance          各个账户的平衡限制条件
    Hratiodef        Hratio 的定义和范围;

    totalsum..       H =e= sum((i,j),Q(i,j));
    Hratiodef..      Hratio =e= H/H0;
    directentropy..  z =e= sum((i,j)$sam(i,j),(1/H)*Q(i,j)*log(Q(i,j)/sam(i,j)))
                       -log(Hratio);
*    directentropy..  z =e= sum((i,j),(1/H)*Q(i,j)*log(Q(i,j)/sam(i,j)))-log(Hratio);
    balance(i)..     sum(j$sam(i,j),Q(i,j)) =e= sum(j,Q(j,i));

*对变量初始值赋值。
*这里对Hratio特别限制了范围。因为不限制的话,目标函数最小化时H会趋向无穷大
*得不到真实结果
    Q.l(i,j)=Q0(i,j);
    H.l=H0;
    Hratio.lo=0.5;
    Hratio.up=2;

model sambal  /all/;
option nlp=pathnlp;
solve sambal using nlp minimizing z;

display Q.l,H.l,Hratio.l;
*end 结束


47
斑布都 发表于 2021-1-23 01:46:20 来自手机
Jackie_Chan 发表于 2018-10-21 21:56
张欣教授的《可计算一般均衡模型的基本原理与编程》(第二版)已经出版。第二版主要进行了以下修改:1,订正 ...
感谢!

48
斑布都 发表于 2021-1-23 01:52:25
老师好,大家好!我用直接交叉熵的方法对14章的例14-7-2的Sam表调平,出现的下面的错误
**** Exec Error at line 82: log: FUNC SINGULAR: x = 0

谢谢了!

我用的代码是:
*第十四章例题7.2数据
set ac   /sec1,sec2soe,sec2pri,sec2fdi,sec3,com1,com2,com3,lab,cap,hhr,hhu,ent,
        gov,vatl,vatk,bustax,tariff,invsav,row,total/;
set a(ac)  /sec1,sec2soe,sec2pri,sec2fdi,sec3/;
set c(ac)  /com1,com2,com3/;
set f(ac)  /lab,cap/;
set hoh(ac)  /hhr,hhu/;
set vat(ac) /vatl,vatk/;
*set acnt(ac)  除了总数之外的所有账户;
set i(ac) /sec1,sec2soe,sec2pri,sec2fdi,sec3,com1,com2,com3,lab,cap,hhr,hhu,ent
        ,gov,vatl,vatk,bustax,tariff,invsav,row/;

*acnt(ac)=YES; acnt('total')=NO;
*i(ac)=YES; i('total')=NO;

alias (ac,acp),(a,ap),(c,cp),(f,fp),(hoh,hp),(vat,vatp);
alias (i,j);

table sam(ac,acp)
$INCLUDE C:\Users\phili\Desktop\GAMs\必读文件夹\张欣 第二版所有CGE模型的GAMS程序 解压密码 gzcbs2017\chap14QXSAM.inc
*display sa
*这里SAM表是从外面用txt文件引进
parameters
    Q0(i,j)    initial value SAM表各个初始流量
    H0         sum of all transaction flows (初始流量总数);
*Assignment for parameters
    Q0(i,j)=sam(i,j);
    H0=sum((i,j),sam(i,j));
display H0,sam;

Variables
    Q(i,j)       要调整的SAM表中的各个数值
    H            调整SAM表的总值
    Hratio       调整和原始两个总数的比例
    z            目标函数的数值即预期熵值;

*nonneg           每个变量必须是非负数
Positive variable Q(i,j);

equations
    totalsum         被调整的总数
    directentropy    目标函数 预期交叉熵
    balance          各个账户的平衡限制条件
    Hratiodef        Hratio 的定义和范围;

    totalsum..       H =e= sum((i,j),Q(i,j));
    Hratiodef..      Hratio =e= H/H0;
    directentropy..  z =e= sum((i,j)$sam(i,j),(1/H)*Q(i,j)*log(Q(i,j)/sam(i,j)))
                       -log(Hratio);
*    directentropy..  z =e= sum((i,j),(1/H)*Q(i,j)*log(Q(i,j)/sam(i,j)))-log(Hratio);
    balance(i)..     sum(j$sam(i,j),Q(i,j)) =e= sum(j,Q(j,i));

*对变量初始值赋值。
*这里对Hratio特别限制了范围。因为不限制的话,目标函数最小化时H会趋向无穷大
*得不到真实结果
    Q.l(i,j)=Q0(i,j);
    H.l=H0;
    Hratio.lo=0.5;
    Hratio.up=2;

model sambal  /all/;
option nlp=pathnlp;
solve sambal using nlp minimizing z;

display Q.l,H.l,Hratio.l;
*end 结束

49
斑布都 发表于 2021-1-23 01:59:40
老师好,大家好!我用直接交叉熵法对书中例题14-7-2中的Sam表进行调平,却出现了如下的错误
**** Exec Error at line 82: log: FUNC SINGULAR: x = 0
请问这个问题怎么解决呢?
我用的代码在附件中。


50
winnie6768 发表于 2021-4-29 16:40:10
学习中,谢谢楼主

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-9 07:16