Как сделать хулиганство Сципи менее чувствительным в Python - PullRequest
0 голосов
/ 14 мая 2019

Я выполняю оптимизацию, которая оптимизирует функцию ~ 10 параметров. Сама функция занимает достаточно много времени (несколько секунд) для оценки, и ее пейзаж очень изменчив. Он может принимать значения от 0 до 1, где 0 является теоретическим оптимумом, но я ожидаю, что наилучшее значение будет около ~ 0,01

Я использую алгоритм poolshopping для оценки его минимума, однако в каждом бассейне функция, по-видимому, оптимизируется для очень маленького фута около 10 ^ -9.

Мне не нужен этот уровень точности, и вместо этого я хотел бы более тщательно исследовать ландшафт. Я хотел бы настроить algotihm так, чтобы локальные минимумы были оптимизированы только до значения около 10 ^ -4 в лучшем случае.

Я думал, что это будет вопрос передачи некоторых футов функции минимизатора, но я не могу заставить это работать. Я передаю это тазобедренному промыслу:

minimizer_kwargs = {"method": "L-BFGS-B","options": {"ftol":1e-2}}

но это, кажется, не имеет никакого эффекта, и функция все еще оценивается для значений с небольшим увеличением 10 ^ -9 в оптимальном значении.

Как мне этого избежать? Если это действительно так, что функция не может быть оценена выше этого значения, то я бы предпочел просто вывести значение «0,10», а не тратить возраст, оценивая, является ли оно «0,1000000001» или «0,1000000002»

...