В настоящее время я использую тазобедренный анализ из библиотеки scipy, чтобы найти оптимальный x (где x состоит из 4 факторов), который оптимизирует мою целевую функцию.Когда я запускаю его несколько раз, он дает разные результаты для каждого запуска.Есть ли способ сделать результат более согласованным (т. Е. Минимизировать параметры функции на протяжении нескольких итераций)?
cons = [
{
'type': 'eq',
'fun': lambda x: x[0] + x[1] + x[2] - 1
},
{
'type': 'ineq',
'fun': lambda x: (w_0 / prob_death(T)[T-1]) - x[3]
},
{
'type': 'ineq',
'fun': lambda x: x[3] - 10000
}
]
bounds = ( (0, 1), (0, 1), (0, 1), (0, 1'000'000)) )
res = basinhopping(func = utility_expected,
x0 = np.array([0.33, 0.33, 0.33, 50000]),
minimizer_kwargs = {"method": 'SLSQP',
"bounds": bounds,
"constraints": cons,
"options": {
"eps": 0.01,
"ftol": 0.001
}
},
disp = False,
interval = 40,
niter = 250)