Pyomo / pyomo

An object-oriented algebraic modeling language in Python for structured optimization problems.
https://www.pyomo.org
Other
2k stars 516 forks source link

GAMSShell broke help -s #266

Closed tkorvola closed 6 years ago

tkorvola commented 6 years ago

pyomo help -s lists the serial solver interfaces, then throws:

Traceback (most recent call last):
  File "/usr/bin/pyomo", line 11, in <module>
    sys.exit(main())
  File "/usr/lib64/python3.4/site-packages/pyomo/scripting/pyomo_main.py", line 82, in main
    retval = _options.func(_options)
  File "/usr/lib64/python3.4/site-packages/pyomo/scripting/driver_help.py", line 457, in help_exec
    help_solvers()
  File "/usr/lib64/python3.4/site-packages/pyomo/scripting/driver_help.py", line 347, in help_solvers
    if s == 'py' or opt._metasolver:
AttributeError: 'GAMSShell' object has no attribute '_metasolver'
qtothec commented 6 years ago

@gseastream Take a look?

gseastream commented 6 years ago

This error is due to the fact that I never integrated the GAMS solver into the executable pyomo library of commands, so the interface is probably missing some attributes. However, I only get this error when I run the pyomo help -s command on a pip-installed version of pyomo. Git/development/trunk versions give this error:

Pyomo Solvers and Solver Managers
---------------------------------
Pyomo uses 'solver managers' to execute 'solvers' that perform
optimization and other forms of model analysis.  A solver directly
executes an optimizer, typically using an executable found on the
user's PATH environment.  Solver managers support a flexible mechanism
for asyncronously executing solvers either locally or remotely.  The
following solver managers are available in Pyomo:

    neos       Asynchronously execute solvers on the NEOS server
    phpyro     Specialized PH solver manager that uses pyro
    pyro       Execute solvers remotely using pyro
    serial     Synchronously execute solvers locally

If no solver manager is specified, Pyomo uses the serial solver
manager to execute solvers locally.  The pyro and phpyro solver
managers require the installation and configuration of the pyro
software.  The neos solver manager is used to execute solvers on the
NEOS optimization server.

Serial Solver Interfaces
------------------------
The serial, pyro and phpyro solver managers support the following
solver interfaces:

Traceback (most recent call last):
  File "/home/gseastre/pyomo/bin/pyomo", line 9, in <module>
    load_entry_point('Pyomo', 'console_scripts', 'pyomo')()
  File "/home/gseastre/pyomo/src/pyomo/pyomo/scripting/pyomo_main.py", line 82, in main
    retval = _options.func(_options)
  File "/home/gseastre/pyomo/src/pyomo/pyomo/scripting/driver_help.py", line 452, in help_exec
    help_solvers()
  File "/home/gseastre/pyomo/src/pyomo/pyomo/scripting/driver_help.py", line 351, in help_solvers
    logger.disable(logging.NOTSET)
AttributeError: 'Logger' object has no attribute 'disable'

Indicating some other bug has arisen since the last PyPI release. This is as opposed to the following error on a PyPI installation:

Serial Solver Interfaces
------------------------
The serial, pyro and phpyro solver managers support the following
solver interfaces:

    asl                  + Interface for solvers using the AMPL Solver
                           Library
    baron                  The BARON MINLP solver
    bilevel_blp_global   + Global solver for continuous bilevel linear
                           problems
    bilevel_blp_local    + Local solver for continuous bilevel linear
                           problems
    bilevel_ld           + Solver for bilevel problems using linear
                           duality
    cbc                    The CBC LP/MIP solver
    conopt                 The CONOPT NLP solver
    cplex                  The CPLEX LP/MIP solver
Traceback (most recent call last):
  File "c:\python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python36\Scripts\pyomo.exe\__main__.py", line 9, in <module>
  File "c:\python36\lib\site-packages\pyomo\scripting\pyomo_main.py", line 82, in main
    retval = _options.func(_options)
  File "c:\python36\lib\site-packages\pyomo\scripting\driver_help.py", line 457, in help_exec
    help_solvers()
  File "c:\python36\lib\site-packages\pyomo\scripting\driver_help.py", line 347, in help_solvers
    if s == 'py' or opt._metasolver:
AttributeError: 'GAMSShell' object has no attribute '_metasolver'