def _presolve(self, *args, **kwds): """ Peform presolves. """ TempfileManager.push() self._keepfiles = kwds.pop("keepfiles", False) self._define_signal_handlers = kwds.pop('use_signal_handling',None) OptSolver._presolve(self, *args, **kwds) # # Verify that the input problems exists # for filename in self._problem_files: if not os.path.exists(filename): msg = 'Solver failed to locate input problem file: %s' raise ValueError(msg % filename) # # Create command line # self._command = self.create_command_line( self.executable(), self._problem_files) self._log_file=self._command.log_file # # The pre-cleanup is probably unncessary, but also not harmful. # if (self._log_file is not None) and \ os.path.exists(self._log_file): os.remove(self._log_file) if (self._soln_file is not None) and \ os.path.exists(self._soln_file): os.remove(self._soln_file)
def _presolve(self, **kwds): warmstart_flag = kwds.pop('warmstart', False) self._keepfiles = kwds.pop('keepfiles', False) self._save_results = kwds.pop('save_results', True) self._integer_only_warmstarts = kwds.pop('integer_only_warmstarts', False) # create a context in the temporary file manager for # this plugin - is "pop"ed in the _postsolve method. TempfileManager.push() self.results = None model = self._pyomo_model # this implies we have a custom solution "parser", # preventing the OptSolver _presolve method from # creating one self._results_format = ResultsFormat.soln # use the base class _presolve to consume the # important keywords OptSolver._presolve(self, **kwds) # *********************************************************** # The following code is only needed for backwards compatability of load_solutions=False. # If we ever only want to support the load_vars, load_duals, etc. methods, then this can be deleted. if self._save_results: self._smap_id = id(self._symbol_map) if isinstance(self._pyomo_model, IBlock): # BIG HACK (see pyomo.core.kernel write function) if not hasattr(self._pyomo_model, "._symbol_maps"): setattr(self._pyomo_model, "._symbol_maps", {}) getattr(self._pyomo_model, "._symbol_maps")[self._smap_id] = self._symbol_map else: self._pyomo_model.solutions.add_symbol_map(self._symbol_map) # *********************************************************** if warmstart_flag: if self.warm_start_capable(): self._warm_start() else: raise ValueError( '{0} solver plugin is not capable of warmstart.'.format( type(self))) if self._log_file is None: self._log_file = TempfileManager.create_tempfile(suffix='.log')