Параллельная многомерная оптимизация

Я строю сценарий, который генерирует входные данные [параметры] для другой программы для расчета. Я хотел бы оптимизировать полученные данные. Ранее я использовал оптимизацию NumPy Powell. Код псевдо выглядит примерно так.

def value(param):
     run_program(param)
     #Parse output
     return value

scipy.optimize.fmin_powell(value,param) 

Это прекрасно работает; однако, это невероятно медленно, поскольку каждая итерация программы может занять несколько дней. То, что я хотел бы сделать, это грубое зерно распараллелить это. Таким образом, вместо запуска одной итерации за раз она будет выполняться (количество параметров) * 2 за раз. Например:

Initial guess: param=[1,2,3,4,5]

#Modify guess by plus minus another matrix that is changeable at each iteration
jump=[1,1,1,1,1]
#Modify each variable plus/minus jump.
for num,a in enumerate(param):
    new_param1=param[:]
    new_param1[num]=new_param1[num]+jump[num]
    run_program(new_param1)
    new_param2=param[:]
    new_param2[num]=new_param2[num]-jump[num]
    run_program(new_param2)

#Wait until all programs are complete -> Parse Output
Output=[[value,param],...]
#Create new guess
#Repeat

Число переменных может варьироваться от 3 до 12, поэтому что-то подобное может ускорить выполнение кода с года до недели. Все переменные зависят друг от друга, и я только ищу локальные минимумы из первоначального предположения. Я начал реализацию, используя гессианские матрицы; однако, это довольно сложно. Есть ли что-нибудь, что либо делает это, есть более простой способ, или какие-либо предложения, чтобы начать?

Итак, основной вопрос заключается в следующем: существует ли алгоритм, который принимает начальное предположение, генерирует несколько догадок, затем использует эти множественные догадки для создания нового догадки и повторяется до тех пор, пока не будет найден порог. Доступны только аналитические производные. Какой хороший способ сделать это, есть ли что-то уже построенное, что делает это, есть ли другие варианты?

Спасибо за ваше время.

В качестве небольшого обновления у меня действительно есть эта работа, вычисляя простые параболы через три точки каждого измерения, а затем используя минимумы в качестве следующего предположения. Кажется, это работает прилично, но не оптимально. Я все еще ищу дополнительные варианты.

Наилучшая текущая реализация - распараллеливание внутреннего цикла Пауэлла.с метод.

Спасибо всем за ваши комментарии. К сожалению, похоже, что на эту конкретную проблему просто нет четкого ответа. Если я займусь реализацией чего-то, что делает это, я вставлю это сюда; однако, так как проект не особенно важен или необходимость получения результатов не заставит себя ждать, я, скорее всего, буду доволен тем, что он некоторое время будет занимать узел.