Форум сайта python.su
Никак не могу реализовать алгоритм нахождения минимума функции с помощью генетического алгоритма.
Помогите всемогущие!!!
import matplotlib.pyplot as plt
import math
import numpy as np
from itertools import combinations
import copy
#coding: utf8
# pop_size - размер популяции
# mutprob - чем меньше, тем реже берем мутацию и чаще скрещивание
# elite - Доля особеq в популяции, считающихся хорошими решениями и переходящих в следующее поколение
# maxiter - Количество поколений
func = lambda x, y:8*x-16-12*(x+4)**(2/3)
class Genetic_op:
def genetic_optimize(domain, costf, pop_size=50, step=1, mutprob=0.2, elite=0.2, maxiter=100):
# Мутация
def mutate(vec):
i = math.random.randint(0, len(domain)-1)
if vec < domain:
return vec+[vec+step]+vec
else:
return vec+[vec-step]+vec
# Скрещивание
def crossover(r1, r2):
i = math.random.randint(1, len(domain)-2)
return r1+r2
# Создаем первую популяцию
pop =
for i in range(pop_size):
vec = [math.random.randint(0, domain) for i in range(len(domain))]
pop.append(vec)
# Сколько лучших оставляем из каждого поколения
topelite = int(elite*pop_size)
for i in range(maxiter):
scores =
scores.sort()
ranked =
# Сначала включаем только победителеи
pop = ranked
# Добавляем особей, полученных мутацией и скрещиванием победивших родителей
while len(pop) < pop_size:
if math.random.random() < mutprob:
# Мутация
c = math.random.randint(0, topelite)
pop.append(mutate(ranked))
else:
# Скрещивание
c1 = math.random.randint(0, topelite)
c2 = math.random.randint(0, topelite)
pop.append(crossover(ranked, ranked))
return scores, scores
Офлайн
код оформляется в соответствующие теги, иначе теряется форматирование, а для питона оно важное
Офлайн
Тут проблема в том как связать уравнение и код.
Офлайн
Fenicks88Ты просто перечитай свой код, там исчезли все квадратные скобки, потому что движок форума их удалил. Выложи правильно код, используя теги кода. Без этого никто не будет вчитываться и догадки строить, что там было.
Тут проблема в том как связать уравнение и код.
реализации генетического алгоритмаСмешно выглядит “хочу бороздить просторы космоса, да только шнурки завязать не могу, чтобы до корабля дойти”.
Отредактировано py.user.next (Июль 5, 2017 23:26:41)
Офлайн