# Check if the LP is valid. valid, msg = check_valid_lp(var_signs, A, directions, bvals, max_or_min, cvals, verbose) if not valid: err_msg = msg if verbose else 'Invalid LP. Exiting.' exit_with_message(err_msg) # TODO(optional): Check if constraints are linearly indepdent. Should be pretty easy with NumPy. if command == 'dual': d_var_signs, d_A, d_directions, d_bvals, d_max_or_min, d_cvals = convert_to_dual( var_signs, A, directions, bvals, max_or_min, cvals) writer = FileWriter() # Prints model to stdout. writer.write_model_to_file(d_var_signs, d_A, d_directions, d_bvals, d_max_or_min, d_cvals) elif command == 'solve': model = StandardFormLP(var_signs, A, directions, bvals, max_or_min, cvals) if model.are_dependent_constraints(): print('Dependent constraints. Exiting.') exit() solver = TwoPhaseSimplex(verbose=verbose) solution, obj, x = solver.solve(model) if solution == 'Infeasible': print('Infeasible problem. Exiting.') elif solution == 'Unbounded': print('Unbounded problem. Exiting.') elif solution == 'Solved': print(convert_to_signed_string(model.convert_objective(obj))) print('\t'.join(