二進位制學習差分進化演算法(BLDE)的R語言實現

2021-07-13 21:22:06 字數 1020 閱讀 7675

二進位制學習差分進化演算法(blde)是筆者在做**的時候用到的一種優化演算法,其依概率全域性收斂於最優解,且收斂速度相對比較快,是為數不多的優秀二進位制差分進化演算法。由yu chen等2023年在一篇文章中提出,大家可以在谷歌學術上搜這篇文章看一下a binary differential evolution algorithm learning from explored solutions,裡面有詳細的演算法步驟和原理證明。本文首先給出blde的r語言實現,然後給出乙個求平方和的例子,極大化該函式,且列印出迭代過程。

#####二進位制差分進化演算法的r語言實現

#產生初始種群

funcmatrix<-function(i,j)

#發現精英個體

findmaxfunc<-function(x)

#比較個體

winfunc<-function(x,y) else

z<-y

return(z)

}#blde 核心 function

funcb<-function(x,y)

else if(runif(1,min=0,max=1)<=0.05) }}

if(funcv(tx)>=funcv(x[q,]))

}return(x)

}#產生下一代種群以及archive

funcxy<-function(x,y)

#進化過程

bldefunc<-function(popula_size,chrom_size,gmax)

plot(v[1,],v[2,],type="l")

h<-a[sample(which(l==max(l)),1),]

print(h)

return(funcv(h))

}#####乙個例子

###blde所要優化的目標函式,函式維度為length(x)

funcv<-function(x)

bldefunc(50,100,400)

如有錯誤,歡迎指正!

二進位制演算法

首先是6個二進位制的運算子 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1 取反 是一元運算子,用來對乙個二進位制數按位取反,即將0變...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

二進位制壓縮 演算法

二進位制壓縮 在程式設計時遇到每個資料只有兩種狀態,且 dfs 或者 bfs 時遍歷時間複雜度高時,可以採用二進位制壓縮資料,尤其是二維陣列。1.二進位制壓縮乙個二位陣列 例如 正常儲存資料回使用二位陣列,1,0,即 0100 0000 0000 0100如果我們採用二進位制壓縮為乙個 int 型別...