資源簡介
otsu.py定義了最大類間方差函數,test.py用于運行GA model,IGA為遺傳算法策略的改進版本,make_video.py用于將每一代的結果制作成視頻(如果將每個點家加上一個隨機偏移,畫出來的效果會更好哦,可以自己嘗試)。杭州電子科技大學模式識別課程代碼。
這個積分有點麻煩,可以到我的github去下載:https://github.com/finepix/py_workspace/tree/master/genetic_algorithm
代碼片段和文件信息
“““
????GA?模型,?用遺傳算法求解OTSU
“““
import?random
import?matplotlib.pyplot?as?plt
import?time
import?cv2
class?GA:
????def?__init__(self?img?fitness?population_num?evolution_times?ga_length=8?crossover_pro=0.5
?????????????????variation_pro=0.001):
????????“““
????????????????????GA?model,對種群參數以及種群進行初始化
????????:param?img:?????????????????????圖像數據
????????:param?fitness:?????????????????適應度函數
????????:param?population_num:??????????種群數量
????????:param?evolution_times:?????????種群迭代次數
????????:param?ga_length:???????????????基因長度
????????:param?crossover_pro:???????????交換概率
????????:param?variation_pro:???????????變異概率
????????“““
????????#?圖像數據
????????self.data?=?img
????????#?基因長度
????????self.ga_length?=?ga_length
????????#?種群數量
????????self.population_num?=?population_num
????????#?適應度函數
????????self.fitness?=?fitness
????????#?進化次數(產生多少代后代)
????????self.evolution_times?=?evolution_times
????????#?交叉以及變異概率
????????self.crossover_pro?=?crossover_pro
????????self.variation_pro?=?variation_pro
????????#?畫圖參數
????????self.plt?=?plt
????????x?=?range(pow(2?self.ga_length))
????????y?=?[self.fitness(self.data?i)?for?i?in?x]
????????max_y?=?max(y)
????????index_max?=?y.index(max_y)
????????self.x?=?x
????????self.y?=?y
????????self.max_y?=?max_y
????????self.index_max?=?index_max
????????self.min_y?=?min(y)
????????#?隨機產生種群,并且編碼
????????self.populations?=?[]
????????#?todo??pow(2?self.ga_length)?-?1
????????max_num?=?pow(2?self.ga_length)?-?1
????????for?i?in?range(self.population_num):
????????????pop?=?random.randint(0?max_num)
????????????pop?=?self.num_encode(pop)
????????????self.populations.append(pop)
????????#?todo?initialize
????def?selection(self):
????????“““
????????????????通過輪盤法選擇
????????:return:
????????“““
????????#?#?todo?delete
????????#?gen?=?self.statistics()
????????#?print(‘before?selection:‘?gen)
????????#?計算每一個個體的適應度值
????????fitness_list?=?self.calculate_fitness_list()
????????#?存在誤差
????????#?fitness_sum?=?np.sum(fitness_list)
????????#?fitness_pro?=?fitness_list?/?fitness_sum
????????fitness_sum?=?0.0
????????for?fit?in?fitness_list:
????????????fitness_sum?+=?fit
????????fitness_pro?=?[]
????????for?i?in?range(len(fitness_list)):
????????????fitness_pro.append(fitness_list[i]?/?fitness_sum)
????????pro_sum?=?0.0
????????for?i?in?range(1?self.population_num):
????????????pro_sum?+=?fitness_pro[i]
????????????fitness_pro[i]?=?pro_sum
????????#?在計算中由于浮點數計算會存在誤差導致最后的概率之和不為1,這里糾正
????????fitness_pro[-1]?=?1
????????next_generations?=?[]
????????for?i?in?range(self.population_num):
????????????#?產生一個0?-?1的概率
????????????pro?=?random.uniform(0?1)
????????????#?可優化(先計算完輪盤選擇的全部概率分布,歸結子問題),見上
????????????if?pro?<=?fitness_pro[0]:
????????????????next_generations.append(self.populations[0])
????????????????continue
????????????for?j?in?range(self.population_num?-?1):
????????????????if?fitness_pro[j]?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-11-27?16:47??genetic_algorithm\
?????文件???????12630??2018-11-27?11:15??genetic_algorithm\GA.py
?????文件???????11107??2018-11-27?12:09??genetic_algorithm\IGA.py
?????文件???????????2??2018-11-21?16:40??genetic_algorithm\__init__.py
?????目錄???????????0??2018-11-27?16:48??genetic_algorithm\ga_process\
?????文件???????42809??2018-11-27?12:09??genetic_algorithm\ga_process\iter_0.jpg
?????文件???????42033??2018-11-27?12:10??genetic_algorithm\ga_process\iter_1.jpg
?????文件???????40501??2018-11-27?12:11??genetic_algorithm\ga_process\iter_10.jpg
?????文件???????39639??2018-11-27?12:12??genetic_algorithm\ga_process\iter_100.jpg
?????文件???????39597??2018-11-27?12:12??genetic_algorithm\ga_process\iter_101.jpg
?????文件???????39640??2018-11-27?12:12??genetic_algorithm\ga_process\iter_102.jpg
?????文件???????39592??2018-11-27?12:12??genetic_algorithm\ga_process\iter_103.jpg
?????文件???????39531??2018-11-27?12:12??genetic_algorithm\ga_process\iter_104.jpg
?????文件???????39553??2018-11-27?12:12??genetic_algorithm\ga_process\iter_105.jpg
?????文件???????39623??2018-11-27?12:12??genetic_algorithm\ga_process\iter_106.jpg
?????文件???????39545??2018-11-27?12:12??genetic_algorithm\ga_process\iter_107.jpg
?????文件???????39635??2018-11-27?12:12??genetic_algorithm\ga_process\iter_108.jpg
?????文件???????39608??2018-11-27?12:12??genetic_algorithm\ga_process\iter_109.jpg
?????文件???????40234??2018-11-27?12:11??genetic_algorithm\ga_process\iter_11.jpg
?????文件???????39631??2018-11-27?12:12??genetic_algorithm\ga_process\iter_110.jpg
?????文件???????39545??2018-11-27?12:12??genetic_algorithm\ga_process\iter_111.jpg
?????文件???????39618??2018-11-27?12:12??genetic_algorithm\ga_process\iter_112.jpg
?????文件???????39596??2018-11-27?12:12??genetic_algorithm\ga_process\iter_113.jpg
?????文件???????39599??2018-11-27?12:12??genetic_algorithm\ga_process\iter_114.jpg
?????文件???????39654??2018-11-27?12:12??genetic_algorithm\ga_process\iter_115.jpg
?????文件???????39636??2018-11-27?12:12??genetic_algorithm\ga_process\iter_116.jpg
?????文件???????39550??2018-11-27?12:12??genetic_algorithm\ga_process\iter_117.jpg
?????文件???????39627??2018-11-27?12:12??genetic_algorithm\ga_process\iter_118.jpg
?????文件???????39637??2018-11-27?12:12??genetic_algorithm\ga_process\iter_119.jpg
?????文件???????40384??2018-11-27?12:11??genetic_algorithm\ga_process\iter_12.jpg
?????文件???????39588??2018-11-27?12:12??genetic_algorithm\ga_process\iter_120.jpg
............此處省略246個文件信息
評論
共有 條評論