Мне нужно использовать emcee
в некотором коде, который я пишу. Мне нужно искать в пространстве параметров какое-то оптимальное решение, как это делается с emcee
. Для моего приложения, по сути, есть две части прямой задачи, которую я решаю. Скажем, у меня есть параметры {a, b, c, d, e, f} . Подмножество {a, b, c} подключено к функции G ; Запуск функции g занимает 1 секунду. Подмножество {d, e, f} подключено к функции H ; Запуск функции h занимает 1 миллисекунду. Я объединяю результаты функций G & H в своей функции Q , чтобы получить окончательное решение.
Если я хочу использовать emcee для найти оптимальное решение для Q с пространством параметров {a, b, c, d, e, f}, существует ли стандартный правильный (оптимальный) способ go по этому поводу?
Я думаю, что должен запустить emcee
для всего процесса, где Q определяет функцию минимизации. Поэтому я думаю, что могу запустить emcee
, где функция log-likelihood()
принимает параметры {a, b, c} и запускает функцию G для этих параметров. Внутри функции log-likelihood()
будет дополнительный вызов emcee
, который найдет оптимальные значения параметров {d, e, f} в соответствии с функцией H . Это будет означать, что для определенного набора значений параметров {a, b, c} = {a0, b0, c0} , что занимает 1 секунду, 1000 значений {d, e, f } можно пройти, что также занимает одну секунду, и будет найдено оптимальное решение для этого {a0, b0, c0} . Внешний вызов emcee
может проходить минимальное количество раз, например, 1000 значений, что означает, что функция F будет выполняться 1000 раз, но функция G будет вызываться 1000 х 1000 = 1 000 000 раз.
Может ли это решение вообще работать? Что-то подобное уже было реализовано в emcee
или в каком-либо расширении библиотеки? Есть ли другой оптимальный способ сделать это лучше, чем я думал?