实验11 Lingo中数据的导入与导出

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
X( 1955, X3) 529.0000 0.000000
X( 1955, X4) 61465.00 0.000000
X( 1955, X5) 22328.00 0.000000
X( 1955, X6) 98.00000 0.000000
X( 1956, X1) 825.0000 0.000000
选择 使Q达到最小,即可求得财政收入的预测模型。
请用lingo求解 。要求:分别使用@file函数和@ole函数实现数据的导入,并将结果 用@text导出到result.txt文件中。
实验指导
1、文件输入输出函数
输入:@file('filename')
输出:@text('filename')
2、Lingo中的变量默认都是非负的,使用@free(x)可取消x的非负限制。
X( 1953, X5) 21364.00 0.000000
X( 1953, X6) 89.00000 0.000000
X( 1954, X1) 707.0000 0.000000
X( 1954, X2) 520.0000 0.000000
X( 1954, X3) 491.0000 0.000000
X( 1958, X5) 26600.00 0.000000
X( 1958, X6) 256.0000 0.000000
X( 1959, X1) 1114.000 0.000000
X( 1959, X2) 1681.000 0.000000
X( 1959, X3) 509.0000 0.000000
实验报告(11)
学生姓名
学号
指导老师
郑成勇
实验时间
地点
综合实验大楼
实验题目
Lingo中数据的导入与导出
实验目的
熟悉Lingo中数据的导入与导出
实验内容
财政收入预测问题:财政收入与国民收入、工业总产值、农业总产值、总人口、就业人口、固定资产投资等因素有关。下表列出了1952-1981年的原始数据,试构造预测模型。
Y( 1976) 657.0000 0.000000
Y( 1977) 723.0000 0.000000
Y( 1978) 922.0000 0.000000
Y( 1979) 890.0000 0.000000
Y( 1980) 826.0000 0.000000
Y( 1981) 810.0000 0.000000
X( 1957, X6) 139.0000 0.000000
X( 1958, X1) 1028.000 0.000000
X( 1958, X2) 1235.000 0.000000
X( 1958, X3) 598.0000 0.000000
X( 1958, X4) 65994.00 0.000000
该文件中定义了两个数据块,其中的数据分别用来对变量1和变量2初始化。如果变量名是集合,则对应数据块应该是文本格式表示的集合成员名,如果变量名是集合的属性,则对应数据块应该是一系列数字,并且,若变量是初始集合的属性,则对应的数据块应当是一列数据,若变量是二维衍生集合的属性,则对应数据块应当是二维矩形数据区域。@ole函数无法读取三维数据区域。
enddata
min=@sum(yearset(i):(y(i)-b0-@sum(ItemSet(k):b(k)*X(i,k)))^2);
@free(b0);
@for(ItemSet:@free(b));
2.
运行结果:1.
Variable Value Reduced Cost
B0 160.2137 0.000000
Y( 1952) 184.0000 0.000000
Y( 1953) 216.0000 0.000000
Y( 1954) 248.0000 0.000000
Y( 1955) 254.0000 0.000000
Y( 1956) 268.0000 0.000000
Y( 1957) 286.0000 0.000000
447
1970
1638
2747
767
82992
34432
312
564
1971
1780
3156
790
85229
35620
355
638
1972
1833
3365
789
87177
35854
354
658
1973
1978
3684
855
89211
36652
374
691
1974
1993
3696
891
90859
37369
1965
1152
1581
632
72538
28670
175
393
1966
1322
ቤተ መጻሕፍቲ ባይዱ1911
687
74542
29805
212
466
1967
1249
1647
697
76368
30814
156
352
1968
1187
1565
680
78534
31915
127
303
1969
1372
2101
688
80671
33225
207
Y( 1958) 357.0000 0.000000
Y( 1959) 444.0000 0.000000
Y( 1960) 506.0000 0.000000
Y( 1961) 271.0000 0.000000
Y( 1962) 230.0000 0.000000
Y( 1963) 266.0000 0.000000
X( 1952, X1) 598.0000 0.000000
X( 1952, X2) 349.0000 0.000000
X( 1952, X3) 461.0000 0.000000
X( 1952, X4) 57482.00 0.000000
X( 1952, X5) 20729.00 0.000000
使用@ole函数能把计算结果写入Excel文件,使用格式也有以下三种:
(1)@ole('文件名','数据块名称1','数据块名称2')=变量名1,变量名2;
将两个变量的内容分别写入指定文件的两个预先已经定义了名称的数据块,数据块的长度(大小)不应小于变量所包含的数据,如果数据块原来有数据,则@ole写入语句运行后原来的数据将被新的数据覆盖。
年份
国民收入(亿元)
x1
工业总产值(亿元)
x2
农业总产值(亿元)
x3
总人口(万人)
x4
就业人口(万人)
x5
固定资产投资(亿元)
x6
财政收入(亿元)
y
1952
598
349
461
57482
20729
44
184
1953
586
455
475
58796
21364
89
216
1954
707
520
491
60266
21832
393
655
1975
2121
4254
932
92421
38168
462
692
1976
2052
4309
955
93717
38834
443
657
1977
2189
4925
971
94974
39377
454
723
1978
2475
5590
1058
96259
39856
550
922
1979
2702
6065
1150
97542
40581
564
890
1980
2791
6592
1194
98705
41896
568
826
1981
2927
6862
1273
100072
73280
496
810
设财政收入y与国民收入x1、工业总产值x2、农业总产值x3、总人口x4、就业人口x5、固定资产投资x6之间的的函数关系为 。问题转化为根据已知数据估计出 ,根据最小二乘法,作离差平方和
X( 1956, X2) 715.0000 0.000000
X( 1956, X3) 556.0000 0.000000
X( 1956, X4) 62828.00 0.000000
X( 1956, X5) 23018.00 0.000000
X( 1956, X6) 150.0000 0.000000
(2)@ole('文件名','数据块名称')=变量名1,变量名2;
两个变量的数据写入同一数据块(不止1列),先写变量1,变量2写入另外1列。
(3)@ole('文件名')=变量名1,变量名2;
不指定数据块的名称,默认使用Excel文件中与变量名同名的数据块。
实验结果与分析
首先将上面的原始数据复制到表格中并命名为data存放至c盘中
3、从Excel文件中导入数据
@ole函数只能用在模型的集合定义段、数据段和初始段,使用格式可以分成以下几种类型:
(1)变量名1,变量名2=@ole('文件名','数据块名称1','数据块名称2');
从指定的Excel文件读取数据,文件名可以包括扩展名(.xls),还可以包含完整的路径目录名称,如果没有指定路径,则默认路径是LINGO的当前工作目录。
X( 1954, X4) 60266.00 0.000000
X( 1954, X5) 21832.00 0.000000
X( 1954, X6) 97.00000 0.000000
X( 1955, X1) 737.0000 0.000000
X( 1955, X2) 558.0000 0.000000
B( X1) 0.4592372 0.000000
B( X2) -0.1121112E-01 0.000000
B( X3) -0.5130743 0.000000
B( X4) 0.7885025E-03 0.000000
B( X5) -0.2779719E-02 0.000000
B( X6) 0.3157047 0.000000
Y( 1970) 564.0000 0.000000
Y( 1971) 638.0000 0.000000
Y( 1972) 658.0000 0.000000
Y( 1973) 691.0000 0.000000
Y( 1974) 655.0000 0.000000
Y( 1975) 692.0000 0.000000
X( 1952, X6) 44.00000 0.000000
X( 1953, X1) 586.0000 0.000000
X( 1953, X2) 455.0000 0.000000
X( 1953, X3) 475.0000 0.000000
X( 1953, X4) 58796.00 0.000000
444
1960
1079
1870
444
66207
25880
380
506
1961
757
1156
434
65859
25590
138
271
1962
677
964
461
67295
25110
66
230
1963
779
1046
514
69172
26640
85
266
1964
943
1250
584
70499
27736
129
323
X( 1957, X1) 837.0000 0.000000
X( 1957, X2) 798.0000 0.000000
X( 1957, X3) 575.0000 0.000000
X( 1957, X4) 64653.00 0.000000
X( 1957, X5) 23711.00 0.000000
97
248
1955
737
558
529
61465
22328
98
254
1956
825
715
556
62828
23018
150
268
1957
837
798
575
64653
23711
139
286
1958
1028
1235
598
65994
26600
256
357
1959
1114
1681
509
67207
26173
338
(2)变量名1,变量名2=@ole('文件名','数据块名称');
左边的两个变量必须定义在同一个集合中,@ole的参数仅指定一个数据块名称,该数据块应当包含类型相同的两列数据,第1列赋值给变量1,第2列赋值给变量2。
(3)变量名1,变量名2=@ole('文件名');
没有指定数据块名称,默认使用Excel文件中与变量名同名的数据块。4.将计算结果导出到Excel文件中
X( 1959, X4) 67207.00 0.000000
X( 1959, X5) 26173.00 0.000000
X( 1959, X6) 338.0000 0.000000
X( 1960, X1) 1079.000 0.000000
代码:1.sets:
yearSet/@ole('c:\data.xls','years')/:y;
ItemSet/x1..x6/:b;
link(yearset,Itemset):X;
endsets
data:
y=@ole('c:\data.xls','incoming');
X=@ole('c:\data.xls','data');
Y( 1964) 323.0000 0.000000
Y( 1965) 393.0000 0.000000
Y( 1966) 466.0000 0.000000
Y( 1967) 352.0000 0.000000
Y( 1968) 303.0000 0.000000
Y( 1969) 447.0000 0.000000
相关文档
最新文档