Python實(shí)現(xiàn)模糊Borda法
要對(duì)一些數(shù)據(jù)進(jìn)行評(píng)估,需要用到模糊Borda法,參考了一些論文中給出的公式,只能說(shuō),好吧,但凡寫(xiě)論文的那些大仙認(rèn)真看看這種發(fā)放怎么實(shí)現(xiàn)的,那些推導(dǎo)共識(shí)也不會(huì)寫(xiě)的亂七八糟的,看了幾篇這兩年的論文后,我都絕望了,都啥呀。
網(wǎng)上搜索實(shí)現(xiàn),有一篇文章:[刨根問(wèn)底] 五分鐘搞懂組合評(píng)價(jià)模型—模糊Borda (以2021 年大學(xué)生數(shù)模國(guó)賽C題為例)。MATLAB實(shí)現(xiàn)的,至少人家的公式求最大最小值時(shí),還知道標(biāo)上如下圖所示是行還是列的最大最小值。那些論文中的,把紅框中的j去掉,真人才。里面有一些公式的符號(hào)有點(diǎn)問(wèn)題,但是參考著代碼看,多少能看懂,模仿這別人用Python做了一個(gè)實(shí)現(xiàn)。里面的a要用自己的np.array做替換,其他的不需要任何改動(dòng)。中間為了查看輸出的數(shù)據(jù)是否正確,寫(xiě)了大量的print,這還是我刪了很多留下的,矩陣變換,真的有點(diǎn)費(fèi)腦子。

吐槽完畢,代碼貼出來(lái),說(shuō)一下那些小細(xì)節(jié),網(wǎng)上實(shí)現(xiàn)的,MATLAB里面點(diǎn)乘、叉乘、轉(zhuǎn)置這些,看實(shí)現(xiàn)要注意的。第一個(gè)for循環(huán)里的排序如下這行代碼
不能用默認(rèn)的排序方式,所以a前面加了個(gè)“-”號(hào),不然出來(lái)的結(jié)果,沒(méi)法看。就這樣吧,看書(shū)了??凑撐膽?yīng)該還算常用,為啥之前連個(gè)Python實(shí)現(xiàn)都沒(méi)人寫(xiě)呢,好奇。