У меня есть функция, которая принимает некоторые параметры и возвращает число с плавающей точкой.И у них есть распределения для каждого из параметров.
class Ranges:
K = range(0, 100)
D = range(0, 100)
KD_difference = ('K>D', 'K<D', 'K=D', None)
def function(parameters):
# <some code>
return result # -10.2 or 32.4 etc.
Как я мог найти оптимизированные значения моих параметров с помощью функции быстрой оптимизации?
I've tried grid optimisation:
for K in Ranges.K:
for D in Ranges.D:
for KD in Ranges.KD_difference:
parameters = (K, D, KD)
result = function(parameters)
# ... chose parameters, that give max result value
... но это было слишком медленно.Чем я пробовал случайный поиск:
import random
while True:
parameters = (
random.choice(Ranges.K),
random.choice(Ranges.D),
random.choice(Ranges.KD_difference)
)
result = function(parameters)
# ... chose parameters, that give max result value
... но он не может дать мне полностью оптимизированные значения моих параметров.
Теперь я ищу использовать scipy.optimize,Но я не могу понять, где я должен поставить свои распределения для каждого параметра и как он мог получить строковые значения для параметра 'KD_difference'.Пожалуйста, дайте мне совет или пример, как я могу оптимизировать свои параметры?