我在做SAM表平衡时,输入王其文,李善同的《社会核算矩阵原理、方法和应用》一书中P107页的例子,但总是出现错误,各位大神能帮我看看是怎么回事吗?文中标红处就是错误的地方,非常感谢
3 *================1.Input names of matrix accounts====================
4 SETS I MATRIX ACCOUNTS / LAB labor
5 CAP capital
6 HS wage households
7 HK capitalistic households
8 ENT firms
9 GOV government
10 AAGR agricultural branch
11 AIND industrial branch
12 ASERM market services branch
13 ASERNM non-market services branch
14 PAGR agricultural products
15 PIND industrial products
16 PSERM market services products
17 PSERNM non-market services products
18 SAV savings
19 TOT total/
20
21 ***Alternative code
22 ***I MATRIX ACCOUNTS / A1*A16/
23
24 INT(I) ALL accounts except total;
25 ALIAS(I,J);
26 ALIAS(INT,JNT);
27 INT(I) = YES;
28 INT("TOT") = NO;
29 *** INT("A16") = NO;
30 * ===2.Input initial matrix (range should exclude the row and column total
s)=
31 parameters SAM0(I,J);
32 * $ libinclude xlimport SAM0
33 TABLE SAM0(I,J)
34 LAB CAP HS HK ENT GOV
35 LAB
36 CAP
37 HS 28860 140
38 HK 11100 1900
39 ENT 7400
40 GOV 580 650 1480
41 AAGR
42 AIND
43 ASERM
44 ASERNM
45 PAGR 4263 618
46 PIND 11368 3705
47 PSERM 9947 5557
48 PSERNM 8700
49 SAV 2842 2470 4020 -2590
50 TOT 28860 18500 29000 13000 7400 6250
51 + AAGR AIND ASERM ASERNM PAGE
**** $170
52 LAB 5760 7560 8580 6960
53 CAP 1440 11340 5720
54 HS
55 HK
56 ENT
57 GOV 180
58 AAGR 9000
59 AIND
60 ASERM
61 ASERNM
62 PAGR 120 3229.3 157.15 118.35
63 PIND 1544 27599.7 5479.45 1336.05
64 PSERM 136 4671 2063.4 285.6
65 PSERNM
66 SAV
67 TOT 9000 54400 22000 8700 9180
68 + PIND PSERM PSERNM SAV TOT
69 LAB 28860
70 CAP 18500
71 HS 29000
72 HK 13000
73 ENT 7400
74 GOV 2700 660 6250
75 AAGR 9000
76 AIND 54400
77 ASERM 22000 22000
78 ASERNM 54400 8700 8700
79 PAGR 674.2 9180
80 PIND 6067.8 57100
81 PSERM 22660
82 PSERNM 8700
83 SAV 6742
84 TOT 54400 22660 8700 742
85 ;
86 *============3.Initial matrix cells normalization=========================
====
87 * Initial matrix values transformed in proportion
88 PARAMETER TOTO Total of Initial matrix;
89 TOTO = SUM((INT,JNT),SAM0(INT,JNT));
90 SAM0(INT,JNT) = SAM0(INT,JNT)/TOTO;
91 *====4. Matrix of negative values is defined and negative values transpose
d===
92 *Position of negative values in unbalanced matrix are noted
93 PARAMETER NEG(I,J) Matrix of negative values ;
94 NEG(INT,JNT)$(SAM0(INT,JNT) LT 0)= 1;
95 *Negative matrix values are transposed
96 SAM0(INT,JNT)$(SAM0(JNT,INT) LT 0) = SAM0(INT,JNT)- SAM0(JNT,INT);
97 SAM0(JNT,INT)$(SAM0(JNT,INT) LT 0) = 0;
98 *========5.N0n-zero log parameter========================================
99 SCALARS delta Non-zero log parameter;
100 delta = 0.0000000000001;
101 *============6. Definition of variables===================================
=
102 VARIABLES
103 SAM(I,J) New SAM with transposed negative values
104 OPT Distance variable
105 ;
106 *============7. Model Equations definition and initialization=============
===
107 *Program equations
108 EQUATIONS
109 OPTIMIZE Optimization criterion
110 CONSTRAINT(I) Equality between matrix and row sums
111 CONSTRAINT1 proportion sum set to one
112 ;
113 *Entropy optimization criterion
114 OPTIMIZE..
115 OPT =E= SAM((INT,JNT)$(SAM0(INT,JNT) NE 0),(SAM(INT,JNT))*(LOG(SAM(INT,JNT
**** $145$149$149 $149$149 $409
)+delta)- LOG(SAM0(INT,JNT)+delta)));
116 *Equality between row and column sums
117 CONSTRAINT(INT)..
118 SUM(JNT,SAM(INT,JNT)) =E= SUM(JNT,SAM(JNT,INT));
119 *Proportions sum equal one
120 CONSTRAINT1..
121 SUM((INT,JNT),SAM(INT,JNT)) =E=1;
122 * *==================8.Variables are initialized==========================
==
123 *cell values between 0 and infinity and empty cells remain empty
124 SAM.L(I,J) = SAM0(I,J) ;
125 SAM.LO(INT,JNT) = 0;
126 SAM.UP(INT,JNT) = + INF;
127 SAM.FX(INT,JNT)$(NOT SAM0(INT,JNT)) = 0;
128 OPT.L = 0;
129 *FIX any values as desired
130 *SAM.FX("GOV",INT) = SAMO("GOV",INT);
131 *=======================9.Model solving=============================
132 *Model
133 MODEL SAMBAL /ALL/;
134 *Choose solver
135 OPTION NLP = MINOS;
136 * OPTION NLP = MINOS5;
137 * OPTION NLP = CONOPT;
138 SOLVE SAMBAL USING NLP MINIMIZING OPT;
**** $257