Есть функция, которая считается по формуле.
Затем я передаю результат функции в функцию differential_evolution.
Но в перебор попадают значения наподобие 3.23343343.
Как мне сделать чтобы в функцию differential_evolution попадали только целочисленные значения?
from scipy.optimize import differential_evolution
import numpy as np
def function2(x):
res = x[0] * x[1]
if res < 100:
with open("генетика.csv", "a") as f:
f.write(str(x))
f.write('\t')
f.write(str(res))
f.write('\n')
return res
bounds = [(-5, 5),(-10, 10)]
result = differential_evolution(function2, bounds)
result.x, result.fun
print(result.x, result.fun)
Я нашел функцию по проверке на целое число.
Но когда подставляю ее в мою функцию, то differential_evolution выдает ошибку, так как функция не возвращает никакого значения,если я туда подаю не целое число.
Как грамотно задать, чтобы в мою функцию попадали только целые числа?
Или придется менять саму функцию differential_evolution? Она огромная -700 строк и я ее боюсь =)
def is_int(x):
temp = str(x) # конвертируем в str для проверок
i = 0 # счетчик
while i < len(temp):
if temp[i] == '.': # проверяем является ли целым / узнаем индекс нуля
while i + 1 < len(temp): # пробегаемся по индексам после "."
if temp[i + 1] != '0': # если после "." не ноль - не Int
return False
i += 1
else:
return True
i += 1
else:
return True # если "." нет - следовательно Int