$title 直接交叉熵平衡sam表
*定义集合所有账户ac和生产活动a
set ac
/sec,com,lab,cap,hh,ent,gov,taxa,taxb,taxc,taxd,invsav,row,total/;
set i(ac) /sec,com,lab,cap,hh,ent,gov,taxa,taxb,taxc,taxd,invsav,row/;
alias(ac,acp);
alias(i,j);
table sam(*,*)
sec com lab cap hh ent
sec 1252645
com 848996 144714
lab 191009
cap 152729
hh 191009 4842 30000
ent 147887
gov 4837 15310
taxa 21609
taxb 11159
taxc 12518
taxd 894
invsav 45331 84332
row 88997
total 1225502 1354160 191009 152729 195776 129643
+ gov taxa taxb taxc taxd invsav
sec
com 51972 193604
lab
cap
hh 11175
ent
gov 21609 11159 12518 894
taxa
taxb
taxc
taxd
invsav 21377
row 136 17224
total 84660 21609 11159 12518 894 210828
+ row total
sec 111911 1364556
com 1239286
lab 191009
cap 152729
hh 825 237851
ent 147887
gov 2906 69234
taxa 21609
taxb 11159
taxc 12518
taxd 894
invsav 151040
row 106357
total 115642
;
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 variables 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));
balance(i).. sum(j,Q(i,j)) =e= sum(j,Q(j,i));
*对变量初始值赋值
Q.l(i,j)=Q0(i,j);
H.l=H0;
Hratio.lo=0.5;
Hratio.up=2;
model sambal /all/;
solve sambal using nlp minimizing z;
display Q.l,H.l,Hratio.l;
*end
得到的结果却是:
sec com lab cap hh ent
sec 440843.366
com 326482.856 55650.015
lab 70268.284
cap 56185.860
hh 70268.286 1781.272 11787.424
ent 50938.175
gov 133125.747 531062.110 1779.433 6015.515
taxa 7949.507 3264.180
taxb 4105.167 160792.151
taxc 4405.460 546524.172
taxd 328.884
invsav 16676.343 33135.235
row 31320.715 982640.933
+ gov taxa taxb taxc taxd invsav
sec 116104.298
com 19985.921 74450.749
lab 372222.881 41596.222 132705.070
cap 169702.271 357893.425
hh 4111.053 132470.954 84975.069 504728.295 410706.083
gov 7949.507 4105.167 4605.115 328.884
taxa 129206.774
taxb 93330.771
invsav 7864.157 169147.852
row 50.017 6336.356
+ row
sec 41169.757
hh 303.503
gov 1069.120
invsav 977805.640
恳请大神帮忙~