'''
遗传算法拟合数字图像
'''
from PIL import Image
import numpy as np
##计算适应度=-方差
def CalcFitness(genes, target):
s = np.square(genes.astype(np.int32) - target.astype(np.int32)).sum(axis=-1).sum(axis=-1)
#print('适应度', -s)
index = np.argsort(s) # 适应度排序的序号数组
#print(index)
return -s, index
# 选择
# 保留适应度最高的fiti[0]
def selection(fiti):
'''
联赛选择
:param fiti: 适应度排序的序号数组
:return: 选中的序号
'''
def s1(n, m=2):
'''
从n个选择一个,m选择压,返回选择的序号
'''
return np.random.randint(0, n, m).min()
s = np.size(fiti)
r = np.empty_like(fiti)
for i in range(s):
ri = fiti[s1(s)]
r[i] = ri
#print('选择', r)
return r
def AcrChrom(PG, sel):
'''
交叉
:param PG:
:param sel:
:return:
'''
def acr(c1, c2, v1, v2):
# 交叉
# 0.9概率
# 返回深复制
(x, y) = c1.shape
ra=np.random.rand()
if ra < 0.3:
x1 = np.random.randint(0, x)
x2 = np.random.randint(0, x)
if x1 > x2:
x1, x2 = x2, x1
v1[:x1, :] = c2[:x1, :]
v1[x1:x2, :] = c1[x1:x2, :]
v1[x2:, :] = c2[x2:, :]
v2[:x1, :] = c1[:x1, :]
v2[x1:x2, :] = c2[x1:x2, :]
v2[x2:, :] = c1[x2:, :]
elif 0.3<ra<0.6:
x1 = np.random.randint(0, y)
x2 = np.random.randint(0, y)
if x1 > x2:
x1, x2 = x2, x1
v1[:, :x1] = c2[:, :x1]
v1[:, x1:x2] = c1[:, x1:x2]
v1[:, x2:] = c2[:, x2:]
v2[:, :x1] = c1[:, :x1]
v2[:, x1:x2] = c2[:, x1:x2]
v2[:, x2:] = c1[:, x2:]
elif 0.6<ra<0.9:
x1 = np.random.randint(0, x)
x2 = np.random.randint(0, x)
if x1 > x2:
x1, x2 = x2, x1
y1 = np.random.randint(0, y)
y2 = np.random.randint(0, y)
v1 = c1
v2 = c2
v1[x1:x2,y1:y2]=c2[x1:x2,y1:y2]
v2[x1:x2, y1:y2] = c1[x1:x2, y1:y2]
else:
v1 = c1
v2 = c2
s = np.size(sel)
PG2 = np.empty_like(PG)
i = 2
while i < s:
acr(PG[sel[i]], PG[sel[i+1]], PG2[i], PG2[i + 1])
i += 2
return PG2
def mutation(PG,p):#p为变异率
n, a, b = PG.shape
n=n-2
m=n*a*b
mu = m*p
sigma = mu*(1-p)
ra= sigma * np.random.randn() + mu
ra=int(ra)
# print(ra)
if ra<=0 :
ra=1
elif ra>=m:
ra=m
for i in range(ra):
PG[np.random.randint(2, n+2)][np.random.randint(0, a)][np.random.randint(0, b)] = np.random.randint(0, 256)
return ra
####
G = 0
FES = 0
N = 100 # 每代个体数 偶数
Gmax = 10000 # 最大迭代次数
rate=0.05 #初始变异率
##读取图像
im = np.array(Image.open('0_0.bmp'))
# 随机初始化
(a, b) = im.shape
shape3d = (N, a, b)
PG = np.random.randint(0, 256, shape3d, dtype=im.dtype)
rate0=rate
fitn = []
for i in range(Gmax+1):
fitG, fiti = CalcFitness(PG, im)
bestfit = PG[fiti[0]].copy()
u = (np.mean(fitG), fitG[fiti[0]])
# fitn.append(u)
sel = selection(fiti)
PG = AcrChrom(PG, sel)
ra= mutation(PG,rate)
# rate= (1 - (1.0 * i / Gmax)) * rate0
# rate = (1 - (1.0 * i / Gmax))**2 * rate0
rate = (1 - (10.0 / Gmax)) * rate
PG[0]=bestfit
PG[1] = bestfit
if i % 50 == 0 :
print('代数 ', i, '变异数', ra, '适应度(平均,最高)', u)
img=Image.fromarray(bestfit)
img.save('./png/0_{}.png'.format(i))
print('结束')
#print('适应度变化', fitn)
没有合适的资源?快使用搜索试试~ 我知道了~
基于Python实现遗传算法拟合数字图像(源码+图片).rar
共3个文件
py:1个
gitkeep:1个
bmp:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 3 下载量 72 浏览量
2023-03-22
16:39:47
上传
评论
收藏 2KB RAR 举报
温馨提示
1、资源内容:基于Python实现遗传算法拟合数字图像(源码+图片).rar 2、适用人群:计算机,电子信息工程、数学等专业的学习者,作为“参考资料”参考学习使用。 3、解压说明:本资源需要电脑端使用WinRAR、7zip等解压工具进行解压,没有解压工具的自行百度下载即可。 4、免责声明:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。由于作者大厂工作较忙,不提供答疑服务,如不存在资源缺失问题概不负责,谢谢理解。
资源推荐
资源详情
资源评论
收起资源包目录
基于Python实现遗传算法拟合数字图像(源码+图片).rar (3个子文件)
基于Python实现遗传算法拟合数字图像(源码+图片)
main.py 4KB
png
.gitkeep 0B
0_0.bmp 2KB
共 3 条
- 1
资源评论
- m0_735753442024-04-14支持这个资源,内容详细,主要是能解决当下的问题,感谢大佬分享~
- liugenb2024-05-07资源很不错,内容和描述一致,值得借鉴,赶紧学起来!
- 2301_777663782023-05-07支持这个资源,内容详细,主要是能解决当下的问题,感谢大佬分享~
Matlab仿真实验室
- 粉丝: 3w+
- 资源: 2410
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- sdddddddddaaaaaaaaaa
- Linux部署文件资料
- JAVA软件工程师面试题
- formatted-task013-mctaco-answer-generation-absolute-timepoint.json
- formatted-task012-mctaco-question-generation-absolute-timepoint.json
- Record_2024-11-28-10-02-25.mp4
- formatted-task011-mctaco-wrong-answer-generation-event-ordering.json
- Record_2024-11-28-10-03-13.mp4
- formatted-task010-mctaco-answer-generation-event-ordering.json
- springboot农用车4S店管理系统答辩PPT
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功