Newer
Older
class Optimizer:
def __init__(self, problem):
self.problem = problem
def solve_optimization_problem(self, initial_guesses=None, solver_options=None):
opti = self.problem['opti']
if initial_guesses:
for param, value in initial_guesses.items():
opti.set_initial(self.problem[param], value)
# Set numerical backend, with options if provided
if solver_options:
opti.solver('ipopt', solver_options)
else:
opti.solver('ipopt')
try:
sol = opti.solve() # actual solve
status = 'succeeded'
except:
sol = None
status = 'failed'
results = {
'status' : status,
'solution' : sol,
}
if sol:
for var_name, var in self.problem.items():
if var_name != 'opti':
results[var_name] = sol.value(var)
return results