cluster_network: Fall back to using ipopt in distribute_clusters

if the configured solver does not support quadratic objectives.
This commit is contained in:
Jonas Hoersch 2019-02-10 14:43:57 +01:00
parent 6284cf7e8b
commit 448e8c238e

View File

@ -81,8 +81,10 @@ def distribute_clusters(n, n_clusters, solver_name=None):
sense=po.minimize) sense=po.minimize)
opt = po.SolverFactory(solver_name) opt = po.SolverFactory(solver_name)
if isinstance(opt, pypsa.opf.PersistentSolver): if not opt.has_capability('quadratic_objective'):
opt.set_instance(m) logger.warn(f'The configured solver `{solver_name}` does not support quadratic objectives. Falling back to `ipopt`.')
opt = po.SolverFactory('ipopt')
results = opt.solve(m) results = opt.solve(m)
assert results['Solver'][0]['Status'].key == 'ok', "Solver returned non-optimally: {}".format(results) assert results['Solver'][0]['Status'].key == 'ok', "Solver returned non-optimally: {}".format(results)