コード例 #1
0
    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
コード例 #2
0
ファイル: test_path.py プロジェクト: Utkarsh-Detha/pyomo
    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
コード例 #3
0
ファイル: test_path.py プロジェクト: qtothec/pyomo
    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
コード例 #4
0
ファイル: test_linear_dual.py プロジェクト: qtothec/pyomo
    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
コード例 #5
0
ファイル: test_path.py プロジェクト: Juanlu001/pyomo
    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
コード例 #6
0
    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)
コード例 #7
0
ファイル: test_neos.py プロジェクト: Pyomo/pyomo
    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)
コード例 #8
0
ファイル: test_linear_dual.py プロジェクト: jsiirola/pyomo
    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
コード例 #9
0
    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)
コード例 #10
0
ファイル: test_linear_dual.py プロジェクト: qtothec/pyomo
    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
コード例 #11
0
    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
コード例 #12
0
ファイル: test_minlp.py プロジェクト: Juanlu001/pyomo
    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
コード例 #13
0
    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
コード例 #14
0
ファイル: test_neos.py プロジェクト: Juanlu001/pyomo
    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