def run_bilevel(self, *_args, **kwds): if self.solve: args = ['solve'] _solver = kwds.get('solver','glpk') args.append('--solver=%s' % _solver) args.append('--save-results=result.yml') args.append('--results-format=json') else: args = ['convert'] if 'transform' in kwds: args.append('--transform=%s' % kwds['transform']) args.append('-c') args.append('--symbolic-solver-labels') args.append('--file-determinism=2') if False: args.append('--stream-solver') args.append('--tempdir='+currdir) args.append('--keepfiles') args.append('--debug') args.append('--logging=verbose') args = args + list(_args) os.chdir(currdir) print('***') #print(' '.join(args)) output = main.main(args) try: output = main.main(args) except: output = None cleanup() print('***') return output
def run_solver(self, *_args, **kwds): if self.solve: args = ['solve'] args.append('--solver=' + self.solver) args.append('--save-results=result.yml') args.append('--results-format=yaml') args.append( '--solver-options="lemke_start=automatic output_options=yes"') else: args = ['convert'] args.append('-c') args.append('--symbolic-solver-labels') args.append('--file-determinism=2') if False: args.append('--stream-solver') args.append('--tempdir=' + currdir) args.append('--keepfiles') args.append('--logging=debug') args = args + list(_args) os.chdir(currdir) print('***') print(' '.join(args)) try: output = pyomo_main.main(args) except SystemExit: output = None except: output = None raise cleanup() print('***') return output
def run_solver(self, *_args, **kwds): if self.solve: args = ["solve"] args.append("--solver=" + self.solver) args.append("--save-results=result.yml") args.append("--results-format=yaml") args.append('--solver-options="lemke_start=automatic output_options=yes"') else: args = ["convert"] args.append("-c") args.append("--symbolic-solver-labels") args.append("--file-determinism=2") if False: args.append("--stream-solver") args.append("--tempdir=" + currdir) args.append("--keepfiles") args.append("--logging=debug") args = args + list(_args) os.chdir(currdir) print("***") print(" ".join(args)) try: output = pyomo_main.main(args) except SystemExit: output = None except: output = None raise cleanup() print("***") return output
def run_solver(self, *_args, **kwds): if self.solve: args = ['solve'] args.append('--solver='+self.solver) args.append('--save-results=result.yml') args.append('--results-format=yaml') args.append('--solver-options="lemke_start=automatic output_options=yes"') else: args = ['convert'] args.append('-c') args.append('--symbolic-solver-labels') args.append('--file-determinism=2') if False: args.append('--stream-solver') args.append('--tempdir='+currdir) args.append('--keepfiles') args.append('--logging=debug') args = args + list(_args) os.chdir(currdir) print('***') print(' '.join(args)) try: output = pyomo_main.main(args) except SystemExit: output = None except: output = None raise cleanup() print('***') return output
def test_pyomo_command(self): results = os.path.join(currdir, 'result.yml') args = [ os.path.join(currdir, 't1.py'), '--solver-manager=neos', '--solver=cbc', '--symbolic-solver-labels', '--save-results=%s' % results, '-c', ] try: output = main.run(args) self.assertEqual(output.errorcode, 0) with open(results) as FILE: data = yaml.load(FILE, **yaml_load_args) self.assertEqual(data['Solver'][0]['Status'], 'ok') self.assertAlmostEqual(data['Solution'][1]['Status'], 'optimal') self.assertAlmostEqual( data['Solution'][1]['Objective']['o']['Value'], 1) self.assertAlmostEqual( data['Solution'][1]['Variable']['x']['Value'], 0.5) finally: cleanup() os.remove(results)
def test_pyomo_command(self): results = os.path.join(currdir, 'result.yml') args = [ os.path.join(currdir,'t1.py'), '--solver-manager=neos', '--solver=cbc', '--symbolic-solver-labels', '--save-results=%s' % results, '-c', ] try: output = main.run(args) self.assertEqual(output.errorcode, 0) with open(results) as FILE: data = yaml.load(FILE) self.assertEqual( data['Solver'][0]['Status'], 'ok') self.assertAlmostEqual( data['Solution'][1]['Status'], 'optimal') self.assertAlmostEqual( data['Solution'][1]['Objective']['o']['Value'], 1) self.assertAlmostEqual( data['Solution'][1]['Variable']['x']['Value'], 0.5) finally: cleanup() os.remove(results)
def run_bilevel(self, *_args, **kwds): if self.solve: args = ['solve'] if 'solver' in kwds: _solver = kwds.get('solver', 'glpk') args.append('--solver=bilevel_ld') args.append('--solver-options="solver=%s"' % _solver) args.append('--save-results=result.yml') args.append('--results-format=yaml') else: args = ['convert'] if 'preprocess' in kwds: # args.append('--solver=glpk') pp = kwds['preprocess'] if pp == 'linear_dual': args.append('--transform=bilevel.linear_dual') args.append('-c') # These were being ignored by the solvers for this package, # which now causes a helpful error message. # I've manually inserted them into those tests that need them to pass # (which is where they also get used) # args.append('--symbolic-solver-labels') # args.append('--file-determinism=2') if False: args.append('--stream-solver') args.append('--tempdir=' + currdir) args.append('--keepfiles') args.append('--logging=debug') args = args + list(_args) _cwd = os.getcwd() print('***') # print(' '.join(args)) try: os.chdir(currdir) output = pyomo_main.main(args) except SystemExit: output = None except: output = None raise finally: os.chdir(_cwd) cleanup() print('***') return output
def _run(self, opt, constrained=True): expected_y = { (pyo.minimize, True): -1, (pyo.maximize, True): 1, (pyo.minimize, False): -10, (pyo.maximize, False): 10, }[self.sense, constrained] filename = 'model_min_lp.py' if self.sense == pyo.minimize \ else 'model_max_lp.py' results = os.path.join(currdir, 'result.json') args = [ 'solve', os.path.join(currdir, filename), '--solver-manager=neos', '--solver=%s' % opt, '--logging=quiet', '--save-results=%s' % results, '--results-format=json', '-c' ] try: output = main(args) self.assertEqual(output.errorcode, 0) with open(results) as FILE: data = json.load(FILE) finally: cleanup() if os.path.exists(results): os.remove(results) self.assertEqual( data['Solver'][0]['Status'], 'ok') self.assertEqual( data['Solution'][1]['Status'], 'optimal') self.assertAlmostEqual( data['Solution'][1]['Objective']['obj']['Value'], expected_y, delta=1e-5) if constrained: # If the solver ignores constraints, x is degenerate self.assertAlmostEqual( data['Solution'][1]['Variable']['x']['Value'], 1, delta=1e-5) self.assertAlmostEqual( data['Solution'][1]['Variable']['y']['Value'], expected_y, delta=1e-5)
def run_bilevel(self, *_args, **kwds): if self.solve: args = ['solve'] if 'solver' in kwds: _solver = kwds.get('solver','glpk') args.append('--solver=bilevel_ld') args.append('--solver-options="solver=%s"' % _solver) args.append('--save-results=result.yml') args.append('--results-format=yaml') else: args = ['convert'] if 'preprocess' in kwds: #args.append('--solver=glpk') pp = kwds['preprocess'] if pp == 'linear_dual': args.append('--transform=bilevel.linear_dual') args.append('-c') # These were being ignored by the solvers for this package, # which now causes a helpful error message. # I've manually inserted them into those tests that need them to pass # (which is where they also get used) #args.append('--symbolic-solver-labels') #args.append('--file-determinism=2') if False: args.append('--stream-solver') args.append('--tempdir='+currdir) args.append('--keepfiles') args.append('--logging=debug') args = args + list(_args) os.chdir(currdir) print('***') #print(' '.join(args)) try: output = pyomo_main.main(args) except SystemExit: output = None except: output = None raise cleanup() print('***') return output
def run_bilevel(self, *_args, **kwds): if self.solve: args = ['solve'] if 'solver' in kwds: _solver = kwds.get('solver', 'glpk') args.append('--solver=' + self.solver) args.append('--solver-options="solver=%s"' % _solver) args.append('--save-results=result.yml') args.append('--results-format=yaml') else: args = ['convert'] if 'preprocess' in kwds: pp = kwds['preprocess'] if pp == 'linear_mpec': args.append('--transform=bilevel.linear_mpec') args.append('-c') # These were being ignored by the solvers for this package, # which now causes a helpful error message #args.append('--symbolic-solver-labels') #args.append('--file-determinism=2') if False: args.append('--stream-solver') args.append('--tempdir=' + currdir) args.append('--keepfiles') args.append('--logging=debug') args = args + list(_args) os.chdir(currdir) print('***') #print(' '.join(args)) try: output = pyomo_main.main(args) except SystemExit: output = None except: output = None raise cleanup() print('***') return output
def run_solver(self, *_args, **kwds): if self.solve: args = ['solve'] if 'solver' in kwds: _solver = kwds.get('solver','glpk') args.append('--solver='+self.solver) args.append('--solver-options="solver=%s"' % _solver) args.append('--save-results=result.yml') args.append('--results-format=yaml') else: args = ['convert'] args.append('-c') # These were being ignored by the solvers for this package, # which now causes a helpful error message. #args.append('--symbolic-solver-labels') #args.append('--file-determinism=2') if False: args.append('--stream-solver') args.append('--tempdir='+currdir) args.append('--keepfiles') args.append('--logging=debug') args = args + list(_args) os.chdir(currdir) print('***') #print(' '.join(args)) try: output = pyomo_main.main(args) except SystemExit: output = None except: output = None raise cleanup() print('***') return output
def pyomo(self, *args, **kwds): args=list(args) args.append('--solver-manager=neos') args.append('-c') if 'solver' in kwds: args.append('--solver='+kwds['solver']) args.append('--symbolic-solver-labels') args.append('--save-results=result.yml') #args.append('--tempdir='+currdir) #args.append('--keepfiles') #args.append('--debug') #args.append('--verbose') os.chdir(currdir) print('***') print(' '.join(args)) try: output = main.run(args) except: output = None cleanup() print('***') return output