From 448e8c238ebcb78b941bdb6b36bc76e1e183fd8b Mon Sep 17 00:00:00 2001 From: Jonas Hoersch Date: Sun, 10 Feb 2019 14:43:57 +0100 Subject: [PATCH] cluster_network: Fall back to using `ipopt` in distribute_clusters if the configured solver does not support quadratic objectives. --- scripts/cluster_network.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/cluster_network.py b/scripts/cluster_network.py index 61e5affd..e5510200 100644 --- a/scripts/cluster_network.py +++ b/scripts/cluster_network.py @@ -81,8 +81,10 @@ def distribute_clusters(n, n_clusters, solver_name=None): sense=po.minimize) opt = po.SolverFactory(solver_name) - if isinstance(opt, pypsa.opf.PersistentSolver): - opt.set_instance(m) + if not opt.has_capability('quadratic_objective'): + 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) assert results['Solver'][0]['Status'].key == 'ok', "Solver returned non-optimally: {}".format(results)