Skip to content

Commit c4f1166

Browse files
committed
reinit solvers
1 parent 3016ab0 commit c4f1166

File tree

1 file changed

+2
-27
lines changed

1 file changed

+2
-27
lines changed

src/pymgrid/algos/mpc/mpc.py

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,7 @@ def __init__(self, microgrid, solver=None):
107107
parameters = self._parse_microgrid()
108108

109109
self.problem = self._create_problem(*parameters)
110-
self._passed_solver = solver
111-
self._solver = self._get_solver()
112-
self._all_solvers = self._solvers(solver)
110+
self._solver, self._all_solvers = self._solvers(solver)
113111

114112
@property
115113
def has_genset(self):
@@ -405,30 +403,7 @@ def _solvers(self, solver=None):
405403
else:
406404
solvers.append(cp.CLARABEL)
407405

408-
return solvers
409-
410-
def _get_solver(self, failure=False):
411-
if not failure:
412-
logger.info("Using default solver." if self._passed_solver is None else f"Using {self._passed_solver} solver.")
413-
return self._passed_solver
414-
415-
# failure
416-
417-
if "MOSEK" in cp.installed_solvers():
418-
solver = cp.MOSEK
419-
elif "GLPK_MI" in cp.installed_solvers() or self._solver == cp.MOSEK:
420-
solver = cp.GLPK_MI
421-
elif self.problem.is_mixed_integer():
422-
assert self.has_genset
423-
424-
raise RuntimeError("If microgrid has a genset, the cvxpy problem becomes mixed integer. Either MOSEK or "
425-
"CVXOPT must be installed.\n"
426-
"You can install both by calling pip install -e .'[genset_mpc]' in the root folder of "
427-
"pymgrid. Note that MOSEK requires a license; see https://www.mosek.com/ for details.\n"
428-
"Academic and trial licenses are available.")
429-
430-
logger.info(f" {self._solver} Solver failed. Retrying with solver={solver}")
431-
return solver
406+
return solvers[0], solvers
432407

433408
def _set_parameters(self, load_vector, pv_vector, grid_vector, import_price, export_price,
434409
e_max, e_min, p_max_charge, p_max_discharge,

0 commit comments

Comments
 (0)