From faa3eb9434563c2ccfe27c34e95bff1232bb2811 Mon Sep 17 00:00:00 2001 From: Andy Eschbacher Date: Mon, 10 Apr 2017 11:59:17 -0400 Subject: [PATCH] cleans check constraint code --- .../crankshaft/crankshaft/optimization/optim.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/py/crankshaft/crankshaft/optimization/optim.py b/src/py/crankshaft/crankshaft/optimization/optim.py index d32ece6..14f0386 100644 --- a/src/py/crankshaft/crankshaft/optimization/optim.py +++ b/src/py/crankshaft/crankshaft/optimization/optim.py @@ -55,10 +55,19 @@ class Optim(object): def _check_constraints(self): """Check if inputs are within constraints""" - if (self.model_data['source_amount'].sum() > - self.model_data['drain_capacity'].sum()): - plpy.error("Solution not possible. Drain capacity is smaller " - "than total source production.") + total_capacity = self.model_data['drain_capacity'].sum() + total_amount = self.model_data['source_amount'].sum() + if total_amount > total_capacity: + raise ValueError("Solution not possible. Drain capacity is " + "smaller than total source production.") + elif total_capacity <= 0: + raise ValueError("Capacity must be greater than zero") + + plpy.notice('Capacity: {total_capacity}, ' + 'Amount: {total_amount} ' + '({perc}%)'.format(total_capacity=total_capacity, + total_amount=total_amount, + perc=100.0 * total_amount / total_capacity)) return None def _check_model_params(self):