| | 首先是有華中科技大學的鄧聚竜教授提出的理論。
通過少量的、不完全的信息,建立灰色微分預測模型,對事物發展規律作出模糊性的長期描述(模糊預測領域中理論、方法較為完善的預測學分支)。
灰色理論認為係統的行為現象儘管是朦朧的,數據是復雜的,但它畢竟是有序的,是有整體功能的。灰數的生成,就是從雜亂中尋找出規律。同時,灰色理論建立的是生成數據模型,不是原始數據模型,因此,灰色預測的數據是通過生成數據的gm(1,1)模型所得到的預測值的逆處理結果。
<1>、關聯度
提出係統的關聯度分析方法,是對係統發展態勢的量化比較分析。關聯度的一般表達式為:
n
ri=1/n∑ xi(k)
i=1
ri 是麯綫xi對參考麯綫x0的關聯度。
<2>、生成數
通過對原始數據的整理尋找數的規律,分為三類:
a、纍加生成:通過數列間各時刻數據的依個纍加得到新的數據與數列。纍加前數列為原始數列,纍加後為生成數列。
基本關係式:
記x(0)為原始數列
x(0)=( x(0)(k)xk=1,2,…,n)=(x(0)(1),x(0)(2),…,x(0)(n))
記x(1)為生成數列
x(1)=( x(1)(k)xk=1,2,…,n)=(x(1)(1),x(1)(2),…,x(1)(n))
如果x(0) 與x(1)之間滿足下列關係,即
k
x(1)(k)= ∑x(0)(i)
i=a
稱為一次纍加生成。
b、纍減生成:前後兩個數據之差,纍加生成的逆運算。纍減生成可將纍加生成還原成非生成數列。
c、映射生成:纍加、纍減以外的生成方式。
<3>、建立模型
a、建模機理
b、 把原始數據加工成生成數;
c、 對殘差(模型計算值與實際值之差)修訂後,建立差分微分方程模型;
d、 基於關聯度收斂的分析;
e、 gm模型所得數據須經過逆生成還原後才能用。
f、采用“五步建模(係統定性分析、因素分析、初步量化、動態量化、優化)”法,建立一種差分微分方程模型gm(1,1)預測模型。
基本算式為:
令 x(0)=(x(0)(1),x(0)(2),…,x(0)(n))
作一次纍加生成, k
x(1)(k)= ∑x(0)(m)
m=1
有 x(1)=(x(1)(1),x(1)(2),…,x(1)(n))
=(x(0)(1),x(1)(1)+x(0)(2),…,x(1)(n-1)+x(0)(n))
x(1)可建立白化方程:dx(1)/dt+ax(1)=u 即gm(1,1).
該方程的解為: x(1)(k+1)=(x(1)(1)-u/a)e-ak+u/a
<4>、預測方法:
a、數列預測
b、災變預測
c、季節災變預測
d、拓撲預測
e、係統綜合預測
f、模糊預測
對於一個模糊係統來說,傳統的預測方法就會失去作用。處理模糊預測問題的數學方法是模糊數學。模糊數學的基礎是模糊集合論,而模糊集合是普通集合的擴展。美國學者l.a.zadeh教授建立的模糊集合論,為模糊預測理論與方法的研究奠定了理論基礎。它用簡捷有力的方法處理復雜係統,在某種程度上彌補了經典數學與統計數學的不足。
在預測應用上,如氣象預報、地震預報、病蟲害預報等,國內學者做出了許多有益的研究。
4、基於混沌理論的分析預測
混沌理論是近年來長足發展的一門學科。混沌嚮世界規律運動的假定性提出挑戰。一方面,它告訴我們,宇宙遠比我們想得到的要怪異,它使許多傳統的科學方法受到懷疑。另一方面,混沌認為許多無規則的事物實際上可能是簡單規律的結果。混沌展現給我們的是一些新的規律。提出:遵從簡單規律的係統會以令人驚訝的復雜方式表現其行為。混沌是隱秘形式的秩序。
混沌係統是指敏感地依賴於初始條件的內在變化係統,對外來變化的敏感性本身並不意味着混沌。混沌理論最令人興奮的是:一個非常簡單的决定論係統能夠産生異常復雜的輸出結果。給定一個簡單規則和初始條件,係統將産生復雜連續係列,這一點類似“無中生有”。
美國科學家帕卡德和他的同事基於混沌和生物進化理論,藉助計算機,致力於用圖形來描述金融市場的混沌現象。帕卡德認為,世界上有大量不同的隨機現象,他所研究的是大體衹需幾個變量就能描述係統行為的一種混沌現象。他試圖建立一種學習算法,對進化模型進行處理。而對於衆多的模型,帕卡德采用一種稱為遺傳算法的方法處理數據。它用類似生物繁殖中突變和雜交現象的方法來改變模型。這種方法的核心是,計算機不斷設定新的假設環境,從而使學習算法更具有適應性。認為一個好的學習算法不僅能建立適應模型,它還能時刻觀測數據的變化。所謂“學習算法”是一種特別的程序,他擅長對大量的、各種各樣的模型進行比較研究,找出哪個模型最適用於分析目前和未來的數據。 | | 首先是有華中科技大學的鄧聚竜教授提出的理論。
通過少量的、不完全的信息,建立灰色微分預測模型,對事物發展規律作出模糊性的長期描述(模糊預測領域中理論、方法較為完善的預測學分支)。
灰色理論認為係統的行為現象儘管是朦朧的,數據是復雜的,但它畢竟是有序的,是有整體功能的。灰數的生成,就是從雜亂中尋找出規律。同時,灰色理論建立的是生成數據模型,不是原始數據模型,因此,灰色預測的數據是通過生成數據的gm(1,1)模型所得到的預測值的逆處理結果。
<1>、關聯度
提出係統的關聯度分析方法,是對係統發展態勢的量化比較分析。關聯度的一般表達式為:
n
ri=1/n∑ xi(k)
i=1
ri 是麯綫xi對參考麯綫x0的關聯度。
<2>、生成數
通過對原始數據的整理尋找數的規律,分為三類:
a、纍加生成:通過數列間各時刻數據的依個纍加得到新的數據與數列。纍加前數列為原始數列,纍加後為生成數列。
基本關係式:
記x(0)為原始數列
x(0)=( x(0)(k)xk=1,2,…,n)=(x(0)(1),x(0)(2),…,x(0)(n))
記x(1)為生成數列
x(1)=( x(1)(k)xk=1,2,…,n)=(x(1)(1),x(1)(2),…,x(1)(n))
如果x(0) 與x(1)之間滿足下列關係,即
k
x(1)(k)= ∑x(0)(i)
i=a
稱為一次纍加生成。
b、纍減生成:前後兩個數據之差,纍加生成的逆運算。纍減生成可將纍加生成還原成非生成數列。
c、映射生成:纍加、纍減以外的生成方式。
<3>、建立模型
a、建模機理
b、 把原始數據加工成生成數;
c、 對殘差(模型計算值與實際值之差)修訂後,建立差分微分方程模型;
d、 基於關聯度收斂的分析;
e、 gm模型所得數據須經過逆生成還原後才能用。
f、采用“五步建模(係統定性分析、因素分析、初步量化、動態量化、優化)”法,建立一種差分微分方程模型gm(1,1)預測模型。
基本算式為:
令 x(0)=(x(0)(1),x(0)(2),…,x(0)(n))
作一次纍加生成, k
x(1)(k)= ∑x(0)(m)
m=1
有 x(1)=(x(1)(1),x(1)(2),…,x(1)(n))
=(x(0)(1),x(1)(1)+x(0)(2),…,x(1)(n-1)+x(0)(n))
x(1)可建立白化方程:dx(1)/dt+ax(1)=u 即gm(1,1).
該方程的解為: x(1)(k+1)=(x(1)(1)-u/a)e-ak+u/a
<4>、預測方法:
a、數列預測
b、災變預測
c、季節災變預測
d、拓撲預測
e、係統綜合預測
f、模糊預測
對於一個模糊係統來說,傳統的預測方法就會失去作用。處理模糊預測問題的數學方法是模糊數學。模糊數學的基礎是模糊集合論,而模糊集合是普通集合的擴展。美國學者l.a.zadeh教授建立的模糊集合論,為模糊預測理論與方法的研究奠定了理論基礎。它用簡捷有力的方法處理復雜係統,在某種程度上彌補了經典數學與統計數學的不足。
在預測應用上,如氣象預報、地震預報、病蟲害預報等,國內學者做出了許多有益的研究。
4、基於混沌理論的分析預測
混沌理論是近年來長足發展的一門學科。混沌嚮世界規律運動的假定性提出挑戰。一方面,它告訴我們,宇宙遠比我們想得到的要怪異,它使許多傳統的科學方法受到懷疑。另一方面,混沌認為許多無規則的事物實際上可能是簡單規律的結果。混沌展現給我們的是一些新的規律。提出:遵從簡單規律的係統會以令人驚訝的復雜方式表現其行為。混沌是隱秘形式的秩序。
混沌係統是指敏感地依賴於初始條件的內在變化係統,對外來變化的敏感性本身並不意味着混沌。混沌理論最令人興奮的是:一個非常簡單的决定論係統能夠産生異常復雜的輸出結果。給定一個簡單規則和初始條件,係統將産生復雜連續係列,這一點類似“無中生有”。
美國科學家帕卡德和他的同事基於混沌和生物進化理論,藉助計算機,致力於用圖形來描述金融市場的混沌現象。帕卡德認為,世界上有大量不同的隨機現象,他所研究的是大體衹需幾個變量就能描述係統行為的一種混沌現象。他試圖建立一種學習算法,對進化模型進行處理。而對於衆多的模型,帕卡德采用一種稱為遺傳算法的方法處理數據。它用類似生物繁殖中突變和雜交現象的方法來改變模型。這種方法的核心是,計算機不斷設定新的假設環境,從而使學習算法更具有適應性。認為一個好的學習算法不僅能建立適應模型,它還能時刻觀測數據的變化。所謂“學習算法”是一種特別的程序,他擅長對大量的、各種各樣的模型進行比較研究,找出哪個模型最適用於分析目前和未來的數據。
matlab程序:
%下面程序是灰色模型GM(1,1)程序二次擬合和等維新陳代謝改進預測程序,matlab6.5 ,使用本程序請註明,程序存儲為gm1.m
%x = [5999,5903,5848,5700,7884];gm1(x); 測試數據
%二次擬合預測GM(1,1)模型
function gmcal=gm1(x)
ynyz = [
124 113 154.1666667 240.0909091 224.3333333
180.9 155.0909091 223.4166667 274.8333333 327.25
33.33333333 92.5 57.5 382.5 101.3333333
60 69.75 62.66666667 136.6666667 202.75
48.66666667 60.33333333 49.75 97.25 139.6666667
111.4 98.18181818 118.75 168.8 243.5454545
280.25 296.125 316.7777778 354 458.8888889
62.66666667 61.33333333 95.75 39.66666667 79
223.1 205 235.3636364 303.8 355
148.25 162 161.1666667 243 361.6
650 522.8 629.7142857 915.6666667 1270.4
780.3333333 726.6666667 924 1483.666667 1656.666667
140 104.75 168.2 322 337.3333333
292.6666667 344.3333333 454.3333333 416.3333333 943.5
168.3333333 161.5 339 415.6666667 262.8
290.3333333 270.25 317 548 494
313.25 543 565.6666667 696.75 713
308 328.4285714 379 432.1428571 521.8333333
1723.25 2060 2107 3643.666667 2416.6
285.75 508 364.25 526.25 1142
386.3333333 511.2 558.1666667 549.5 674.5
348.2857143 412.3461538 502.96 694.88 747.56
4091.914286 4137.055556 4823.685714 6175.722222 7706.305556
520 619 547.5 786 1142
643.2352941 489.8095238 699.6666667 1133.25 1298.533333
964.25 972 1220.809524 1408.565217 2286.909091
210.6 234.8 304 428.5 544.8571429
79.75 110.6666667 107.2 283 415
265.7333333 286.5714286 400.8125 415 425.6875
1873.285714 1623 1854.222222 2042.9 2665.5
219.175 311.7 406.8928571 480.75 642.0769231
88.2 171 233 178.8 438
33.33333333 183 223 269 733
105.4 122.8125 130.5625 265.5 235.9444444
134.4 104.3333333 247.25 293 385.1666667
134.8 147 216.8571429 186.6666667 246.25
33.33333333 44.25 116.75 96 54.6
124.2 147 253 544 530.75
114.5 109.5 150.5 219.3333333 300.8571429
57.66666667 51.6 89.6 166.6666667 253
959.75 1120.25 2188 3439.5 4430
2461.857143 3007.714286 4046.571429 4783 6518.5
1871.2 1785.833333 3962.25 2489 7272
2396.833333 2322.714286 2950.142857 3408 4164.25
5154.25 5092 8304.333333 19573 13888.33333
2737 2675.428571 3227 3299.75 6860.4
1500.75 1813.857143 2180.166667 2722 3583.857143
1417 1205.8 1414.5 1211.777778 1276.9
255 278.6363636 305.1666667 386.4615385 596.0769231
20 33.33333333 100 132 217.5
894 614.3333333 545 425.3333333 563
285.8 308.4615385 443.75 511.2 710.1
299.6 316 443 893.3333333 1023.666667
240 278.5714286 361.6666667 704 848.6
50 61.33333333 100 273 841
119.2 192.25 251 445 715
159.6 142.4 225.5 396.3333333 357.5
33.33333333 63.66666667 71 177.5 137
256.6666667 257 375.6666667 664.5 677
215.1666667 194 329.6666667 361.1428571 385
296.6666667 265 244.25 249 240.6666667
292.5 355.75 415.75 407.2 574.4
317.5 306.2 408.5 389.2 543.6
315 409.4 504.8 472.6666667 711.4
84.33333333 116.5 153 128 253
632 1013 855.3333333 1089.333333 1361.333333
227.25 275.75 348 361 520
225.3333333 260.4 264.5 305 426.5
237.5 351.8 378 375.6666667 550.8333333
77 106.6 104.3333333 166.8 346.8
148 443 189.3333333 379.5 604.5
474.5 1182 1250 1019 1263.5
];
x = ynyz(72,:);
sizexd2 = size(x,2);
%求數組長度
k=0;
for y1=x
k=k+1;
if k>1
x1(k)=x1(k-1)+x(k);
%纍加生成
z1(k-1)=-0.5*(x1(k)+x1(k-1));
%z1維數減1,用於計算B
yn1(k-1)=x(k);
else
x1(k)=x(k);
end
end
%x1,z1,k,yn1
sizez1=size(z1,2);
%size(yn1);
z2 = z1';
z3 = ones(1,sizez1)';
YN = yn1'; %轉置
%YN
B=[z2 z3];
au0=inv(B'*B)*B'*YN;
au = au0';
%B,au0,au
afor = au(1);
ufor = au(2);
ua = au(2)./au(1);
%afor,ufor,ua
%輸出預測的 a u 和 u/a的值
constant1 = x(1)-ua;
afor1 = -afor;
x1t1 = 'x1(t+1)';
estr = 'exp';
tstr = 't';
leftbra = '(';
rightbra = ')';
%constant1,afor1,x1t1,estr,tstr,leftbra,rightbra
strcat(x1t1,'=',num2str(constant1),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(ua),rightbra)
%輸出時間響應方程
%******************************************************
%二次擬合
k2 = 0;
for y2 = x1
k2 = k2 + 1;
if k2 > k
else
ze1(k2) = exp(-(k2-1)*afor);
end
end
%ze1
sizeze1 = size(ze1,2);
z4 = ones(1,sizeze1)';
G=[ze1' z4];
X1 = x1';
au20=inv(G'*G)*G'*X1;
au2 = au20';
%z4,X1,G,au20
Aval = au2(1);
Bval = au2(2);
%Aval,Bval
%輸出預測的 A,B的值
strcat(x1t1,'=',num2str(Aval),estr,leftbra,num2str(afor1),tstr,rightbra,'+',leftbra,num2str(Bval),rightbra)
%輸出時間響應方程
nfinal = sizexd2-1 + 1;
%决定預測的步驟數5 這個步驟可以通過函數傳入
%nfinal = sizexd2 - 1 + 1;
%預測的步驟數 1
for k3=1:nfinal
x3fcast(k3) = constant1*exp(afor1*k3)+ua;
end
%x3fcast
%一次擬合纍加值
for k31=nfinal:-1:0
if k31>1
x31fcast(k31+1) = x3fcast(k31)-x3fcast(k31-1);
else
if k31>0
x31fcast(k31+1) = x3fcast(k31)-x(1);
else
x31fcast(k31+1) = x(1);
end
end
end
x31fcast
%一次擬合預測值
for k4=1:nfinal
x4fcast(k4) = Aval*exp(afor1*k4)+Bval;
end
%x4fcast
for k41=nfinal:-1:0
if k41>1
x41fcast(k41+1) = x4fcast(k41)-x4fcast(k41-1);
else
if k41>0
x41fcast(k41+1) = x4fcast(k41)-x(1);
else
x41fcast(k41+1) = x(1);
end
end
end
x41fcast,x
%二次擬合預測值
%***精度檢驗p C************//////////////////////////////////
k5 = 0;
for y5 = x
k5 = k5 + 1;
if k5 > sizexd2
else
err1(k5) = x(k5) - x41fcast(k5);
end
end
%err1
%絶對誤差
xavg = mean(x);
%xavg
%x平均值
err1avg = mean(err1);
%err1avg
%err1平均值
k5 = 0;
s1total = 0 ;
for y5 = x
k5 = k5 + 1;
if k5 > sizexd2
else
s1total = s1total + (x(k5) - xavg)^2;
end
end
s1suqare = s1total ./ sizexd2;
s1sqrt = sqrt(s1suqare);
%s1suqare,s1sqrt
%s1suqare 殘差數列x的方差 s1sqrt 為x方差的平方根S1
k5 = 0;
s2total = 0 ;
for y5 = x
k5 = k5 + 1;
if k5 > sizexd2
else
s2total = s2total + (err1(k5) - err1avg)^2;
end
end
s2suqare = s2total ./ sizexd2;
%s2suqare 殘差數列err1的方差S2
Cval = sqrt(s2suqare ./ s1suqare);
Cval
%nnn = 0.6745 * s1sqrt
%Cval C檢驗值
k5 = 0;
pnum = 0 ;
for y5 = x
k5 = k5 + 1;
if abs( err1(k5) - err1avg ) < 0.6745 * s1sqrt
pnum = pnum + 1;
%ppp = abs( err1(k5) - err1avg )
else
end
end
pval = pnum ./ sizexd2;
pval
%p檢驗值
%arr1 = x41fcast(1:6)
%預測結果為區間範圍 預測步長和數據長度可調整程序參數進行改進 | | |
|
|