[Python] mindtpy solver option under Pyomo 6.9.2 does not work

Discussão em 'Python' iniciado por Stack, Agosto 7, 2025.

  1. Stack

    Stack Membro Participativo

    I tried running the MindtPy example from Pyomo 6.9.2 documentation (page 195) using the following command:

    $ pyomo solve --solver=mindtpy .\Temp.py


    I get the following error:

    Traceback (most recent call last):
    File "<frozen runpy>", line 198, in _run_module_as_main
    File "<frozen runpy>", line 88, in run_code
    File "C:\Users\ZZZ\anaconda3\envs\MyPyomoEnv\Scripts\pyomo.exe_main.py", line 7, in <module>
    sys.exit(main_console_script())
    ~~~~~~~~~~~~~~~~~~~^^
    File "C:\Users\ZZZ\anaconda3\envs\MyPyomoEnv\Lib\site-packages\pyomo\scripting\pyomo_main.py", line 105, in main_console_script
    ans = main()
    File "C:\Users\ZZZ\anaconda3\envs\MyPyomoEnv\Lib\site-packages\pyomo\scripting\pyomo_main.py", line 97, in main
    retval = _options.func(_options, _unparsed)
    File "C:\Users\ZZZ\anaconda3\envs\MyPyomoEnv\Lib\site-packages\pyomo\scripting\plugins\solve.py", line 197, in solve_exec
    config = opt.config_block()
    ^^^^^^^^^^^^^^^^^^
    AttributeError: 'MindtPySolver' object has no attribute 'config_block'


    I tried several other MindtPy examples published on GitHub, and all of them produce the same error message.

    from pyomo.environ import *

    # Create a ConcreteModel
    model = ConcreteModel()

    # Define variables
    model.x = Var(bounds=(0, 10), domain=Reals)
    model.y = Var(domain=Binary) # Binary variable

    # Define objective function (e.g., minimize a non-linear function)
    model.obj = Objective(expr=model.x ** 2 - 4 * model.x + model.y, sense=minimize)

    # Define constraints
    model.con1 = Constraint(expr=model.x + 2 * model.y >= 5)
    model.con2 = Constraint(expr=model.x * model.y <= 3) # Non-linear constraint

    # Create a SolverFactory instance for MindtPy
    opt = SolverFactory('mindtpy')

    # Solve the model using Outer-Approximation (OA) strategy
    # Specify the MILP solver (e.g., 'glpk') and NLP solver (e.g., 'ipopt')
    results = opt.solve(model,
    strategy='OA',
    mip_solver='glpk',
    nlp_solver='ipopt',
    tee=True) # tee=True for detailed output

    # Display results
    print(f"Objective Value: {model.obj()}")
    print(f"x = {model.x()}")
    print(f"y = {model.y()}")

    Continue reading...

Compartilhe esta Página