cdq872 发表于 2007-6-17 09:51

求灰色灾变预测算法

有哪位懂灰色灾变预测算法吗?我最近看了一些文章,觉得很有意识,非常想搞懂其算法,
请高人指点,有程序的给一个,在此谢过大家。

[ 本帖最后由 风花雪月 于 2007-6-18 07:38 编辑 ]

风花雪月 发表于 2007-6-18 07:44

可以参考邓聚龙的《灰色系统理论教程》等书籍

风花雪月 发表于 2007-6-18 07:45

简单来说灰色预测是就灰色系统所作的预测。所谓灰色系统是介于白色系统和黑箱系统之间的过渡系统,其具体含义是:如果某一系统的全部信息已知为白色系统,全部信息末知为黑箱系统,部分信息已知、部分信息未知,那么这一系统就是灰色系统。

灰色预测一般有四种类型。

1.数列预测。对某现象随时间的顺延而发生的变化所作的预测定义为数列预测。例如对消费物价指数的预测,需要确定两个变量,一个是消费物价指数的水平,另一个是这一水平所发生的时间。

2.灾变预测。对发生灾害或异常突变事件可能发生的时间预测称为灾变预测。例如对地震时间的预测。

3.系统预测。对系统中众多变量间相互协调关系的发展变化所进行的预测称为系统预测。例如市场中代用商品、相互关联商品销售量互相制约的预测。

4.拓扑预测。将原始数据作曲线,在曲线上按定值寻找该定值发生的所有时点,并以该定值为框架构成时点数列,然后建立模型预测未来该定值所发生的时点。

cdq872 发表于 2007-6-20 21:34

谢谢‘风花雪月’
下面是我在一个delphi程序上改的,没运行过,大家看看,希望能抛砖引玉。
c *******************************************************
!GM(1,1)
        parameter(m=4)

        REAL sz(2,m),zjsz(2,m),ymsz(2,m)shuzu(2,m)
        REAL D1,D2,D3,D4,V

        read(*,*) (sz(1,j),j=1,m)
        READ(*,*) (sz(2,j),j=1,m)
           d3=sz(2,1)

          DO i=1,m-1
           ymsz(1,i)=sz(2,i+1)
          ENDDO

          d1=0
          d2=0
       DO i=1,m-1
          SZ(2,i+1)=SZ(2,i+1)+sz(2,i)
       ENDDO

          d4=sz(2,m)

       DO i=1,m-1
          zjsz(1,i)=-(sz(2,i+1)+sz(2,i))/2
       ENDDO
          DO i=1,m-1
          zjsz(2,i)=1   
          ENDDO

          sz(1,1)=0
          sz(1,2)=0
           DO i=1,m-1   !x(b)的转置
          sz(1,1)=sz(1,1)+(zjsz(1,i))**2
          sz(1,2)=sz(1,2)+zjsz(1,i)
           ENDDO

        SZ(2,1)=SZ(1,2)
        sz(2,2)=m-1   !sz是x(b)与其转置之积
          d1= sz(1,1)*sz(2,2)-sz(1,2)*sz(2,1)
          d2= sz(1,1)
        sz(1,1)=sz(2,2)/d1
        sz(1,2)= -sz(1,2)/d1
        sz(2,1)= -sz(2,1)/d1
        sz(2,2)= d2/d1   !sz是逆阵

          d1=0
          d2=0
       DO i=1,m-1
          d1=d1+zjsz(1,i)*ymsz(1,i)
          d2=d2+ymsz(1,i)
       ENDDO

               zjsz(1,1)=d1
           zjsz(1,2)=d2
        d1=sz(1,1)*zjsz(1,2)+sz(1,2)*zjsz(1,2)
        d2=sz(2,1)*zjsz(1,1)+sz(2,2)*zjsz(1,2)

       d1=(d3-d2/d1)*EXP(d1*m*(-1))+d2/d1
          v=d1-d4

        IF v<1 THEN
       d=v
        s='0'+d
        WRITE(*,*) s
       ELSE
        WRITE(*,*) v
        ENDIF
      END
页: [1]
查看完整版本: 求灰色灾变预测算法