%xx=[0,0,0,0,0,4.59,4.05,4.23,4.41,4.59,4.59,4.77,4.86,4.95,5.04,5.22,5.22,5.13,4.86,4.59,4.59,4.05,3.87,4.05,4.30,4.50,4.70,4.90]; %x=xx+15;
%数据分别为北京、广东、湖北房价
%xx=[4557.2,4715.9,4715.9,4455.9,4747,6162.1,7375.4,10661.2,11647.6,13224.3]; %x=xx+10000;
%xx=[1199,1190,1190,1175,1601,1739,1703,2146,1851,2396]; %x=xx+1000;
%xx=[1155,1091,1252,1230,1237,1280.1,1311.4,1311.4,1451.6,1599.0,2163.6,2442.1,2937.4,2898.1,3412.7]; %x=xx+3000;
m=7;%预测存款时m=10;
if length(x(:,1))==1 %a,如不是一维列矩阵,进行转置变换 x=x'; end
n=length(x); z=0;
for i=1:n %计算累加值,并将值赋予矩阵be z=z+x(i,:); be(i,:)=z; end
for i=2:n %对原始数列平行移位 y(i-1,:)=x(i,:); end
for i=1:n-1 %计算数据矩阵B的第一列数据 c(i,:)=-0.5*(be(i,:)+be(i+1,:));
36
end
for j=1:n-1 %计算数据矩阵B的第二列数据 e(j,:)=1; end
for i=1:n-1 %构造数据矩阵B B(i,1)=c(i,:); B(i,2)=e(i,:); end
alpha=inv(B'*B)*B'*y; %计算参数 矩阵
for i=1:n+m %计算数据估计值的累加数列,如改为n+1为n+m可预测后m-1个值
ago(i,:)=(x(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,:); end
var(1,:)=ago(1,:)
for i=1:n+m-1 %如改n为n+m-1,可预测后m-1个值
var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下一预测值 end for i=1:n
error(i,:)=var(i,:)-x(i,:); end
c=std(error)/std(x) plot(x,'k-*'); hold on; plot(var,'k-o'); hold off;
37
五、问题二程序(Lingo)
1、估计阶段lingo
model: min=Y+A+S; Y/A>=4/6;
Y*0.0550+A*0.0680-L*0.0445>=0; L<=400000*0.7;
((L*0.0445*5)+L)/(12*5)<=3000; S+L=400000; END
Local optimal solution found at iteration: 526 Objective value: 357094.3
Variable Value Reduced Cost Y 41733.44 0.000000 A 62600.12 0.000000 S 252760.7 0.000000 L 147239.3 0.000000
Row Slack or Surplus Dual Price 1 357094.3 -1.000000 2 0.4513514E-06 -7775.173 3 0.000000 -15.92357 4 132760.7 0.000000 5 0.000000 14.30190 6 0.000000 -1.000000
估计用C++程序: #include
38
using namespace std; void main() { }
输出为:405006
2、结婚前: Lingo: (1). model:
max=Y15*0.0450+Y13*0.0407+Y12*0.0334+Y11*0.0247+12*A1*0.0130+78*A21*0
long int p=80000;double a=1.09; for (int i=0;i<6;i++) { }
cout< p=p*a+36000; .0130+12*B1*0.0110+ 78*B21*0.0110+12*C1*0.0100+78*C21*0.0100; Y15+Y13+Y12+Y11+A1+B1+C1=80000-8000; A21+B21+C21<=3000; Y15+Y13+Y12+Y11>=(80000-8000)*(0.26+0.01*1); Y15/(Y15+Y13+Y12+Y11)<=0.5; ((A1+A21)*0.35+(B1+B21)*0.29+(C1+C21)*0.28)/(A1+B1+C1+A21+B21+C21)<=0.36-0.02*1; Y15*(5/10)+Y13*(3/10)+Y12*(2/10)+Y11(1/10)<=(Y15+Y13+Y12+Y11)*(1/3); @gin(Y15); @gin(Y13); @gin(Y12); @gin(Y11); @gin(A1); @gin(B1); @gin(C1); @gin(A21); @gin(B21); 39 @gin(C21); end Local optimal solution found at iteration: 62 Objective value: 11824.27 Variable Value Reduced Cost Y15 3240.000 0.1450000E-02 Y13 16200.00 -0.2950000E-02 Y12 0.000000 0.000000 Y11 0.000000 0.000000 A1 43301.00 -0.3600000E-01 A21 3000.000 -0.2340000 B1 9258.000 -0.1200000E-01 B21 0.000000 -0.7800000E-01 C1 1.000000 0.000000 C21 0.000000 0.000000 Row Slack or Surplus Dual Price 1 11824.27 1.000000 2 0.000000 0.1200000 3 0.000000 0.7800000 4 0.000000 -0.8080000E-01 5 0.3333333 0.000000 6 -0.8999280E-06 0.000000 7 0.000000 0.4350000E-01 第二年:model: max=(Y25+3240)*0.0446+(16200+Y23)*0.0403+Y22*0.0328+Y21*0.0239+12*A2*0.0130+78*A22*0.0130+12*B2*0.0110+78*B22*0.0110+12*C2*0.0100+78*C22*0.0100; 3240+Y25+16200+Y23+Y22+Y21+A2+B2+C2=80000+36000*1+12892-8000*2; A22+B22+C22<=3000; 3240+Y25+16200+Y23+Y22+Y21>=(80000+36000*1+12892-8000*2)*(0.26+0.01*2); (3240+Y25)/(3240+Y25+16200+Y23+Y22+Y21)<=0.5; ((A2+A22)*0.35+(B2+B22)*0.29+(C2+C22)*0.28)/(A2+B2+C2+A22+B22+C22)<=0.36-0.02*2; 40