diff --git a/pyomo/contrib/appsi/solvers/cbc.py b/pyomo/contrib/appsi/solvers/cbc.py index 9b8fa3e0e57..ec1819e29e7 100644 --- a/pyomo/contrib/appsi/solvers/cbc.py +++ b/pyomo/contrib/appsi/solvers/cbc.py @@ -70,7 +70,7 @@ def __init__( self.executable = Executable('cbc') self.filename = None self.keepfiles = False - self.solver_output_logger = logger + self.solver_output_logger = None self.log_level = logging.INFO @@ -389,11 +389,13 @@ def _check_and_escape_options(): cmd.extend(['-solve']) cmd.extend(['-solu', self._filename + '.soln']) - ostreams = [ - LogStream( - level=self.config.log_level, logger=self.config.solver_output_logger + ostreams = [] + if self.config.solver_output_logger is not None: + ostreams.append( + LogStream( + level=self.config.log_level, logger=self.config.solver_output_logger + ) ) - ] if self.config.stream_solver: ostreams.append(sys.stdout) diff --git a/pyomo/contrib/appsi/solvers/cplex.py b/pyomo/contrib/appsi/solvers/cplex.py index 9061f063ab7..87caab22889 100644 --- a/pyomo/contrib/appsi/solvers/cplex.py +++ b/pyomo/contrib/appsi/solvers/cplex.py @@ -64,7 +64,7 @@ def __init__( self.filename = None self.keepfiles = False - self.solver_output_logger = logger + self.solver_output_logger = None self.log_level = logging.INFO @@ -253,18 +253,27 @@ def _apply_solver(self, timer: HierarchicalTimer): cplex_model.read(self._filename + '.lp') timer.stop('cplex read lp') - log_stream = LogStream( - level=self.config.log_level, logger=self.config.solver_output_logger - ) - if config.stream_solver: + if config.solver_output_logger is not None: + log_stream = LogStream( + level=self.config.log_level, logger=self.config.solver_output_logger + ) + else: + log_stream = None - def _process_stream(arg): - sys.stdout.write(arg) - return arg + def _process_stream(arg): + sys.stdout.write(arg) + return arg - cplex_model.set_results_stream(log_stream, _process_stream) + if config.stream_solver: + if log_stream is not None: + cplex_model.set_results_stream(log_stream, _process_stream) + else: + cplex_model.set_results_stream(sys.stdout) else: - cplex_model.set_results_stream(log_stream) + if log_stream is not None: + cplex_model.set_results_stream(log_stream) + else: + cplex_model.set_results_stream(None) for key, option in self.cplex_options.items(): opt_cmd = cplex_model.parameters diff --git a/pyomo/contrib/appsi/solvers/gurobi.py b/pyomo/contrib/appsi/solvers/gurobi.py index b8048f26f3c..84e806ad73f 100644 --- a/pyomo/contrib/appsi/solvers/gurobi.py +++ b/pyomo/contrib/appsi/solvers/gurobi.py @@ -86,7 +86,7 @@ def __init__( self.declare('log_level', ConfigValue(domain=NonNegativeInt)) self.logfile = '' - self.solver_output_logger = logger + self.solver_output_logger = None self.log_level = logging.INFO @@ -359,11 +359,13 @@ def symbol_map(self): return self._symbol_map def _solve(self, timer: HierarchicalTimer): - ostreams = [ - LogStream( - level=self.config.log_level, logger=self.config.solver_output_logger + ostreams = [] + if self.config.solver_output_logger is not None: + ostreams.append( + LogStream( + level=self.config.log_level, logger=self.config.solver_output_logger + ) ) - ] if self.config.stream_solver: ostreams.append(sys.stdout) diff --git a/pyomo/contrib/appsi/solvers/highs.py b/pyomo/contrib/appsi/solvers/highs.py index edaafa5d1d4..df3d58ba320 100644 --- a/pyomo/contrib/appsi/solvers/highs.py +++ b/pyomo/contrib/appsi/solvers/highs.py @@ -71,7 +71,7 @@ def __init__( self.declare('log_level', ConfigValue(domain=NonNegativeInt)) self.logfile = '' - self.solver_output_logger = logger + self.solver_output_logger = None self.log_level = logging.INFO @@ -248,11 +248,13 @@ def _solve(self, timer: HierarchicalTimer): config = self.config options = self.highs_options - ostreams = [ - LogStream( - level=self.config.log_level, logger=self.config.solver_output_logger + ostreams = [] + if config.solver_output_logger is not None: + ostreams.append( + LogStream( + level=self.config.log_level, logger=self.config.solver_output_logger + ) ) - ] if self.config.stream_solver: ostreams.append(sys.stdout) @@ -272,7 +274,6 @@ def _solve(self, timer: HierarchicalTimer): if config.warmstart: self._warm_start() timer.start('optimize') - ostreams[-1].write("RUN!\n") if self.version()[:2] >= (1, 8): self._solver_model.HandleKeyboardInterrupt = True self._solver_model.run() diff --git a/pyomo/contrib/appsi/solvers/ipopt.py b/pyomo/contrib/appsi/solvers/ipopt.py index 601b830b7f2..161f5daa237 100644 --- a/pyomo/contrib/appsi/solvers/ipopt.py +++ b/pyomo/contrib/appsi/solvers/ipopt.py @@ -73,7 +73,7 @@ def __init__( self.executable = Executable('ipopt') self.filename = None self.keepfiles = False - self.solver_output_logger = logger + self.solver_output_logger = None self.log_level = logging.INFO @@ -440,11 +440,13 @@ def _apply_solver(self, timer: HierarchicalTimer): else: timeout = None - ostreams = [ - LogStream( - level=self.config.log_level, logger=self.config.solver_output_logger + ostreams = [] + if self.config.solver_output_logger is not None: + ostreams.append( + LogStream( + level=self.config.log_level, logger=self.config.solver_output_logger + ) ) - ] if self.config.stream_solver: ostreams.append(sys.stdout) diff --git a/pyomo/contrib/appsi/solvers/maingo.py b/pyomo/contrib/appsi/solvers/maingo.py index 8273061be78..63817551eb1 100644 --- a/pyomo/contrib/appsi/solvers/maingo.py +++ b/pyomo/contrib/appsi/solvers/maingo.py @@ -118,7 +118,7 @@ def __init__( ), ) self.declare("logfile", ConfigValue(domain=str, default="")) - self.declare("solver_output_logger", ConfigValue(default=logger)) + self.declare("solver_output_logger", ConfigValue(default=None)) self.declare( "log_level", ConfigValue(domain=NonNegativeInt, default=logging.INFO) ) @@ -209,11 +209,13 @@ def symbol_map(self): return self._symbol_map def _solve(self, timer: HierarchicalTimer): - ostreams = [ - LogStream( - level=self.config.log_level, logger=self.config.solver_output_logger + ostreams = [] + if self.config.solver_output_logger is not None: + ostreams.append( + LogStream( + level=self.config.log_level, logger=self.config.solver_output_logger + ) ) - ] if self.config.stream_solver: ostreams.append(sys.stdout)