《物元可拓源碼》由會員分享,可在線閱讀,更多相關(guān)《物元可拓源碼(4頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上
物元可拓法于80年代由我國蔡文教授創(chuàng)立,目前已廣泛應(yīng)用于新產(chǎn)品構(gòu)思與設(shè)計、優(yōu)化決策、控制、識別與評價等各個領(lǐng)域,無論在理論還是在實踐上都發(fā)揮了越來越重要的作用。
物元是描述事物的名稱、特征及量值3個基本元素的簡稱,在形式上可記為M=(N,c,v)=(N,c,c(N))。其中M、N、c、v分別是Matter、Name,?Character,?Value的縮寫??赏丶鲜怯藐P(guān)聯(lián)度將模糊集合的[0,1]閉合區(qū)間連續(xù)取值拓廣到(-∞,+∞)實數(shù)軸,以表達物元的量值為實軸上的一點時符合要求的程度。物元分析是研究物元及其變化并用以解決矛盾問題的規(guī)律和方法,可拓學(xué)是用
2、形式化的工具,從定性和定量兩個角度去研究解決矛盾問題的規(guī)律和方法。物元可拓法結(jié)合二者,是將辨證邏輯和形式邏輯相結(jié)合的可拓邏輯,豐富了事物的內(nèi)涵,客觀地反映了物質(zhì)世界的真實狀態(tài)。
本次選用評價因子污染貢獻率方法來確定權(quán)系數(shù)。主要計算程序:
Dim?sRow?As?Integer,?sCol?As?Integer????'起始的行與列
Dim?i?As?Integer,?j?As?Integer??????????'循環(huán)變量
Dim?Xj?As?Double????????????????????????'定義實測值
Dim?Aij?As?Double,?Bij?As?Double??????
3、??'定義標(biāo)準域區(qū)間
Dim?Apj?As?Double,?Bpj?As?Double????????'定義節(jié)域變量
Dim?YZS?As?Integer??????????????????????'定義評價因子個數(shù)
Dim?DJS?As?Integer??????????????????????'定義評價等級數(shù)
'得到起始行列值
sRow?=?InputBox("請輸入監(jiān)測數(shù)據(jù)第一個數(shù)的行號!",?"輸入行號",?0)
sCol?=?InputBox("請輸入監(jiān)測數(shù)據(jù)第一個數(shù)的列號!",?"輸入列號",?0)
YZS?=?InputBox("請輸入評價因子個數(shù)!",?"輸入因子個數(shù)",?0)
4、
DJS?=?InputBox("請輸入評價等級個數(shù)!",?"輸入評價等級數(shù)",?0)
'插入標(biāo)記列文字
With?Sheets("sheet1")
??For?i?=?1?To?DJS
??????Cells(sRow?+?DJS?+?2?+?i,?sCol?-?1).Value?=?"關(guān)聯(lián)函數(shù)k_等級"?&?i
??Next?i
??Cells(sRow?+?2?*?DJS?+?3,?sCol?-?1).Value?=?"X/S"
??Cells(sRow?+?2?*?DJS?+?4,?sCol?-?1).Value?=?"歸一化權(quán)重"
??For?i?=?1?To?DJS
??????C
5、ells(sRow?+?2?*?DJS?+?4?+?i,?sCol?-?1).Value?=?"關(guān)聯(lián)度K_等級"?&?i
??Next?i
??Cells(sRow?+?3?*?DJS?+?5,?sCol?-?1).Value?=?"可拓指數(shù)"
??
??'按列循環(huán)計算
??For?j?=?sCol?To?sCol?+?YZS?-?1
????'賦初值
????Xj?=?Cells(sRow,?j).Value????????????'實測值
????Apj?=?Cells(sRow?+?1,?j).Value???????'可拓域最小值
????Bpj?=?Cells(sRow?+?DJS?
6、+?2,?j).Value?'可拓域最大值
????
????For?i?=?1?To?DJS
??????'對aij,bij賦值
??????Aij?=?Cells(sRow?+?i,?j).Value
??????Bij?=?Cells(sRow?+?i?+?1,?j).Value
??????
??????'按條件選擇公式計算關(guān)聯(lián)度
??????If?Xj?>?Aij?And?Xj?
7、JS?+?2,?j).Value?=?-(Aij?-?Xj)?/?(Bij?-?Aij)
????????Else
??????????Cells(sRow?+?i?+?DJS?+?2,?j).Value?=?-(Xj?-?Bij)?/?(Bij?-?Aij)
????????End?If
????????
??????Else??????????'xj<>Xij?點x位于本標(biāo)準之外
??????
????????If?Xj?
8、????????????Cells(sRow?+?i?+?DJS?+?2,?j).Value?=?(Aij?-?Xj)?/?(Apj?-?Aij)
??????????Else
????????????Cells(sRow?+?i?+?DJS?+?2,?j).Value?=?(Aij?-?Xj)?/?(2?*?Xj?-?Bpj?-?Aij)
??????????End?If
????????
????????ElseIf?Xj?>?Bij?Then?'x位于標(biāo)準的右邊,此時有x>(ai+bi)/2
????????
??????????If?Xj?<=?(Apj?+?Bpj)?/?2?Then
9、
????????????Cells(sRow?+?i?+?DJS?+?2,?j).Value?=?(Xj?-?Bij)?/?(Apj?+?Bij?-?2?*?Xj)
??????????Else
????????????Cells(sRow?+?i?+?DJS?+?2,?j).Value?=?(Xj?-?Bij)?/?(Bij?-?Bpj)
??????????End?If
??????????
????????End?If
??????End?If
????Next?i
??Next?j
??
????'計算X/S
????For?j?=?sCol?To?sCol?+?YZS?-?1
?
10、???????Dim?a?As?Double
????????a?=?0
????????For?i?=?1?To?DJS?+?2
????????????a?=?a?+?Cells(sRow?+?i,?j)
????????Next?i
????????Cells(sRow?+?2?*?DJS?+?3,?j).Value?=?Cells(sRow,?j).Value?*?(DJS?+?2)?/?a
????Next?j
????'計算權(quán)重
????'計算x/s的總和
????a?=?0
????For?i?=?sCol?To?sCol?+?YZS?-?1
????????a?=?a?+?Ce
11、lls(sRow?+?2?*?DJS?+?3,?i)
????Next?i
????
????For?j?=?sCol?To?sCol?+?YZS?-?1
????????Cells(sRow?+?2?*?DJS?+?4,?j).Value?=?Cells(sRow?+?2?*?DJS?+?3,?j).Value?/?a
????Next?j
????
????'計算關(guān)聯(lián)度
????Cells(sRow?+?2?*?DJS?+?4,?sCol?+?YZS)?=?"綜合關(guān)聯(lián)度"
????For?i?=?1?To?DJS
????????For?j?=?sCol?To?sCol?+?YZS?-?1
12、
????????????Cells(sRow?+?2?*?DJS?+?4?+?i,?j).Value?=?Cells(sRow?+?DJS?+?2?+?i,?j).Value?*?Cells(sRow?+?2?*?DJS?+?4,?j).Value
????????Next?j
????????Dim?k?As?Integer
????????a?=?0
????????For?k?=?sCol?To?sCol?+?YZS?-?1
???????????a?=?a?+?Cells(sRow?+?2?*?DJS?+?4?+?i,?k)?'綜合關(guān)聯(lián)度累加
????????Next?k
?????
13、???Cells(sRow?+?2?*?DJS?+?4?+?i,?sCol?+?YZS).Value?=?a
????Next?i
????'計算可拓指數(shù)
????'找最小與最大關(guān)聯(lián)度
????Dim?Kmax,?Kmin?As?Double
????Kmax?=?Cells(sRow?+?2?*?DJS?+?4?+?1,?sCol?+?YZS).Value
????Kmin?=?Kmax
????For?i?=?2?To?DJS
??????If?Kmax?
14、=?Cells(sRow?+?2?*?DJS?+?4?+?i,?sCol?+?YZS).Value
??????End?If
??????If?Kmin?>?Cells(sRow?+?2?*?DJS?+?4?+?i,?sCol?+?YZS).Value?Then
????????Kmin?=?Cells(sRow?+?2?*?DJS?+?4?+?i,?sCol?+?YZS).Value
??????End?If
????Next?i
????
????Dim?KXP()?As?Double
????ReDim?KXP(DJS)?As?Double
????For?i?=?1?To?DJS
??
15、????KXP(i)?=?(Cells(sRow?+?2?*?DJS?+?4?+?i,?sCol?+?YZS).Value?-?Kmin)?/?(Kmax?-?Kmin)
????Next?i
????Dim?FZ,?FM?As?Double
????For?i?=?1?To?DJS
??????FZ?=?FZ?+?i?*?KXP(i)
??????FM?=?FM?+?KXP(i)
????Next?i
????Cells(sRow?+?3?*?DJS?+?5,?sCol).Value?=?FZ?/?FM
End?With
我做地下水水質(zhì)評價時用到的公式是這樣的:
矩跟關(guān)聯(lián)度的公式是
16、通常用到的那個,即:
p(xj,xij)=|xj-0.5(aij+bij)|-0.5(bij-aij)
關(guān)聯(lián)函數(shù)計算公式:
當(dāng)xj屬于xij時,ki(xj)=-p(xj,xij)/|xij|
當(dāng)xj不屬于xij時,ki(xj)=p(xj,xij)/[p(xj,xrj)-p(xj,xij)]
綜合關(guān)聯(lián)度計算公式:
Kj(p)=a1*kj(x1)+a2*kj(x2)+...+an*kj(xn)
權(quán)重用的污染因子貢獻率法:
ai=(xi/Si)/(x1/S1+x2/S2+...xn/Sn)
可拓指數(shù)用公式:
KXP=(Kj(X)-Min(Kj(X)))/(Max(Kj(X))-Min(Kj(X)))
由于涉及的內(nèi)容或者思路一同,可能選用的關(guān)聯(lián)度計算公式,權(quán)重計算公式不同,酌情參考。
參考源程序里最初的部分,后面的變量說明有詳細解釋,定義要評價的參數(shù)個數(shù),評價的等級等,相應(yīng)的在excel表格里的參數(shù)個數(shù)與評價等級的行數(shù)要與之對應(yīng)。
PS:上面的代碼里因子個數(shù)是通過跳出的對話框手動輸入進去的。
專心---專注---專業(yè)