{"id":1322,"date":"2023-03-25T10:12:45","date_gmt":"2023-03-25T02:12:45","guid":{"rendered":""},"modified":"2023-03-25T10:12:45","modified_gmt":"2023-03-25T02:12:45","slug":"\u9057\u4f20\u7b97\u6cd5","status":"publish","type":"post","link":"https:\/\/bianchenghao6.com\/1322.html","title":{"rendered":"\u9057\u4f20\u7b97\u6cd5"},"content":{"rendered":"
\n
\u9057\u4f20\u7b97\u6cd5\u8be6\u7ec6\u64cd\u4f5c\u6559\u7a0b<\/span>\n <\/div>\n \u7b2c1\u6b65<\/strong> - \u968f\u673a\u751f\u6210\u521d\u59cb\u7fa4\u4f53\u3002<\/span>\u4ec0\u4e48\u662f\u9057\u4f20\u7b97\u6cd5\uff1f<\/h2>\n
\u5982\u4f55\u4f7f\u7528\u9057\u4f20\u7b97\u6cd5\u4f18\u5316\u95ee\u9898\uff1f<\/h2>\n
\n <\/div>\n
GA\u673a\u5236\u4f18\u5316\u8fc7\u7a0b\u7684\u9636\u6bb5<\/h2>\n
\n \u7b2c2\u6b65<\/strong> - \u9009\u62e9\u5177\u6709\u6700\u4f73\u9002\u5e94\u503c\u7684\u521d\u59cb\u89e3\u51b3\u65b9\u6848\u3002<\/span>
\n \u7b2c3\u6b65<\/strong> - \u4f7f\u7528\u53d8\u5f02\u548c\u4ea4\u53c9\u7b97\u5b50\u91cd\u7ec4\u9009\u5b9a\u7684\u89e3\u51b3\u65b9\u6848\u3002<\/span>
\n \u7b2c4\u6b65<\/strong> - \u5c06\u540e\u4ee3\u63d2\u5165\u7fa4\u4f53\u3002<\/span>
\n \u7b2c5\u6b65<\/strong> - \u73b0\u5728\uff0c\u5982\u679c\u505c\u6b62\u6761\u4ef6\u5f97\u5230\u6ee1\u8db3\uff0c\u5219\u8fd4\u56de\u5177\u6709\u6700\u4f73\u9002\u5e94\u503c\u7684\u89e3\u3002 \u5426\u5219\uff0c\u8bf7\u8f6c\u5230\u7b2c2\u6b65\u3002<\/span> <\/p>\n\u5b89\u88c5\u5fc5\u8981\u7684\u8f6f\u4ef6\u5305<\/h2>\n
# Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
pip install deap
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
conda install -c conda-forge deap
<\/span><\/code><\/pre>\n<\/p><\/div>\n\u4f7f\u7528\u9057\u4f20\u7b97\u6cd5\u5b9e\u73b0\u89e3\u51b3\u65b9\u6848<\/h2>\n
# Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
import <\/span>random
from <\/span>deap import <\/span>base, creator, tools
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
def <\/span>eval_func(individual):
target_sum = 15
return <\/span>len(individual) - abs(sum(individual) - target_sum)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
def <\/span>create_toolbox(num_bits):
creator.create<\/span>(\"FitnessMax\"<\/span>, base.Fitness, weights=<\/span>(1.0,))
creator.create<\/span>(\"Individual\"<\/span>, list, fitness=creator.FitnessMax)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
toolbox = base.Toolbox<\/span>()
toolbox.register<\/span>(\"attr_bool\"<\/span>, random.randint, 0, 1)
toolbox.register<\/span>(\"individual\"<\/span>, tools.initRepeat, creator.Individual,
toolbox.attr_bool, num_bits)
toolbox.register<\/span>(\"population\"<\/span>, tools.initRepeat, list, toolbox.individual)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
toolbox.register<\/span>(\"evaluate\"<\/span>, eval_func)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
toolbox.register<\/span>(\"mate\"<\/span>, tools.cxTwoPoint)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
toolbox.register<\/span>(\"mutate\"<\/span>, tools.mutFlipBit, indpb = 0.05)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
toolbox.register<\/span>(\"select\"<\/span>, tools.selTournament, tournsize = 3)
return <\/span>toolbox
if <\/span>__name__ == \"__main__\"<\/span>:
num_bits = 45
toolbox = create_toolbox(num_bits)
random.seed<\/span>(7)
population = toolbox.population<\/span>(n = 500)
probab_crossing, probab_mutating = 0.5, 0.2
num_generations = 10
print('\\nEvolution process starts'<\/span>)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
fitnesses = list(map(toolbox.evaluate, population))
for <\/span><\/span>ind, fit in <\/span>zip(population, fitnesses):
ind.fitness.values = fit
print('\\nEvaluated'<\/span>, len(population), 'individuals'<\/span>)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
for <\/span><\/span>g in <\/span>range(num_generations):
print(\"\\n- Generation\"<\/span>, g)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
offspring = toolbox.select<\/span>(population, len(population))
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
offspring = list(map(toolbox.clone, offspring))
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
for <\/span><\/span>child1, child2 in <\/span>zip(offspring[::2], offspring[1::2]):
if <\/span>random.random<\/span>() < probab_crossing:
toolbox.mate<\/span>(child1, child2)
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
del <\/span>child1.fitness.values
del <\/span>child2.fitness.values
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
for <\/span><\/span>mutant in <\/span>offspring:
if <\/span>random.random<\/span>() < probab_mutating:
toolbox.mutate<\/span>(mutant)
del <\/span>mutant.fitness.values
<\/span><\/code><\/pre>\n<\/p><\/div>\n # Filename : example.py<\/span>
# Copyright : 2020 By Lidihuo<\/span>
# Author by : www.lidihuo.com<\/span>
# Date : 2020-08-26<\/span>
invalid_ind = [ind for <\/span><\/span>ind in <\/span>offspring if <\/span>