From 9475649d2e3f4c447d5f47f32e85637fb2e1d186 Mon Sep 17 00:00:00 2001 From: Brandon Rodriguez <brodriguez8774@gmail.com> Date: Sat, 30 Nov 2019 01:54:32 -0500 Subject: [PATCH] Update initialize to return bool based on feasability --- resources/simplex/base.py | 2 +- resources/simplex/initialize.py | 13 ++++--------- tests/resources/simplex/initialize.py | 3 ++- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/resources/simplex/base.py b/resources/simplex/base.py index 2a9583b..9216b00 100644 --- a/resources/simplex/base.py +++ b/resources/simplex/base.py @@ -577,7 +577,7 @@ class SimplexBase(): """ Initializes simplex. """ - self._initialize(debug=debug) + return self._initialize(debug=debug) def pivot(self, old_basic_index, new_basic_index, debug=False): """ diff --git a/resources/simplex/initialize.py b/resources/simplex/initialize.py index e26c2f4..c6eaf0d 100644 --- a/resources/simplex/initialize.py +++ b/resources/simplex/initialize.py @@ -68,14 +68,7 @@ class Initialize(): if self._vector_b[smallest_const_index] >= 0: # Smallest value is non-negative. Is feasible. # We already know values so return as-is. - return ( - self._nonbasic_var_indexes, - self._basic_var_indexes, - self._matrix_a, - self._vector_b, - self._vector_c, - self._obj_constant_index, - ) + return True # If we got this far, then one or more constraint constants are negative. # This means we have an invalid simplex starting point, and want to correct it. @@ -177,9 +170,11 @@ class Initialize(): self._parent._b_array = b_array self._parent._n_array = n_array + return True + else: # No solution exists for original simplex. logger.info('Could not determine solution for simplex problem. Problem is likely infeasible.') - return None + return False diff --git a/tests/resources/simplex/initialize.py b/tests/resources/simplex/initialize.py index 0c57b10..7704933 100644 --- a/tests/resources/simplex/initialize.py +++ b/tests/resources/simplex/initialize.py @@ -35,9 +35,10 @@ class TestInitialize(unittest.TestCase): self.assertEqual(self.simplex._n_array, [0, 1]) # Call initialize method to test. - self.simplex.initialize() + initialize_results = self.simplex.initialize() # Test initial values "initialize" method. + self.assertTrue(initialize_results) self.assertEqual(self.simplex._matrix_a, [ [9/5, 0, 1, (-1 + 4/5)], # We use -1/5th represented as a float. Technically is the same value. [-1/5, 1, 0, -1/5], -- GitLab