# Функция оценки для уравнения a^3 + b^3 + c^3 = 0
def fitness(a, b, c):
if a < 0 or b < 0 or c < 0:
return float('inf')
return abs(a**3 + b**3 + c**3)
def fitness(a, b, c):
return abs(a**3 + b**3 + c**3)
Опытные люди используют кеширование. То есть часто используемые записи кладут поближеЕсли смогу понять, что вы сказали - отпишусь.
к приложению (в память Python) а данные которые редко нужны - вытесняются (evict) из
памяти.
Это - медленная проверка.Медленная??? Я и от возведения в степень отказался, беру готовый ответ из базы, и проиндексировал... Очень много новых слов, значит я не на долго пропаду - пойду учиться.
Что за противоположные знаки? Это генетический алгоритм, спрашивайте у mayton2019.
import random
# Функция оценки для уравнения a^3 + b^3 + c^3 = 0
def fitness(a, b, c):
return abs(a**3 + b**3 + c**3)
# Генерация начальной популяции
def generate_population(size, x_range):
return [[random.randint(*x_range), random.randint(*x_range), random.randint(*x_range)] for _ in range(size)]
# Скрещивание
def crossover(x, y):
z = []
for i in range(len(x)):
if random.random() < 0.5:
z.append(x[i])
else:
z.append(y[i])
return z
# Мутация
def mutate(x, x_range):
i = random.randint(0, len(x) - 1)
x[i] = random.randint(*x_range)
return x
# Генетический алгоритм
def genetic_algorithm(fitness, generate_population, crossover, mutate, population_size, x_range, generations):
population = generate_population(population_size, x_range)
for _ in range(generations):
population = sorted(population, key=lambda x: fitness(*x))
if fitness(*population[0]) == 0:
break
next_generation = population[:2] # Элитизм
while len(next_generation) < population_size:
parents = random.sample(population[:10], 2) # Турнирный отбор
child = crossover(*parents)
child = mutate(child, x_range)
next_generation.append(child)
population = next_generation
return population[0]
# Параметры алгоритма
population_size = 1000
x_range = (-100, 100)
generations = 100
# Запуск алгоритма
solution = genetic_algorithm(fitness, generate_population, crossover, mutate, population_size, x_range, generations)
print(f"Найденное решение: a={solution[0]}, b={solution[1]}, c={solution[2]}")
print(f"Значение функции оценки: {fitness(*solution)}")
for(int a = 0; ; a++) {
for(int b = 0; ; b++) {
// вычисления для a и b
// вычисления для -a и b
// вычисления для a и -b
//
}
}