Skip to content
Snippets Groups Projects
optimizer.py 986 B
Newer Older
  • Learn to ignore specific revisions
  • 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