Параллельная оптимизация для аргументов в ограничениях с Python - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь использовать scipy.optimize.minimze для минимизации целевой функции следующим образом.

import numpy as np]
from scipy import optimize
max_q_fun = lambda q : -q     
def max_q_min(args):
        cons = args 
        res = optimize.minimize(max_q_fun, (0.1), method='SLSQP', bounds = ((0,1),), constraints=cons)
        q = res.x
        return q 
total_counts = np.arange(0,10)
num_actions = 10         
args = [({'type': 'ineq', 'fun': lambda q: total_counts[act] * 
                 (p[act] * np.log(p[act] / q) + (1-p[act]) * np.log((1-p[act]) / (1-q))) - np.log(10)}) 
                for act in range(num_actions)]
pl = Pool(num_actions)
actions = pl.map(max_q_min,args)
current_action = np.argmax(actions)

Однако, если я использую Pool на from pathos.multiprocessing import ProcessingPool as Pool, ошибка показывает, что

NameError: name 'np' is not defined

Если я использую Pool на from multiprocessing import Pool, ошибка показывает, что AttributeError: Can't pickle local object 'kl_ucb.act.<locals>.max_q_min'.

Есть идеи, как использовать параллельные вычисления для разных ограничений?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...