Pyomo / pyomo

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

Mindtpy - Feasibility subproblem infeasible. #2864

Closed strahl21 closed 1 year ago

strahl21 commented 1 year ago

Summary

I used Mindtpy to solve syn40m04m from the minlplib with gurobi as the mip solver and baron as the nlp solver and received a "this should never happen" error.

Steps to reproduce the issue

$ python syn40m04_solve_linear.py
# example.py
See attached text file

Error Message

$ Starting MindtPy version 0.1.0 using OA algorithm
iteration_limit: 50
stalling_limit: 15
time_limit: 600
strategy: OA
add_regularization: None
call_after_main_solve: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7fbf07fe0550>
call_after_subproblem_solve: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7fbf07fe0580>
call_after_subproblem_feasible: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7fbf07fe05b0>
tee: true
logger: <Logger pyomo.contrib.mindtpy (INFO)>
logging_level: 20
integer_to_binary: false
add_no_good_cuts: false
use_tabu_list: false
single_tree: false
solution_pool: false
num_solution_iteration: 5
cycling_check: true
feasibility_norm: L_infinity
differentiate_mode: reverse_symbolic
use_mcpp: false
calculate_dual_at_solution: false
use_fbbt: false
use_dual_bound: true
partition_obj_nonlinear_terms: true
quadratic_strategy: 0
move_objective: false
add_cuts_at_incumbent: false
heuristic_nonconvex: false
init_strategy: rNLP
level_coef: 0.5
solution_limit: 10
reduce_level_coef: false
use_bb_tree_incumbent: false
sqp_lag_scaling_coef: fixed
fp_cutoffdecr: 0.1
fp_iteration_limit: 20
fp_projcuts: true
fp_transfercuts: true
fp_projzerotol: 0.0001
fp_mipgap: 0.01
fp_discrete_only: true
fp_main_norm: L1
fp_norm_constraint: true
fp_norm_constraint_coef: 1.0
add_slack: false
max_slack: 1000.0
OA_penalty_factor: 1000.0
equality_relaxation: false
linearize_inactive: false
nlp_solver: baron
nlp_solver_args:
mip_solver: gurobi
mip_solver_args:
mip_solver_mipgap: 0.0001
threads: 3
regularization_mip_threads: 0
solver_tee: false
mip_solver_tee: false
nlp_solver_tee: false
mip_regularization_solver: None
absolute_bound_tolerance: 0.0001
relative_bound_tolerance: 0.001
small_dual_tolerance: 1e-08
integer_tolerance: 1e-05
constraint_tolerance: 1e-06
variable_tolerance: 1e-08
zero_tolerance: 1e-08
obj_bound: 1000000000000000.0
continuous_var_bound: 10000000000.0
integer_var_bound: 1000000000.0
initial_bound_coef: 0.1

-----------------------------------------------------------------------------------------------
               Mixed-Integer Nonlinear Decomposition Toolbox in Pyomo (MindtPy)                
-----------------------------------------------------------------------------------------------
For more information, please visit 
https://pyomo.readthedocs.io/en/stable/contributed_packages/mindtpy.html
If you use this software, please cite the following:
Bernal, David E., et al. Mixed-integer nonlinear decomposition toolbox for Pyomo (MindtPy).
Computer Aided Chemical Engineering. Vol. 44. Elsevier, 2018. 895-900.

Original model has 2104 constraints (112 nonlinear) and 0 disjunctions, with 840 variables, of which 320 are binary, 0 are integer, and 520 are continuous.
rNLP is the initial strategy being used.

 ===============================================================================================
 Iteration | Subproblem Type | Objective Value | Primal Bound |   Dual Bound |   Gap   | Time(s)

         -       Relaxed NLP           9168.63           -inf        9168.63      nan%      0.79
         1              MILP           1945.91           -inf        1945.91      nan%      1.05
*        1         Fixed NLP           756.473        756.473        1945.91   157.23%      1.35
         2              MILP           953.471        756.473        953.471    26.04%      1.62
NLP subproblem was locally infeasible.
Solving feasibility problem
Feasibility subproblem infeasible. This should never happen.
 ===============================================================================================
 Primal integral          :    0.0000 
 Dual integral            :   6706.8307 
 Primal-dual gap integral :   6706.8307 

Information on your system

Pyomo version: 6.6.1 Python version: 3.9 Operating system: Ubuntu 22.04 How Pyomo was installed (PyPI, conda, source): conda Solver (if applicable): gurobi v.10.0.1 baron v.23.5.8

Additional information

Running the same problem with baron through gams provides a little more information about the error. It appears that there are constraints written as 0 \le -1e-6 or a very small negative number, which I think is why the subproblem is infeasible. If cplex is used as the MIP solver, there is no problem. The mindtpy algorithms work just fine, it is the underlying communication/translation of the problem to the solvers that is causing the issue. syn40m04m_solve_linear.txt

ZedongPeng commented 1 year ago

Hi @strahl21 . Since I don't have a Gurobi license, I cannot run your code. However, there is a configuration called constraint_tolerance in MindtPy, which denotes tolerance on constraint satisfaction. In MindtPy, we will check trivial constraints before solving NLP subproblems. If you set constraint_tolerance to 1e-5 or 1e-4, MindtPy will automatically regard this constraint as satisfied.

strahl21 commented 1 year ago

Hi Zedong,

Thanks for the reply. Do you have access to cplex? I tried changing the tolerance to 1e-4 as you suggested, but it still gave the same result. Incidentally, I changed the number of threads to 1 and the problem went away, but any number of threads above 1 (2,3,4) and the problem returns. Attached is a text file of an instance that produces the error using cplex/baron.

-Will

On Mon, Jun 5, 2023 at 9:10 AM Zedong @.***> wrote:

Hi @strahl21 https://github.com/strahl21 . Since I don't have a Gurobi license, I cannot run your code. However, there is a configuration called constraint_tolerance in MindtPy, which denotes tolerance on constraint satisfaction. In MindtPy, we will check trivial constraints before solving NLP subproblems. If you set constraint_tolerance to 1e-5 or 1e-4, MindtPy will automatically regard this constraint as satisfied.

— Reply to this email directly, view it on GitHub https://github.com/Pyomo/pyomo/issues/2864#issuecomment-1576776489, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIOSMCMWUB7ZLI7B6Y66ZL3XJXLGHANCNFSM6AAAAAAYW6F4MM . You are receiving this because you were mentioned.Message ID: @.***>

MINLP written by GAMS Convert at 02/17/22 17:23:00

#

Equation counts

Total E G L N X C B

2904 1008 216 1680 0 0 0 0

#

Variable counts

x b i s1s s2s sc si

Total cont binary integer sos1 sos2 scont sint

1528 1208 320 0 0 0 0 0

FX 0

#

Nonzero counts

Total const NL

6336 6000 336

#

Reformulation has removed 1 variable and 1 equation

from pyomo.environ import *

model = m = ConcreteModel()

m.x1 = Var(within=Reals, bounds=(0,10), initialize=0) m.x2 = Var(within=Reals, bounds=(0,10), initialize=0) m.x3 = Var(within=Reals, bounds=(0,10), initialize=0) m.x4 = Var(within=Reals, bounds=(0,10), initialize=0) m.x5 = Var(within=Reals, bounds=(0,None), initialize=0) m.x6 = Var(within=Reals, bounds=(0,None), initialize=0) m.x7 = Var(within=Reals, bounds=(0,None), initialize=0) m.x8 = Var(within=Reals, bounds=(0,None), initialize=0) m.x9 = Var(within=Reals, bounds=(0,None), initialize=0) m.x10 = Var(within=Reals, bounds=(0,None), initialize=0) m.x11 = Var(within=Reals, bounds=(0,None), initialize=0) m.x12 = Var(within=Reals, bounds=(0,None), initialize=0) m.x13 = Var(within=Reals, bounds=(0,None), initialize=0) m.x14 = Var(within=Reals, bounds=(0,None), initialize=0) m.x15 = Var(within=Reals, bounds=(0,None), initialize=0) m.x16 = Var(within=Reals, bounds=(0,None), initialize=0) m.x17 = Var(within=Reals, bounds=(0,None), initialize=0) m.x18 = Var(within=Reals, bounds=(0,None), initialize=0) m.x19 = Var(within=Reals, bounds=(0,None), initialize=0) m.x20 = Var(within=Reals, bounds=(0,None), initialize=0) m.x21 = Var(within=Reals, bounds=(0,None), initialize=0) m.x22 = Var(within=Reals, bounds=(0,None), initialize=0) m.x23 = Var(within=Reals, bounds=(0,None), initialize=0) m.x24 = Var(within=Reals, bounds=(0,None), initialize=0) m.x25 = Var(within=Reals, bounds=(0,None), initialize=0) m.x26 = Var(within=Reals, bounds=(0,None), initialize=0) m.x27 = Var(within=Reals, bounds=(0,None), initialize=0) m.x28 = Var(within=Reals, bounds=(0,None), initialize=0) m.x29 = Var(within=Reals, bounds=(0,None), initialize=0) m.x30 = Var(within=Reals, bounds=(0,None), initialize=0) m.x31 = Var(within=Reals, bounds=(0,None), initialize=0) m.x32 = Var(within=Reals, bounds=(0,None), initialize=0) m.x33 = Var(within=Reals, bounds=(0,None), initialize=0) m.x34 = Var(within=Reals, bounds=(0,None), initialize=0) m.x35 = Var(within=Reals, bounds=(0,None), initialize=0) m.x36 = Var(within=Reals, bounds=(0,None), initialize=0) m.x37 = Var(within=Reals, bounds=(0,None), initialize=0) m.x38 = Var(within=Reals, bounds=(0,None), initialize=0) m.x39 = Var(within=Reals, bounds=(0,None), initialize=0) m.x40 = Var(within=Reals, bounds=(0,None), initialize=0) m.x41 = Var(within=Reals, bounds=(0,None), initialize=0) m.x42 = Var(within=Reals, bounds=(0,None), initialize=0) m.x43 = Var(within=Reals, bounds=(0,None), initialize=0) m.x44 = Var(within=Reals, bounds=(0,None), initialize=0) m.x45 = Var(within=Reals, bounds=(0,7), initialize=0) m.x46 = Var(within=Reals, bounds=(0,7), initialize=0) m.x47 = Var(within=Reals, bounds=(0,7), initialize=0) m.x48 = Var(within=Reals, bounds=(0,7), initialize=0) m.x49 = Var(within=Reals, bounds=(0,None), initialize=0) m.x50 = Var(within=Reals, bounds=(0,None), initialize=0) m.x51 = Var(within=Reals, bounds=(0,None), initialize=0) m.x52 = Var(within=Reals, bounds=(0,None), initialize=0) m.x53 = Var(within=Reals, bounds=(0,None), initialize=0) m.x54 = Var(within=Reals, bounds=(0,None), initialize=0) m.x55 = Var(within=Reals, bounds=(0,None), initialize=0) m.x56 = Var(within=Reals, bounds=(0,None), initialize=0) m.x57 = Var(within=Reals, bounds=(0,None), initialize=0) m.x58 = Var(within=Reals, bounds=(0,None), initialize=0) m.x59 = Var(within=Reals, bounds=(0,None), initialize=0) m.x60 = Var(within=Reals, bounds=(0,None), initialize=0) m.x61 = Var(within=Reals, bounds=(0,None), initialize=0) m.x62 = Var(within=Reals, bounds=(0,None), initialize=0) m.x63 = Var(within=Reals, bounds=(0,None), initialize=0) m.x64 = Var(within=Reals, bounds=(0,None), initialize=0) m.x65 = Var(within=Reals, bounds=(0,None), initialize=0) m.x66 = Var(within=Reals, bounds=(0,None), initialize=0) m.x67 = Var(within=Reals, bounds=(0,None), initialize=0) m.x68 = Var(within=Reals, bounds=(0,None), initialize=0) m.x69 = Var(within=Reals, bounds=(0,None), initialize=0) m.x70 = Var(within=Reals, bounds=(0,None), initialize=0) m.x71 = Var(within=Reals, bounds=(0,None), initialize=0) m.x72 = Var(within=Reals, bounds=(0,None), initialize=0) m.x73 = Var(within=Reals, bounds=(0,None), initialize=0) m.x74 = Var(within=Reals, bounds=(0,None), initialize=0) m.x75 = Var(within=Reals, bounds=(0,None), initialize=0) m.x76 = Var(within=Reals, bounds=(0,None), initialize=0) m.x77 = Var(within=Reals, bounds=(0,None), initialize=0) m.x78 = Var(within=Reals, bounds=(0,None), initialize=0) m.x79 = Var(within=Reals, bounds=(0,None), initialize=0) m.x80 = Var(within=Reals, bounds=(0,None), initialize=0) m.x81 = Var(within=Reals, bounds=(0,None), initialize=0) m.x82 = Var(within=Reals, bounds=(0,None), initialize=0) m.x83 = Var(within=Reals, bounds=(0,None), initialize=0) m.x84 = Var(within=Reals, bounds=(0,None), initialize=0) m.x85 = Var(within=Reals, bounds=(0,None), initialize=0) m.x86 = Var(within=Reals, bounds=(0,None), initialize=0) m.x87 = Var(within=Reals, bounds=(0,None), initialize=0) m.x88 = Var(within=Reals, bounds=(0,None), initialize=0) m.x89 = Var(within=Reals, bounds=(0,None), initialize=0) m.x90 = Var(within=Reals, bounds=(0,None), initialize=0) m.x91 = Var(within=Reals, bounds=(0,None), initialize=0) m.x92 = Var(within=Reals, bounds=(0,None), initialize=0) m.x93 = Var(within=Reals, bounds=(0,None), initialize=0) m.x94 = Var(within=Reals, bounds=(0,None), initialize=0) m.x95 = Var(within=Reals, bounds=(0,None), initialize=0) m.x96 = Var(within=Reals, bounds=(0,None), initialize=0) m.x97 = Var(within=Reals, bounds=(0,None), initialize=0) m.x98 = Var(within=Reals, bounds=(0,None), initialize=0) m.x99 = Var(within=Reals, bounds=(0,None), initialize=0) m.x100 = Var(within=Reals, bounds=(0,None), initialize=0) m.x101 = Var(within=Reals, bounds=(0,None), initialize=0) m.x102 = Var(within=Reals, bounds=(0,None), initialize=0) m.x103 = Var(within=Reals, bounds=(0,None), initialize=0) m.x104 = Var(within=Reals, bounds=(0,None), initialize=0) m.x105 = Var(within=Reals, bounds=(0,None), initialize=0) m.x106 = Var(within=Reals, bounds=(0,None), initialize=0) m.x107 = Var(within=Reals, bounds=(0,None), initialize=0) m.x108 = Var(within=Reals, bounds=(0,None), initialize=0) m.x109 = Var(within=Reals, bounds=(0,None), initialize=0) m.x110 = Var(within=Reals, bounds=(0,None), initialize=0) m.x111 = Var(within=Reals, bounds=(0,None), initialize=0) m.x112 = Var(within=Reals, bounds=(0,None), initialize=0) m.x113 = Var(within=Reals, bounds=(0,7), initialize=0) m.x114 = Var(within=Reals, bounds=(0,7), initialize=0) m.x115 = Var(within=Reals, bounds=(0,7), initialize=0) m.x116 = Var(within=Reals, bounds=(0,7), initialize=0) m.x117 = Var(within=Reals, bounds=(0,5), initialize=0) m.x118 = Var(within=Reals, bounds=(0,5), initialize=0) m.x119 = Var(within=Reals, bounds=(0,5), initialize=0) m.x120 = Var(within=Reals, bounds=(0,5), initialize=0) m.x121 = Var(within=Reals, bounds=(0,None), initialize=0) m.x122 = Var(within=Reals, bounds=(0,None), initialize=0) m.x123 = Var(within=Reals, bounds=(0,None), initialize=0) m.x124 = Var(within=Reals, bounds=(0,None), initialize=0) m.x125 = Var(within=Reals, bounds=(0,None), initialize=0) m.x126 = Var(within=Reals, bounds=(0,None), initialize=0) m.x127 = Var(within=Reals, bounds=(0,None), initialize=0) m.x128 = Var(within=Reals, bounds=(0,None), initialize=0) m.x129 = Var(within=Reals, bounds=(0,None), initialize=0) m.x130 = Var(within=Reals, bounds=(0,None), initialize=0) m.x131 = Var(within=Reals, bounds=(0,None), initialize=0) m.x132 = Var(within=Reals, bounds=(0,None), initialize=0) m.x133 = Var(within=Reals, bounds=(0,None), initialize=0) m.x134 = Var(within=Reals, bounds=(0,None), initialize=0) m.x135 = Var(within=Reals, bounds=(0,None), initialize=0) m.x136 = Var(within=Reals, bounds=(0,None), initialize=0) m.x137 = Var(within=Reals, bounds=(0,None), initialize=0) m.x138 = Var(within=Reals, bounds=(0,None), initialize=0) m.x139 = Var(within=Reals, bounds=(0,None), initialize=0) m.x140 = Var(within=Reals, bounds=(0,None), initialize=0) m.x141 = Var(within=Reals, bounds=(0,None), initialize=0) m.x142 = Var(within=Reals, bounds=(0,None), initialize=0) m.x143 = Var(within=Reals, bounds=(0,None), initialize=0) m.x144 = Var(within=Reals, bounds=(0,None), initialize=0) m.x145 = Var(within=Reals, bounds=(0,None), initialize=0) m.x146 = Var(within=Reals, bounds=(0,None), initialize=0) m.x147 = Var(within=Reals, bounds=(0,None), initialize=0) m.x148 = Var(within=Reals, bounds=(0,None), initialize=0) m.x149 = Var(within=Reals, bounds=(0,None), initialize=0) m.x150 = Var(within=Reals, bounds=(0,None), initialize=0) m.x151 = Var(within=Reals, bounds=(0,None), initialize=0) m.x152 = Var(within=Reals, bounds=(0,None), initialize=0) m.x153 = Var(within=Reals, bounds=(0,None), initialize=0) m.x154 = Var(within=Reals, bounds=(0,None), initialize=0) m.x155 = Var(within=Reals, bounds=(0,None), initialize=0) m.x156 = Var(within=Reals, bounds=(0,None), initialize=0) m.x157 = Var(within=Reals, bounds=(0,None), initialize=0) m.x158 = Var(within=Reals, bounds=(0,None), initialize=0) m.x159 = Var(within=Reals, bounds=(0,None), initialize=0) m.x160 = Var(within=Reals, bounds=(0,None), initialize=0) m.x161 = Var(within=Reals, bounds=(0,None), initialize=0) m.x162 = Var(within=Reals, bounds=(0,None), initialize=0) m.x163 = Var(within=Reals, bounds=(0,None), initialize=0) m.x164 = Var(within=Reals, bounds=(0,None), initialize=0) m.x165 = Var(within=Reals, bounds=(0,None), initialize=0) m.x166 = Var(within=Reals, bounds=(0,None), initialize=0) m.x167 = Var(within=Reals, bounds=(0,None), initialize=0) m.x168 = Var(within=Reals, bounds=(0,None), initialize=0) m.x169 = Var(within=Reals, bounds=(0,None), initialize=0) m.x170 = Var(within=Reals, bounds=(0,None), initialize=0) m.x171 = Var(within=Reals, bounds=(0,None), initialize=0) m.x172 = Var(within=Reals, bounds=(0,None), initialize=0) m.x173 = Var(within=Reals, bounds=(0,None), initialize=0) m.x174 = Var(within=Reals, bounds=(0,None), initialize=0) m.x175 = Var(within=Reals, bounds=(0,None), initialize=0) m.x176 = Var(within=Reals, bounds=(0,None), initialize=0) m.x177 = Var(within=Reals, bounds=(0,None), initialize=0) m.x178 = Var(within=Reals, bounds=(0,None), initialize=0) m.x179 = Var(within=Reals, bounds=(0,None), initialize=0) m.x180 = Var(within=Reals, bounds=(0,None), initialize=0) m.x181 = Var(within=Reals, bounds=(0,None), initialize=0) m.x182 = Var(within=Reals, bounds=(0,None), initialize=0) m.x183 = Var(within=Reals, bounds=(0,None), initialize=0) m.x184 = Var(within=Reals, bounds=(0,None), initialize=0) m.x185 = Var(within=Reals, bounds=(0,None), initialize=0) m.x186 = Var(within=Reals, bounds=(0,None), initialize=0) m.x187 = Var(within=Reals, bounds=(0,None), initialize=0) m.x188 = Var(within=Reals, bounds=(0,None), initialize=0) m.x189 = Var(within=Reals, bounds=(0,None), initialize=0) m.x190 = Var(within=Reals, bounds=(0,None), initialize=0) m.x191 = Var(within=Reals, bounds=(0,None), initialize=0) m.x192 = Var(within=Reals, bounds=(0,None), initialize=0) m.x193 = Var(within=Reals, bounds=(0,None), initialize=0) m.x194 = Var(within=Reals, bounds=(0,None), initialize=0) m.x195 = Var(within=Reals, bounds=(0,None), initialize=0) m.x196 = Var(within=Reals, bounds=(0,None), initialize=0) m.x197 = Var(within=Reals, bounds=(0,None), initialize=0) m.x198 = Var(within=Reals, bounds=(0,None), initialize=0) m.x199 = Var(within=Reals, bounds=(0,None), initialize=0) m.x200 = Var(within=Reals, bounds=(0,None), initialize=0) m.x201 = Var(within=Reals, bounds=(0,None), initialize=0) m.x202 = Var(within=Reals, bounds=(0,None), initialize=0) m.x203 = Var(within=Reals, bounds=(0,None), initialize=0) m.x204 = Var(within=Reals, bounds=(0,None), initialize=0) m.x205 = Var(within=Reals, bounds=(0,None), initialize=0) m.x206 = Var(within=Reals, bounds=(0,None), initialize=0) m.x207 = Var(within=Reals, bounds=(0,None), initialize=0) m.x208 = Var(within=Reals, bounds=(0,None), initialize=0) m.x209 = Var(within=Reals, bounds=(0,None), initialize=0) m.x210 = Var(within=Reals, bounds=(0,None), initialize=0) m.x211 = Var(within=Reals, bounds=(0,None), initialize=0) m.x212 = Var(within=Reals, bounds=(0,None), initialize=0) m.x213 = Var(within=Reals, bounds=(0,None), initialize=0) m.x214 = Var(within=Reals, bounds=(0,None), initialize=0) m.x215 = Var(within=Reals, bounds=(0,None), initialize=0) m.x216 = Var(within=Reals, bounds=(0,None), initialize=0) m.x217 = Var(within=Reals, bounds=(0,None), initialize=0) m.x218 = Var(within=Reals, bounds=(0,None), initialize=0) m.x219 = Var(within=Reals, bounds=(0,None), initialize=0) m.x220 = Var(within=Reals, bounds=(0,None), initialize=0) m.x221 = Var(within=Reals, bounds=(0,None), initialize=0) m.x222 = Var(within=Reals, bounds=(0,None), initialize=0) m.x223 = Var(within=Reals, bounds=(0,None), initialize=0) m.x224 = Var(within=Reals, bounds=(0,None), initialize=0) m.x225 = Var(within=Reals, bounds=(0,7), initialize=0) m.x226 = Var(within=Reals, bounds=(0,7), initialize=0) m.x227 = Var(within=Reals, bounds=(0,7), initialize=0) m.x228 = Var(within=Reals, bounds=(0,7), initialize=0) m.x229 = Var(within=Reals, bounds=(0,None), initialize=0) m.x230 = Var(within=Reals, bounds=(0,None), initialize=0) m.x231 = Var(within=Reals, bounds=(0,None), initialize=0) m.x232 = Var(within=Reals, bounds=(0,None), initialize=0) m.x233 = Var(within=Reals, bounds=(0,None), initialize=0) m.x234 = Var(within=Reals, bounds=(0,None), initialize=0) m.x235 = Var(within=Reals, bounds=(0,None), initialize=0) m.x236 = Var(within=Reals, bounds=(0,None), initialize=0) m.x237 = Var(within=Reals, bounds=(0,None), initialize=0) m.x238 = Var(within=Reals, bounds=(0,None), initialize=0) m.x239 = Var(within=Reals, bounds=(0,None), initialize=0) m.x240 = Var(within=Reals, bounds=(0,None), initialize=0) m.x241 = Var(within=Reals, bounds=(0,None), initialize=0) m.x242 = Var(within=Reals, bounds=(0,None), initialize=0) m.x243 = Var(within=Reals, bounds=(0,None), initialize=0) m.x244 = Var(within=Reals, bounds=(0,None), initialize=0) m.x245 = Var(within=Reals, bounds=(0,None), initialize=0) m.x246 = Var(within=Reals, bounds=(0,None), initialize=0) m.x247 = Var(within=Reals, bounds=(0,None), initialize=0) m.x248 = Var(within=Reals, bounds=(0,None), initialize=0) m.x249 = Var(within=Reals, bounds=(0,None), initialize=0) m.x250 = Var(within=Reals, bounds=(0,None), initialize=0) m.x251 = Var(within=Reals, bounds=(0,None), initialize=0) m.x252 = Var(within=Reals, bounds=(0,None), initialize=0) m.x253 = Var(within=Reals, bounds=(0,None), initialize=0) m.x254 = Var(within=Reals, bounds=(0,None), initialize=0) m.x255 = Var(within=Reals, bounds=(0,None), initialize=0) m.x256 = Var(within=Reals, bounds=(0,None), initialize=0) m.x257 = Var(within=Reals, bounds=(0,None), initialize=0) m.x258 = Var(within=Reals, bounds=(0,None), initialize=0) m.x259 = Var(within=Reals, bounds=(0,None), initialize=0) m.x260 = Var(within=Reals, bounds=(0,None), initialize=0) m.x261 = Var(within=Reals, bounds=(0,None), initialize=0) m.x262 = Var(within=Reals, bounds=(0,None), initialize=0) m.x263 = Var(within=Reals, bounds=(0,None), initialize=0) m.x264 = Var(within=Reals, bounds=(0,None), initialize=0) m.x265 = Var(within=Reals, bounds=(0,None), initialize=0) m.x266 = Var(within=Reals, bounds=(0,None), initialize=0) m.x267 = Var(within=Reals, bounds=(0,None), initialize=0) m.x268 = Var(within=Reals, bounds=(0,None), initialize=0) m.x269 = Var(within=Reals, bounds=(0,None), initialize=0) m.x270 = Var(within=Reals, bounds=(0,None), initialize=0) m.x271 = Var(within=Reals, bounds=(0,None), initialize=0) m.x272 = Var(within=Reals, bounds=(0,None), initialize=0) m.x273 = Var(within=Reals, bounds=(0,None), initialize=0) m.x274 = Var(within=Reals, bounds=(0,None), initialize=0) m.x275 = Var(within=Reals, bounds=(0,None), initialize=0) m.x276 = Var(within=Reals, bounds=(0,None), initialize=0) m.x277 = Var(within=Reals, bounds=(0,None), initialize=0) m.x278 = Var(within=Reals, bounds=(0,None), initialize=0) m.x279 = Var(within=Reals, bounds=(0,None), initialize=0) m.x280 = Var(within=Reals, bounds=(0,None), initialize=0) m.x281 = Var(within=Reals, bounds=(0,None), initialize=0) m.x282 = Var(within=Reals, bounds=(0,None), initialize=0) m.x283 = Var(within=Reals, bounds=(0,None), initialize=0) m.x284 = Var(within=Reals, bounds=(0,None), initialize=0) m.x285 = Var(within=Reals, bounds=(0,None), initialize=0) m.x286 = Var(within=Reals, bounds=(0,None), initialize=0) m.x287 = Var(within=Reals, bounds=(0,None), initialize=0) m.x288 = Var(within=Reals, bounds=(0,None), initialize=0) m.x289 = Var(within=Reals, bounds=(0,None), initialize=0) m.x290 = Var(within=Reals, bounds=(0,None), initialize=0) m.x291 = Var(within=Reals, bounds=(0,None), initialize=0) m.x292 = Var(within=Reals, bounds=(0,None), initialize=0) m.x293 = Var(within=Reals, bounds=(0,7), initialize=0) m.x294 = Var(within=Reals, bounds=(0,7), initialize=0) m.x295 = Var(within=Reals, bounds=(0,7), initialize=0) m.x296 = Var(within=Reals, bounds=(0,7), initialize=0) m.x297 = Var(within=Reals, bounds=(0,5), initialize=0) m.x298 = Var(within=Reals, bounds=(0,5), initialize=0) m.x299 = Var(within=Reals, bounds=(0,5), initialize=0) m.x300 = Var(within=Reals, bounds=(0,5), initialize=0) m.x301 = Var(within=Reals, bounds=(0,None), initialize=0) m.x302 = Var(within=Reals, bounds=(0,None), initialize=0) m.x303 = Var(within=Reals, bounds=(0,None), initialize=0) m.x304 = Var(within=Reals, bounds=(0,None), initialize=0) m.x305 = Var(within=Reals, bounds=(0,None), initialize=0) m.x306 = Var(within=Reals, bounds=(0,None), initialize=0) m.x307 = Var(within=Reals, bounds=(0,None), initialize=0) m.x308 = Var(within=Reals, bounds=(0,None), initialize=0) m.x309 = Var(within=Reals, bounds=(0,None), initialize=0) m.x310 = Var(within=Reals, bounds=(0,None), initialize=0) m.x311 = Var(within=Reals, bounds=(0,None), initialize=0) m.x312 = Var(within=Reals, bounds=(0,None), initialize=0) m.x313 = Var(within=Reals, bounds=(0,None), initialize=0) m.x314 = Var(within=Reals, bounds=(0,None), initialize=0) m.x315 = Var(within=Reals, bounds=(0,None), initialize=0) m.x316 = Var(within=Reals, bounds=(0,None), initialize=0) m.x317 = Var(within=Reals, bounds=(0,None), initialize=0) m.x318 = Var(within=Reals, bounds=(0,None), initialize=0) m.x319 = Var(within=Reals, bounds=(0,None), initialize=0) m.x320 = Var(within=Reals, bounds=(0,None), initialize=0) m.x321 = Var(within=Reals, bounds=(0,None), initialize=0) m.x322 = Var(within=Reals, bounds=(0,None), initialize=0) m.x323 = Var(within=Reals, bounds=(0,None), initialize=0) m.x324 = Var(within=Reals, bounds=(0,None), initialize=0) m.x325 = Var(within=Reals, bounds=(0,None), initialize=0) m.x326 = Var(within=Reals, bounds=(0,None), initialize=0) m.x327 = Var(within=Reals, bounds=(0,None), initialize=0) m.x328 = Var(within=Reals, bounds=(0,None), initialize=0) m.x329 = Var(within=Reals, bounds=(0,None), initialize=0) m.x330 = Var(within=Reals, bounds=(0,None), initialize=0) m.x331 = Var(within=Reals, bounds=(0,None), initialize=0) m.x332 = Var(within=Reals, bounds=(0,None), initialize=0) m.x333 = Var(within=Reals, bounds=(0,None), initialize=0) m.x334 = Var(within=Reals, bounds=(0,None), initialize=0) m.x335 = Var(within=Reals, bounds=(0,None), initialize=0) m.x336 = Var(within=Reals, bounds=(0,None), initialize=0) m.x337 = Var(within=Reals, bounds=(0,None), initialize=0) m.x338 = Var(within=Reals, bounds=(0,None), initialize=0) m.x339 = Var(within=Reals, bounds=(0,None), initialize=0) m.x340 = Var(within=Reals, bounds=(0,None), initialize=0) m.x341 = Var(within=Reals, bounds=(0,None), initialize=0) m.x342 = Var(within=Reals, bounds=(0,None), initialize=0) m.x343 = Var(within=Reals, bounds=(0,None), initialize=0) m.x344 = Var(within=Reals, bounds=(0,None), initialize=0) m.x345 = Var(within=Reals, bounds=(0,None), initialize=0) m.x346 = Var(within=Reals, bounds=(0,None), initialize=0) m.x347 = Var(within=Reals, bounds=(0,None), initialize=0) m.x348 = Var(within=Reals, bounds=(0,None), initialize=0) m.x349 = Var(within=Reals, bounds=(0,None), initialize=0) m.x350 = Var(within=Reals, bounds=(0,None), initialize=0) m.x351 = Var(within=Reals, bounds=(0,None), initialize=0) m.x352 = Var(within=Reals, bounds=(0,None), initialize=0) m.x353 = Var(within=Reals, bounds=(0,None), initialize=0) m.x354 = Var(within=Reals, bounds=(0,None), initialize=0) m.x355 = Var(within=Reals, bounds=(0,None), initialize=0) m.x356 = Var(within=Reals, bounds=(0,None), initialize=0) m.x357 = Var(within=Reals, bounds=(0,None), initialize=0) m.x358 = Var(within=Reals, bounds=(0,None), initialize=0) m.x359 = Var(within=Reals, bounds=(0,None), initialize=0) m.x360 = Var(within=Reals, bounds=(0,None), initialize=0) m.x361 = Var(within=Reals, bounds=(0,None), initialize=0) m.x362 = Var(within=Reals, bounds=(0,None), initialize=0) m.x363 = Var(within=Reals, bounds=(0,None), initialize=0) m.x364 = Var(within=Reals, bounds=(0,None), initialize=0) m.x365 = Var(within=Reals, bounds=(0,None), initialize=0) m.x366 = Var(within=Reals, bounds=(0,None), initialize=0) m.x367 = Var(within=Reals, bounds=(0,None), initialize=0) m.x368 = Var(within=Reals, bounds=(0,None), initialize=0) m.x369 = Var(within=Reals, bounds=(0,None), initialize=0) m.x370 = Var(within=Reals, bounds=(0,None), initialize=0) m.x371 = Var(within=Reals, bounds=(0,None), initialize=0) m.x372 = Var(within=Reals, bounds=(0,None), initialize=0) m.x373 = Var(within=Reals, bounds=(0,None), initialize=0) m.x374 = Var(within=Reals, bounds=(0,None), initialize=0) m.x375 = Var(within=Reals, bounds=(0,None), initialize=0) m.x376 = Var(within=Reals, bounds=(0,None), initialize=0) m.x377 = Var(within=Reals, bounds=(0,None), initialize=0) m.x378 = Var(within=Reals, bounds=(0,None), initialize=0) m.x379 = Var(within=Reals, bounds=(0,None), initialize=0) m.x380 = Var(within=Reals, bounds=(0,None), initialize=0) m.x381 = Var(within=Reals, bounds=(0,None), initialize=0) m.x382 = Var(within=Reals, bounds=(0,None), initialize=0) m.x383 = Var(within=Reals, bounds=(0,None), initialize=0) m.x384 = Var(within=Reals, bounds=(0,None), initialize=0) m.x385 = Var(within=Reals, bounds=(0,None), initialize=0) m.x386 = Var(within=Reals, bounds=(0,None), initialize=0) m.x387 = Var(within=Reals, bounds=(0,None), initialize=0) m.x388 = Var(within=Reals, bounds=(0,None), initialize=0) m.x389 = Var(within=Reals, bounds=(0,None), initialize=0) m.x390 = Var(within=Reals, bounds=(0,None), initialize=0) m.x391 = Var(within=Reals, bounds=(0,None), initialize=0) m.x392 = Var(within=Reals, bounds=(0,None), initialize=0) m.x393 = Var(within=Reals, bounds=(0,None), initialize=0) m.x394 = Var(within=Reals, bounds=(0,None), initialize=0) m.x395 = Var(within=Reals, bounds=(0,None), initialize=0) m.x396 = Var(within=Reals, bounds=(0,None), initialize=0) m.x397 = Var(within=Reals, bounds=(0,None), initialize=0) m.x398 = Var(within=Reals, bounds=(0,None), initialize=0) m.x399 = Var(within=Reals, bounds=(0,None), initialize=0) m.x400 = Var(within=Reals, bounds=(0,None), initialize=0) m.x401 = Var(within=Reals, bounds=(0,None), initialize=0) m.x402 = Var(within=Reals, bounds=(0,None), initialize=0) m.x403 = Var(within=Reals, bounds=(0,None), initialize=0) m.x404 = Var(within=Reals, bounds=(0,None), initialize=0) m.x405 = Var(within=Reals, bounds=(0,None), initialize=0) m.x406 = Var(within=Reals, bounds=(0,None), initialize=0) m.x407 = Var(within=Reals, bounds=(0,None), initialize=0) m.x408 = Var(within=Reals, bounds=(0,None), initialize=0) m.x409 = Var(within=Reals, bounds=(0,None), initialize=0) m.x410 = Var(within=Reals, bounds=(0,None), initialize=0) m.x411 = Var(within=Reals, bounds=(0,None), initialize=0) m.x412 = Var(within=Reals, bounds=(0,None), initialize=0) m.x413 = Var(within=Reals, bounds=(0,None), initialize=0) m.x414 = Var(within=Reals, bounds=(0,None), initialize=0) m.x415 = Var(within=Reals, bounds=(0,None), initialize=0) m.x416 = Var(within=Reals, bounds=(0,None), initialize=0) m.x417 = Var(within=Reals, bounds=(0,None), initialize=0) m.x418 = Var(within=Reals, bounds=(0,None), initialize=0) m.x419 = Var(within=Reals, bounds=(0,None), initialize=0) m.x420 = Var(within=Reals, bounds=(0,None), initialize=0) m.x421 = Var(within=Reals, bounds=(0,None), initialize=0) m.x422 = Var(within=Reals, bounds=(0,None), initialize=0) m.x423 = Var(within=Reals, bounds=(0,None), initialize=0) m.x424 = Var(within=Reals, bounds=(0,None), initialize=0) m.x425 = Var(within=Reals, bounds=(0,None), initialize=0) m.x426 = Var(within=Reals, bounds=(0,None), initialize=0) m.x427 = Var(within=Reals, bounds=(0,None), initialize=0) m.x428 = Var(within=Reals, bounds=(0,None), initialize=0) m.x429 = Var(within=Reals, bounds=(0,None), initialize=0) m.x430 = Var(within=Reals, bounds=(0,None), initialize=0) m.x431 = Var(within=Reals, bounds=(0,None), initialize=0) m.x432 = Var(within=Reals, bounds=(0,None), initialize=0) m.x433 = Var(within=Reals, bounds=(0,None), initialize=0) m.x434 = Var(within=Reals, bounds=(0,None), initialize=0) m.x435 = Var(within=Reals, bounds=(0,None), initialize=0) m.x436 = Var(within=Reals, bounds=(0,None), initialize=0) m.x437 = Var(within=Reals, bounds=(0,None), initialize=0) m.x438 = Var(within=Reals, bounds=(0,None), initialize=0) m.x439 = Var(within=Reals, bounds=(0,None), initialize=0) m.x440 = Var(within=Reals, bounds=(0,None), initialize=0) m.x441 = Var(within=Reals, bounds=(0,None), initialize=0) m.x442 = Var(within=Reals, bounds=(0,None), initialize=0) m.x443 = Var(within=Reals, bounds=(0,None), initialize=0) m.x444 = Var(within=Reals, bounds=(0,None), initialize=0) m.x445 = Var(within=Reals, bounds=(0,None), initialize=0) m.x446 = Var(within=Reals, bounds=(0,None), initialize=0) m.x447 = Var(within=Reals, bounds=(0,None), initialize=0) m.x448 = Var(within=Reals, bounds=(0,None), initialize=0) m.x449 = Var(within=Reals, bounds=(0,None), initialize=0) m.x450 = Var(within=Reals, bounds=(0,None), initialize=0) m.x451 = Var(within=Reals, bounds=(0,None), initialize=0) m.x452 = Var(within=Reals, bounds=(0,None), initialize=0) m.x453 = Var(within=Reals, bounds=(0,None), initialize=0) m.x454 = Var(within=Reals, bounds=(0,None), initialize=0) m.x455 = Var(within=Reals, bounds=(0,None), initialize=0) m.x456 = Var(within=Reals, bounds=(0,None), initialize=0) m.x457 = Var(within=Reals, bounds=(0,None), initialize=0) m.x458 = Var(within=Reals, bounds=(0,None), initialize=0) m.x459 = Var(within=Reals, bounds=(0,None), initialize=0) m.x460 = Var(within=Reals, bounds=(0,None), initialize=0) m.x461 = Var(within=Reals, bounds=(0,None), initialize=0) m.x462 = Var(within=Reals, bounds=(0,None), initialize=0) m.x463 = Var(within=Reals, bounds=(0,None), initialize=0) m.x464 = Var(within=Reals, bounds=(0,None), initialize=0) m.x465 = Var(within=Reals, bounds=(0,None), initialize=0) m.x466 = Var(within=Reals, bounds=(0,None), initialize=0) m.x467 = Var(within=Reals, bounds=(0,None), initialize=0) m.x468 = Var(within=Reals, bounds=(0,None), initialize=0) m.x469 = Var(within=Reals, bounds=(0,None), initialize=0) m.x470 = Var(within=Reals, bounds=(0,None), initialize=0) m.x471 = Var(within=Reals, bounds=(0,None), initialize=0) m.x472 = Var(within=Reals, bounds=(0,None), initialize=0) m.x473 = Var(within=Reals, bounds=(0,None), initialize=0) m.x474 = Var(within=Reals, bounds=(0,None), initialize=0) m.x475 = Var(within=Reals, bounds=(0,None), initialize=0) m.x476 = Var(within=Reals, bounds=(0,None), initialize=0) m.x477 = Var(within=Reals, bounds=(0,None), initialize=0) m.x478 = Var(within=Reals, bounds=(0,None), initialize=0) m.x479 = Var(within=Reals, bounds=(0,None), initialize=0) m.x480 = Var(within=Reals, bounds=(0,None), initialize=0) m.x481 = Var(within=Reals, bounds=(0,None), initialize=0) m.x482 = Var(within=Reals, bounds=(0,None), initialize=0) m.x483 = Var(within=Reals, bounds=(0,None), initialize=0) m.x484 = Var(within=Reals, bounds=(0,None), initialize=0) m.x485 = Var(within=Reals, bounds=(0,None), initialize=0) m.x486 = Var(within=Reals, bounds=(0,None), initialize=0) m.x487 = Var(within=Reals, bounds=(0,None), initialize=0) m.x488 = Var(within=Reals, bounds=(0,None), initialize=0) m.x489 = Var(within=Reals, bounds=(0,None), initialize=0) m.x490 = Var(within=Reals, bounds=(0,None), initialize=0) m.x491 = Var(within=Reals, bounds=(0,None), initialize=0) m.x492 = Var(within=Reals, bounds=(0,None), initialize=0) m.x493 = Var(within=Reals, bounds=(0,None), initialize=0) m.x494 = Var(within=Reals, bounds=(0,None), initialize=0) m.x495 = Var(within=Reals, bounds=(0,None), initialize=0) m.x496 = Var(within=Reals, bounds=(0,None), initialize=0) m.x497 = Var(within=Reals, bounds=(0,None), initialize=0) m.x498 = Var(within=Reals, bounds=(0,None), initialize=0) m.x499 = Var(within=Reals, bounds=(0,None), initialize=0) m.x500 = Var(within=Reals, bounds=(0,None), initialize=0) m.x501 = Var(within=Reals, bounds=(0,None), initialize=0) m.x502 = Var(within=Reals, bounds=(0,None), initialize=0) m.x503 = Var(within=Reals, bounds=(0,None), initialize=0) m.x504 = Var(within=Reals, bounds=(0,None), initialize=0) m.x505 = Var(within=Reals, bounds=(0,None), initialize=0) m.x506 = Var(within=Reals, bounds=(0,None), initialize=0) m.x507 = Var(within=Reals, bounds=(0,None), initialize=0) m.x508 = Var(within=Reals, bounds=(0,None), initialize=0) m.x509 = Var(within=Reals, bounds=(0,None), initialize=0) m.x510 = Var(within=Reals, bounds=(0,None), initialize=0) m.x511 = Var(within=Reals, bounds=(0,None), initialize=0) m.x512 = Var(within=Reals, bounds=(0,None), initialize=0) m.x513 = Var(within=Reals, bounds=(0,None), initialize=0) m.x514 = Var(within=Reals, bounds=(0,None), initialize=0) m.x515 = Var(within=Reals, bounds=(0,None), initialize=0) m.x516 = Var(within=Reals, bounds=(0,None), initialize=0) m.x517 = Var(within=Reals, bounds=(0,None), initialize=0) m.x518 = Var(within=Reals, bounds=(0,None), initialize=0) m.x519 = Var(within=Reals, bounds=(0,None), initialize=0) m.x520 = Var(within=Reals, bounds=(0,None), initialize=0) m.x521 = Var(within=Reals, bounds=(0,None), initialize=0) m.x522 = Var(within=Reals, bounds=(0,None), initialize=0) m.x523 = Var(within=Reals, bounds=(0,None), initialize=0) m.x524 = Var(within=Reals, bounds=(0,None), initialize=0) m.x525 = Var(within=Reals, bounds=(0,None), initialize=0) m.x526 = Var(within=Reals, bounds=(0,None), initialize=0) m.x527 = Var(within=Reals, bounds=(0,None), initialize=0) m.x528 = Var(within=Reals, bounds=(0,None), initialize=0) m.x529 = Var(within=Reals, bounds=(0,None), initialize=0) m.x530 = Var(within=Reals, bounds=(0,None), initialize=0) m.x531 = Var(within=Reals, bounds=(0,None), initialize=0) m.x532 = Var(within=Reals, bounds=(0,None), initialize=0) m.x533 = Var(within=Reals, bounds=(0,None), initialize=0) m.x534 = Var(within=Reals, bounds=(0,None), initialize=0) m.x535 = Var(within=Reals, bounds=(0,None), initialize=0) m.x536 = Var(within=Reals, bounds=(0,None), initialize=0) m.x537 = Var(within=Reals, bounds=(0,None), initialize=0) m.x538 = Var(within=Reals, bounds=(0,None), initialize=0) m.x539 = Var(within=Reals, bounds=(0,None), initialize=0) m.x540 = Var(within=Reals, bounds=(0,None), initialize=0) m.x541 = Var(within=Reals, bounds=(0,None), initialize=0) m.x542 = Var(within=Reals, bounds=(0,None), initialize=0) m.x543 = Var(within=Reals, bounds=(0,None), initialize=0) m.x544 = Var(within=Reals, bounds=(0,None), initialize=0) m.x545 = Var(within=Reals, bounds=(0,None), initialize=0) m.x546 = Var(within=Reals, bounds=(0,None), initialize=0) m.x547 = Var(within=Reals, bounds=(0,None), initialize=0) m.x548 = Var(within=Reals, bounds=(0,None), initialize=0) m.x549 = Var(within=Reals, bounds=(0,None), initialize=0) m.x550 = Var(within=Reals, bounds=(0,None), initialize=0) m.x551 = Var(within=Reals, bounds=(0,None), initialize=0) m.x552 = Var(within=Reals, bounds=(0,None), initialize=0) m.x553 = Var(within=Reals, bounds=(0,None), initialize=0) m.x554 = Var(within=Reals, bounds=(0,None), initialize=0) m.x555 = Var(within=Reals, bounds=(0,None), initialize=0) m.x556 = Var(within=Reals, bounds=(0,None), initialize=0) m.x557 = Var(within=Reals, bounds=(0,None), initialize=0) m.x558 = Var(within=Reals, bounds=(0,None), initialize=0) m.x559 = Var(within=Reals, bounds=(0,None), initialize=0) m.x560 = Var(within=Reals, bounds=(0,None), initialize=0) m.x561 = Var(within=Reals, bounds=(0,None), initialize=0) m.x562 = Var(within=Reals, bounds=(0,None), initialize=0) m.x563 = Var(within=Reals, bounds=(0,None), initialize=0) m.x564 = Var(within=Reals, bounds=(0,None), initialize=0) m.x565 = Var(within=Reals, bounds=(0,None), initialize=0) m.x566 = Var(within=Reals, bounds=(0,None), initialize=0) m.x567 = Var(within=Reals, bounds=(0,None), initialize=0) m.x568 = Var(within=Reals, bounds=(0,None), initialize=0) m.x569 = Var(within=Reals, bounds=(0,None), initialize=0) m.x570 = Var(within=Reals, bounds=(0,None), initialize=0) m.x571 = Var(within=Reals, bounds=(0,None), initialize=0) m.x572 = Var(within=Reals, bounds=(0,None), initialize=0) m.x573 = Var(within=Reals, bounds=(0,None), initialize=0) m.x574 = Var(within=Reals, bounds=(0,None), initialize=0) m.x575 = Var(within=Reals, bounds=(0,None), initialize=0) m.x576 = Var(within=Reals, bounds=(0,None), initialize=0) m.x577 = Var(within=Reals, bounds=(0,None), initialize=0) m.x578 = Var(within=Reals, bounds=(0,None), initialize=0) m.x579 = Var(within=Reals, bounds=(0,None), initialize=0) m.x580 = Var(within=Reals, bounds=(0,None), initialize=0) m.x581 = Var(within=Reals, bounds=(0,None), initialize=0) m.x582 = Var(within=Reals, bounds=(0,None), initialize=0) m.x583 = Var(within=Reals, bounds=(0,None), initialize=0) m.x584 = Var(within=Reals, bounds=(0,None), initialize=0) m.x585 = Var(within=Reals, bounds=(0,None), initialize=0) m.x586 = Var(within=Reals, bounds=(0,None), initialize=0) m.x587 = Var(within=Reals, bounds=(0,None), initialize=0) m.x588 = Var(within=Reals, bounds=(0,None), initialize=0) m.x589 = Var(within=Reals, bounds=(0,None), initialize=0) m.x590 = Var(within=Reals, bounds=(0,None), initialize=0) m.x591 = Var(within=Reals, bounds=(0,None), initialize=0) m.x592 = Var(within=Reals, bounds=(0,None), initialize=0) m.x593 = Var(within=Reals, bounds=(0,None), initialize=0) m.x594 = Var(within=Reals, bounds=(0,None), initialize=0) m.x595 = Var(within=Reals, bounds=(0,None), initialize=0) m.x596 = Var(within=Reals, bounds=(0,None), initialize=0) m.x597 = Var(within=Reals, bounds=(0,None), initialize=0) m.x598 = Var(within=Reals, bounds=(0,None), initialize=0) m.x599 = Var(within=Reals, bounds=(0,None), initialize=0) m.x600 = Var(within=Reals, bounds=(0,None), initialize=0) m.x601 = Var(within=Reals, bounds=(0,None), initialize=0) m.x602 = Var(within=Reals, bounds=(0,None), initialize=0) m.x603 = Var(within=Reals, bounds=(0,None), initialize=0) m.x604 = Var(within=Reals, bounds=(0,None), initialize=0) m.x605 = Var(within=Reals, bounds=(0,None), initialize=0) m.x606 = Var(within=Reals, bounds=(0,None), initialize=0) m.x607 = Var(within=Reals, bounds=(0,None), initialize=0) m.x608 = Var(within=Reals, bounds=(0,None), initialize=0) m.x609 = Var(within=Reals, bounds=(0,None), initialize=0) m.x610 = Var(within=Reals, bounds=(0,None), initialize=0) m.x611 = Var(within=Reals, bounds=(0,None), initialize=0) m.x612 = Var(within=Reals, bounds=(0,None), initialize=0) m.x613 = Var(within=Reals, bounds=(0,None), initialize=0) m.x614 = Var(within=Reals, bounds=(0,None), initialize=0) m.x615 = Var(within=Reals, bounds=(0,None), initialize=0) m.x616 = Var(within=Reals, bounds=(0,None), initialize=0) m.x617 = Var(within=Reals, bounds=(0,None), initialize=0) m.x618 = Var(within=Reals, bounds=(0,None), initialize=0) m.x619 = Var(within=Reals, bounds=(0,None), initialize=0) m.x620 = Var(within=Reals, bounds=(0,None), initialize=0) m.x621 = Var(within=Reals, bounds=(0,None), initialize=0) m.x622 = Var(within=Reals, bounds=(0,None), initialize=0) m.x623 = Var(within=Reals, bounds=(0,None), initialize=0) m.x624 = Var(within=Reals, bounds=(0,None), initialize=0) m.x625 = Var(within=Reals, bounds=(0,None), initialize=0) m.x626 = Var(within=Reals, bounds=(0,None), initialize=0) m.x627 = Var(within=Reals, bounds=(0,None), initialize=0) m.x628 = Var(within=Reals, bounds=(0,None), initialize=0) m.x629 = Var(within=Reals, bounds=(0,None), initialize=0) m.x630 = Var(within=Reals, bounds=(0,None), initialize=0) m.x631 = Var(within=Reals, bounds=(0,None), initialize=0) m.x632 = Var(within=Reals, bounds=(0,None), initialize=0) m.x633 = Var(within=Reals, bounds=(0,None), initialize=0) m.x634 = Var(within=Reals, bounds=(0,None), initialize=0) m.x635 = Var(within=Reals, bounds=(0,None), initialize=0) m.x636 = Var(within=Reals, bounds=(0,None), initialize=0) m.x637 = Var(within=Reals, bounds=(0,None), initialize=0) m.x638 = Var(within=Reals, bounds=(0,None), initialize=0) m.x639 = Var(within=Reals, bounds=(0,None), initialize=0) m.x640 = Var(within=Reals, bounds=(0,None), initialize=0) m.x641 = Var(within=Reals, bounds=(0,None), initialize=0) m.x642 = Var(within=Reals, bounds=(0,None), initialize=0) m.x643 = Var(within=Reals, bounds=(0,None), initialize=0) m.x644 = Var(within=Reals, bounds=(0,None), initialize=0) m.x645 = Var(within=Reals, bounds=(0,None), initialize=0) m.x646 = Var(within=Reals, bounds=(0,None), initialize=0) m.x647 = Var(within=Reals, bounds=(0,None), initialize=0) m.x648 = Var(within=Reals, bounds=(0,None), initialize=0) m.x649 = Var(within=Reals, bounds=(0,None), initialize=0) m.x650 = Var(within=Reals, bounds=(0,None), initialize=0) m.x651 = Var(within=Reals, bounds=(0,None), initialize=0) m.x652 = Var(within=Reals, bounds=(0,None), initialize=0) m.x653 = Var(within=Reals, bounds=(0,None), initialize=0) m.x654 = Var(within=Reals, bounds=(0,None), initialize=0) m.x655 = Var(within=Reals, bounds=(0,None), initialize=0) m.x656 = Var(within=Reals, bounds=(0,None), initialize=0) m.x657 = Var(within=Reals, bounds=(0,None), initialize=0) m.x658 = Var(within=Reals, bounds=(0,None), initialize=0) m.x659 = Var(within=Reals, bounds=(0,None), initialize=0) m.x660 = Var(within=Reals, bounds=(0,None), initialize=0) m.x661 = Var(within=Reals, bounds=(0,None), initialize=0) m.x662 = Var(within=Reals, bounds=(0,None), initialize=0) m.x663 = Var(within=Reals, bounds=(0,None), initialize=0) m.x664 = Var(within=Reals, bounds=(0,None), initialize=0) m.x665 = Var(within=Reals, bounds=(0,None), initialize=0) m.x666 = Var(within=Reals, bounds=(0,None), initialize=0) m.x667 = Var(within=Reals, bounds=(0,None), initialize=0) m.x668 = Var(within=Reals, bounds=(0,None), initialize=0) m.x669 = Var(within=Reals, bounds=(0,None), initialize=0) m.x670 = Var(within=Reals, bounds=(0,None), initialize=0) m.x671 = Var(within=Reals, bounds=(0,None), initialize=0) m.x672 = Var(within=Reals, bounds=(0,None), initialize=0) m.x673 = Var(within=Reals, bounds=(0,None), initialize=0) m.x674 = Var(within=Reals, bounds=(0,None), initialize=0) m.x675 = Var(within=Reals, bounds=(0,None), initialize=0) m.x676 = Var(within=Reals, bounds=(0,None), initialize=0) m.x677 = Var(within=Reals, bounds=(0,None), initialize=0) m.x678 = Var(within=Reals, bounds=(0,None), initialize=0) m.x679 = Var(within=Reals, bounds=(0,None), initialize=0) m.x680 = Var(within=Reals, bounds=(0,None), initialize=0) m.x681 = Var(within=Reals, bounds=(0,None), initialize=0) m.x682 = Var(within=Reals, bounds=(0,None), initialize=0) m.x683 = Var(within=Reals, bounds=(0,None), initialize=0) m.x684 = Var(within=Reals, bounds=(0,None), initialize=0) m.x685 = Var(within=Reals, bounds=(0,None), initialize=0) m.x686 = Var(within=Reals, bounds=(0,None), initialize=0) m.x687 = Var(within=Reals, bounds=(0,None), initialize=0) m.x688 = Var(within=Reals, bounds=(0,None), initialize=0) m.x689 = Var(within=Reals, bounds=(0,None), initialize=0) m.x690 = Var(within=Reals, bounds=(0,None), initialize=0) m.x691 = Var(within=Reals, bounds=(0,None), initialize=0) m.x692 = Var(within=Reals, bounds=(0,None), initialize=0) m.x693 = Var(within=Reals, bounds=(0,None), initialize=0) m.x694 = Var(within=Reals, bounds=(0,None), initialize=0) m.x695 = Var(within=Reals, bounds=(0,None), initialize=0) m.x696 = Var(within=Reals, bounds=(0,None), initialize=0) m.x697 = Var(within=Reals, bounds=(0,None), initialize=0) m.x698 = Var(within=Reals, bounds=(0,None), initialize=0) m.x699 = Var(within=Reals, bounds=(0,None), initialize=0) m.x700 = Var(within=Reals, bounds=(0,None), initialize=0) m.x701 = Var(within=Reals, bounds=(0,None), initialize=0) m.x702 = Var(within=Reals, bounds=(0,None), initialize=0) m.x703 = Var(within=Reals, bounds=(0,None), initialize=0) m.x704 = Var(within=Reals, bounds=(0,None), initialize=0) m.x705 = Var(within=Reals, bounds=(0,None), initialize=0) m.x706 = Var(within=Reals, bounds=(0,None), initialize=0) m.x707 = Var(within=Reals, bounds=(0,None), initialize=0) m.x708 = Var(within=Reals, bounds=(0,None), initialize=0) m.x709 = Var(within=Reals, bounds=(0,None), initialize=0) m.x710 = Var(within=Reals, bounds=(0,None), initialize=0) m.x711 = Var(within=Reals, bounds=(0,None), initialize=0) m.x712 = Var(within=Reals, bounds=(0,None), initialize=0) m.x713 = Var(within=Reals, bounds=(0,None), initialize=0) m.x714 = Var(within=Reals, bounds=(0,None), initialize=0) m.x715 = Var(within=Reals, bounds=(0,None), initialize=0) m.x716 = Var(within=Reals, bounds=(0,None), initialize=0) m.x717 = Var(within=Reals, bounds=(0,None), initialize=0) m.x718 = Var(within=Reals, bounds=(0,None), initialize=0) m.x719 = Var(within=Reals, bounds=(0,None), initialize=0) m.x720 = Var(within=Reals, bounds=(0,None), initialize=0) m.x721 = Var(within=Reals, bounds=(0,None), initialize=0) m.x722 = Var(within=Reals, bounds=(0,None), initialize=0) m.x723 = Var(within=Reals, bounds=(0,None), initialize=0) m.x724 = Var(within=Reals, bounds=(0,None), initialize=0) m.x725 = Var(within=Reals, bounds=(0,None), initialize=0) m.x726 = Var(within=Reals, bounds=(0,None), initialize=0) m.x727 = Var(within=Reals, bounds=(0,None), initialize=0) m.x728 = Var(within=Reals, bounds=(0,None), initialize=0) m.x729 = Var(within=Reals, bounds=(0,None), initialize=0) m.x730 = Var(within=Reals, bounds=(0,None), initialize=0) m.x731 = Var(within=Reals, bounds=(0,None), initialize=0) m.x732 = Var(within=Reals, bounds=(0,None), initialize=0) m.x733 = Var(within=Reals, bounds=(0,None), initialize=0) m.x734 = Var(within=Reals, bounds=(0,None), initialize=0) m.x735 = Var(within=Reals, bounds=(0,None), initialize=0) m.x736 = Var(within=Reals, bounds=(0,None), initialize=0) m.x737 = Var(within=Reals, bounds=(0,None), initialize=0) m.x738 = Var(within=Reals, bounds=(0,None), initialize=0) m.x739 = Var(within=Reals, bounds=(0,None), initialize=0) m.x740 = Var(within=Reals, bounds=(0,None), initialize=0) m.x741 = Var(within=Reals, bounds=(0,None), initialize=0) m.x742 = Var(within=Reals, bounds=(0,None), initialize=0) m.x743 = Var(within=Reals, bounds=(0,None), initialize=0) m.x744 = Var(within=Reals, bounds=(0,None), initialize=0) m.x745 = Var(within=Reals, bounds=(0,None), initialize=0) m.x746 = Var(within=Reals, bounds=(0,None), initialize=0) m.x747 = Var(within=Reals, bounds=(0,None), initialize=0) m.x748 = Var(within=Reals, bounds=(0,None), initialize=0) m.x749 = Var(within=Reals, bounds=(0,None), initialize=0) m.x750 = Var(within=Reals, bounds=(0,None), initialize=0) m.x751 = Var(within=Reals, bounds=(0,None), initialize=0) m.x752 = Var(within=Reals, bounds=(0,None), initialize=0) m.x753 = Var(within=Reals, bounds=(0,None), initialize=0) m.x754 = Var(within=Reals, bounds=(0,None), initialize=0) m.x755 = Var(within=Reals, bounds=(0,None), initialize=0) m.x756 = Var(within=Reals, bounds=(0,None), initialize=0) m.x757 = Var(within=Reals, bounds=(0,None), initialize=0) m.x758 = Var(within=Reals, bounds=(0,None), initialize=0) m.x759 = Var(within=Reals, bounds=(0,None), initialize=0) m.x760 = Var(within=Reals, bounds=(0,None), initialize=0) m.x761 = Var(within=Reals, bounds=(0,None), initialize=0) m.x762 = Var(within=Reals, bounds=(0,None), initialize=0) m.x763 = Var(within=Reals, bounds=(0,None), initialize=0) m.x764 = Var(within=Reals, bounds=(0,None), initialize=0) m.x765 = Var(within=Reals, bounds=(0,None), initialize=0) m.x766 = Var(within=Reals, bounds=(0,None), initialize=0) m.x767 = Var(within=Reals, bounds=(0,None), initialize=0) m.x768 = Var(within=Reals, bounds=(0,None), initialize=0) m.x769 = Var(within=Reals, bounds=(0,None), initialize=0) m.x770 = Var(within=Reals, bounds=(0,None), initialize=0) m.x771 = Var(within=Reals, bounds=(0,None), initialize=0) m.x772 = Var(within=Reals, bounds=(0,None), initialize=0) m.x773 = Var(within=Reals, bounds=(0,None), initialize=0) m.x774 = Var(within=Reals, bounds=(0,None), initialize=0) m.x775 = Var(within=Reals, bounds=(0,None), initialize=0) m.x776 = Var(within=Reals, bounds=(0,None), initialize=0) m.x777 = Var(within=Reals, bounds=(0,None), initialize=0) m.x778 = Var(within=Reals, bounds=(0,None), initialize=0) m.x779 = Var(within=Reals, bounds=(0,None), initialize=0) m.x780 = Var(within=Reals, bounds=(0,None), initialize=0) m.x781 = Var(within=Reals, bounds=(0,None), initialize=0) m.x782 = Var(within=Reals, bounds=(0,None), initialize=0) m.x783 = Var(within=Reals, bounds=(0,None), initialize=0) m.x784 = Var(within=Reals, bounds=(0,None), initialize=0) m.x785 = Var(within=Reals, bounds=(0,None), initialize=0) m.x786 = Var(within=Reals, bounds=(0,None), initialize=0) m.x787 = Var(within=Reals, bounds=(0,None), initialize=0) m.x788 = Var(within=Reals, bounds=(0,None), initialize=0) m.x789 = Var(within=Reals, bounds=(0,None), initialize=0) m.x790 = Var(within=Reals, bounds=(0,None), initialize=0) m.x791 = Var(within=Reals, bounds=(0,None), initialize=0) m.x792 = Var(within=Reals, bounds=(0,None), initialize=0) m.x793 = Var(within=Reals, bounds=(0,None), initialize=0) m.x794 = Var(within=Reals, bounds=(0,None), initialize=0) m.x795 = Var(within=Reals, bounds=(0,None), initialize=0) m.x796 = Var(within=Reals, bounds=(0,None), initialize=0) m.x797 = Var(within=Reals, bounds=(0,None), initialize=0) m.x798 = Var(within=Reals, bounds=(0,None), initialize=0) m.x799 = Var(within=Reals, bounds=(0,None), initialize=0) m.x800 = Var(within=Reals, bounds=(0,None), initialize=0) m.x801 = Var(within=Reals, bounds=(0,None), initialize=0) m.x802 = Var(within=Reals, bounds=(0,None), initialize=0) m.x803 = Var(within=Reals, bounds=(0,None), initialize=0) m.x804 = Var(within=Reals, bounds=(0,None), initialize=0) m.x805 = Var(within=Reals, bounds=(0,None), initialize=0) m.x806 = Var(within=Reals, bounds=(0,None), initialize=0) m.x807 = Var(within=Reals, bounds=(0,None), initialize=0) m.x808 = Var(within=Reals, bounds=(0,None), initialize=0) m.x809 = Var(within=Reals, bounds=(0,None), initialize=0) m.x810 = Var(within=Reals, bounds=(0,None), initialize=0) m.x811 = Var(within=Reals, bounds=(0,None), initialize=0) m.x812 = Var(within=Reals, bounds=(0,None), initialize=0) m.x813 = Var(within=Reals, bounds=(0,None), initialize=0) m.x814 = Var(within=Reals, bounds=(0,None), initialize=0) m.x815 = Var(within=Reals, bounds=(0,None), initialize=0) m.x816 = Var(within=Reals, bounds=(0,None), initialize=0) m.x817 = Var(within=Reals, bounds=(0,None), initialize=0) m.x818 = Var(within=Reals, bounds=(0,None), initialize=0) m.x819 = Var(within=Reals, bounds=(0,None), initialize=0) m.x820 = Var(within=Reals, bounds=(0,None), initialize=0) m.x821 = Var(within=Reals, bounds=(0,None), initialize=0) m.x822 = Var(within=Reals, bounds=(0,None), initialize=0) m.x823 = Var(within=Reals, bounds=(0,None), initialize=0) m.x824 = Var(within=Reals, bounds=(0,None), initialize=0) m.x825 = Var(within=Reals, bounds=(0,None), initialize=0) m.x826 = Var(within=Reals, bounds=(0,None), initialize=0) m.x827 = Var(within=Reals, bounds=(0,None), initialize=0) m.x828 = Var(within=Reals, bounds=(0,None), initialize=0) m.x829 = Var(within=Reals, bounds=(0,None), initialize=0) m.x830 = Var(within=Reals, bounds=(0,None), initialize=0) m.x831 = Var(within=Reals, bounds=(0,None), initialize=0) m.x832 = Var(within=Reals, bounds=(0,None), initialize=0) m.x833 = Var(within=Reals, bounds=(0,None), initialize=0) m.x834 = Var(within=Reals, bounds=(0,None), initialize=0) m.x835 = Var(within=Reals, bounds=(0,None), initialize=0) m.x836 = Var(within=Reals, bounds=(0,None), initialize=0) m.x837 = Var(within=Reals, bounds=(0,None), initialize=0) m.x838 = Var(within=Reals, bounds=(0,None), initialize=0) m.x839 = Var(within=Reals, bounds=(0,None), initialize=0) m.x840 = Var(within=Reals, bounds=(0,None), initialize=0) m.x841 = Var(within=Reals, bounds=(0,None), initialize=0) m.x842 = Var(within=Reals, bounds=(0,None), initialize=0) m.x843 = Var(within=Reals, bounds=(0,None), initialize=0) m.x844 = Var(within=Reals, bounds=(0,None), initialize=0) m.x845 = Var(within=Reals, bounds=(0,None), initialize=0) m.x846 = Var(within=Reals, bounds=(0,None), initialize=0) m.x847 = Var(within=Reals, bounds=(0,None), initialize=0) m.x848 = Var(within=Reals, bounds=(0,None), initialize=0) m.x849 = Var(within=Reals, bounds=(0,None), initialize=0) m.x850 = Var(within=Reals, bounds=(0,None), initialize=0) m.x851 = Var(within=Reals, bounds=(0,None), initialize=0) m.x852 = Var(within=Reals, bounds=(0,None), initialize=0) m.x853 = Var(within=Reals, bounds=(0,None), initialize=0) m.x854 = Var(within=Reals, bounds=(0,None), initialize=0) m.x855 = Var(within=Reals, bounds=(0,None), initialize=0) m.x856 = Var(within=Reals, bounds=(0,None), initialize=0) m.x857 = Var(within=Reals, bounds=(0,None), initialize=0) m.x858 = Var(within=Reals, bounds=(0,None), initialize=0) m.x859 = Var(within=Reals, bounds=(0,None), initialize=0) m.x860 = Var(within=Reals, bounds=(0,None), initialize=0) m.x861 = Var(within=Reals, bounds=(0,None), initialize=0) m.x862 = Var(within=Reals, bounds=(0,None), initialize=0) m.x863 = Var(within=Reals, bounds=(0,None), initialize=0) m.x864 = Var(within=Reals, bounds=(0,None), initialize=0) m.x865 = Var(within=Reals, bounds=(0,None), initialize=0) m.x866 = Var(within=Reals, bounds=(0,None), initialize=0) m.x867 = Var(within=Reals, bounds=(0,None), initialize=0) m.x868 = Var(within=Reals, bounds=(0,None), initialize=0) m.x869 = Var(within=Reals, bounds=(0,None), initialize=0) m.x870 = Var(within=Reals, bounds=(0,None), initialize=0) m.x871 = Var(within=Reals, bounds=(0,None), initialize=0) m.x872 = Var(within=Reals, bounds=(0,None), initialize=0) m.x873 = Var(within=Reals, bounds=(0,None), initialize=0) m.x874 = Var(within=Reals, bounds=(0,None), initialize=0) m.x875 = Var(within=Reals, bounds=(0,None), initialize=0) m.x876 = Var(within=Reals, bounds=(0,None), initialize=0) m.x877 = Var(within=Reals, bounds=(0,None), initialize=0) m.x878 = Var(within=Reals, bounds=(0,None), initialize=0) m.x879 = Var(within=Reals, bounds=(0,None), initialize=0) m.x880 = Var(within=Reals, bounds=(0,None), initialize=0) m.x881 = Var(within=Reals, bounds=(0,None), initialize=0) m.x882 = Var(within=Reals, bounds=(0,None), initialize=0) m.x883 = Var(within=Reals, bounds=(0,None), initialize=0) m.x884 = Var(within=Reals, bounds=(0,None), initialize=0) m.x885 = Var(within=Reals, bounds=(0,None), initialize=0) m.x886 = Var(within=Reals, bounds=(0,None), initialize=0) m.x887 = Var(within=Reals, bounds=(0,None), initialize=0) m.x888 = Var(within=Reals, bounds=(0,None), initialize=0) m.x889 = Var(within=Reals, bounds=(0,None), initialize=0) m.x890 = Var(within=Reals, bounds=(0,None), initialize=0) m.x891 = Var(within=Reals, bounds=(0,None), initialize=0) m.x892 = Var(within=Reals, bounds=(0,None), initialize=0) m.x893 = Var(within=Reals, bounds=(0,None), initialize=0) m.x894 = Var(within=Reals, bounds=(0,None), initialize=0) m.x895 = Var(within=Reals, bounds=(0,None), initialize=0) m.x896 = Var(within=Reals, bounds=(0,None), initialize=0) m.x897 = Var(within=Reals, bounds=(0,None), initialize=0) m.x898 = Var(within=Reals, bounds=(0,None), initialize=0) m.x899 = Var(within=Reals, bounds=(0,None), initialize=0) m.x900 = Var(within=Reals, bounds=(0,None), initialize=0) m.x901 = Var(within=Reals, bounds=(0,None), initialize=0) m.x902 = Var(within=Reals, bounds=(0,None), initialize=0) m.x903 = Var(within=Reals, bounds=(0,None), initialize=0) m.x904 = Var(within=Reals, bounds=(0,None), initialize=0) m.x905 = Var(within=Reals, bounds=(0,None), initialize=0) m.x906 = Var(within=Reals, bounds=(0,None), initialize=0) m.x907 = Var(within=Reals, bounds=(0,None), initialize=0) m.x908 = Var(within=Reals, bounds=(0,None), initialize=0) m.x909 = Var(within=Reals, bounds=(0,None), initialize=0) m.x910 = Var(within=Reals, bounds=(0,None), initialize=0) m.x911 = Var(within=Reals, bounds=(0,None), initialize=0) m.x912 = Var(within=Reals, bounds=(0,None), initialize=0) m.x913 = Var(within=Reals, bounds=(0,None), initialize=0) m.x914 = Var(within=Reals, bounds=(0,None), initialize=0) m.x915 = Var(within=Reals, bounds=(0,None), initialize=0) m.x916 = Var(within=Reals, bounds=(0,None), initialize=0) m.x917 = Var(within=Reals, bounds=(0,None), initialize=0) m.x918 = Var(within=Reals, bounds=(0,None), initialize=0) m.x919 = Var(within=Reals, bounds=(0,None), initialize=0) m.x920 = Var(within=Reals, bounds=(0,None), initialize=0) m.x921 = Var(within=Reals, bounds=(0,None), initialize=0) m.x922 = Var(within=Reals, bounds=(0,None), initialize=0) m.x923 = Var(within=Reals, bounds=(0,None), initialize=0) m.x924 = Var(within=Reals, bounds=(0,None), initialize=0) m.x925 = Var(within=Reals, bounds=(0,None), initialize=0) m.x926 = Var(within=Reals, bounds=(0,None), initialize=0) m.x927 = Var(within=Reals, bounds=(0,None), initialize=0) m.x928 = Var(within=Reals, bounds=(0,None), initialize=0) m.x929 = Var(within=Reals, bounds=(0,None), initialize=0) m.x930 = Var(within=Reals, bounds=(0,None), initialize=0) m.x931 = Var(within=Reals, bounds=(0,None), initialize=0) m.x932 = Var(within=Reals, bounds=(0,None), initialize=0) m.x933 = Var(within=Reals, bounds=(0,None), initialize=0) m.x934 = Var(within=Reals, bounds=(0,None), initialize=0) m.x935 = Var(within=Reals, bounds=(0,None), initialize=0) m.x936 = Var(within=Reals, bounds=(0,None), initialize=0) m.x937 = Var(within=Reals, bounds=(0,None), initialize=0) m.x938 = Var(within=Reals, bounds=(0,None), initialize=0) m.x939 = Var(within=Reals, bounds=(0,None), initialize=0) m.x940 = Var(within=Reals, bounds=(0,None), initialize=0) m.x941 = Var(within=Reals, bounds=(0,None), initialize=0) m.x942 = Var(within=Reals, bounds=(0,None), initialize=0) m.x943 = Var(within=Reals, bounds=(0,None), initialize=0) m.x944 = Var(within=Reals, bounds=(0,None), initialize=0) m.x945 = Var(within=Reals, bounds=(0,None), initialize=0) m.x946 = Var(within=Reals, bounds=(0,None), initialize=0) m.x947 = Var(within=Reals, bounds=(0,None), initialize=0) m.x948 = Var(within=Reals, bounds=(0,None), initialize=0) m.x949 = Var(within=Reals, bounds=(0,None), initialize=0) m.x950 = Var(within=Reals, bounds=(0,None), initialize=0) m.x951 = Var(within=Reals, bounds=(0,None), initialize=0) m.x952 = Var(within=Reals, bounds=(0,None), initialize=0) m.x953 = Var(within=Reals, bounds=(0,None), initialize=0) m.x954 = Var(within=Reals, bounds=(0,None), initialize=0) m.x955 = Var(within=Reals, bounds=(0,None), initialize=0) m.x956 = Var(within=Reals, bounds=(0,None), initialize=0) m.x957 = Var(within=Reals, bounds=(0,None), initialize=0) m.x958 = Var(within=Reals, bounds=(0,None), initialize=0) m.x959 = Var(within=Reals, bounds=(0,None), initialize=0) m.x960 = Var(within=Reals, bounds=(0,None), initialize=0) m.x961 = Var(within=Reals, bounds=(0,None), initialize=0) m.x962 = Var(within=Reals, bounds=(0,None), initialize=0) m.x963 = Var(within=Reals, bounds=(0,None), initialize=0) m.x964 = Var(within=Reals, bounds=(0,None), initialize=0) m.x965 = Var(within=Reals, bounds=(0,None), initialize=0) m.x966 = Var(within=Reals, bounds=(0,None), initialize=0) m.x967 = Var(within=Reals, bounds=(0,None), initialize=0) m.x968 = Var(within=Reals, bounds=(0,None), initialize=0) m.x969 = Var(within=Reals, bounds=(0,None), initialize=0) m.x970 = Var(within=Reals, bounds=(0,None), initialize=0) m.x971 = Var(within=Reals, bounds=(0,None), initialize=0) m.x972 = Var(within=Reals, bounds=(0,None), initialize=0) m.x973 = Var(within=Reals, bounds=(0,None), initialize=0) m.x974 = Var(within=Reals, bounds=(0,None), initialize=0) m.x975 = Var(within=Reals, bounds=(0,None), initialize=0) m.x976 = Var(within=Reals, bounds=(0,None), initialize=0) m.x977 = Var(within=Reals, bounds=(0,None), initialize=0) m.x978 = Var(within=Reals, bounds=(0,None), initialize=0) m.x979 = Var(within=Reals, bounds=(0,None), initialize=0) m.x980 = Var(within=Reals, bounds=(0,None), initialize=0) m.x981 = Var(within=Reals, bounds=(0,None), initialize=0) m.x982 = Var(within=Reals, bounds=(0,None), initialize=0) m.x983 = Var(within=Reals, bounds=(0,None), initialize=0) m.x984 = Var(within=Reals, bounds=(0,None), initialize=0) m.x985 = Var(within=Reals, bounds=(0,None), initialize=0) m.x986 = Var(within=Reals, bounds=(0,None), initialize=0) m.x987 = Var(within=Reals, bounds=(0,None), initialize=0) m.x988 = Var(within=Reals, bounds=(0,None), initialize=0) m.x989 = Var(within=Reals, bounds=(0,None), initialize=0) m.x990 = Var(within=Reals, bounds=(0,None), initialize=0) m.x991 = Var(within=Reals, bounds=(0,None), initialize=0) m.x992 = Var(within=Reals, bounds=(0,None), initialize=0) m.x993 = Var(within=Reals, bounds=(0,None), initialize=0) m.x994 = Var(within=Reals, bounds=(0,None), initialize=0) m.x995 = Var(within=Reals, bounds=(0,None), initialize=0) m.x996 = Var(within=Reals, bounds=(0,None), initialize=0) m.x997 = Var(within=Reals, bounds=(0,None), initialize=0) m.x998 = Var(within=Reals, bounds=(0,None), initialize=0) m.x999 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1000 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1001 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1002 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1003 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1004 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1005 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1006 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1007 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1008 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1009 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1010 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1011 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1012 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1013 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1014 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1015 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1016 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1017 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1018 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1019 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1020 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1021 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1022 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1023 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1024 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1025 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1026 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1027 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1028 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1029 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1030 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1031 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1032 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1033 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1034 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1035 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1036 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1037 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1038 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1039 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1040 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1041 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1042 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1043 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1044 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1045 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1046 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1047 = Var(within=Reals, bounds=(0,None), initialize=0) m.x1048 = Var(within=Reals, bounds=(0,None), initialize=0) m.b1049 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1050 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1051 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1052 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1053 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1054 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1055 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1056 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1057 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1058 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1059 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1060 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1061 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1062 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1063 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1064 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1065 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1066 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1067 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1068 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1069 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1070 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1071 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1072 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1073 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1074 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1075 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1076 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1077 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1078 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1079 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1080 = Var(within=Binary, bounds=(0,1), initialize=0) m.b1081 = Var(within=Binary, bounds=(0,1), initialize=0) m.b108

ZedongPeng commented 1 year ago

Hi Will. Unfortunately, the attached code in your last comment is incomplete. I tried your previous one and changed the MIP solver to cplex. Here is the output.

SolverFactory('mindtpy').solve(m, mip_solver='cplex',
    nlp_solver='gams',
    #nlp_solver_tee=True,
    nlp_solver_args=dict(solver='baron'),
    tee=True,
    )

Output

python syn40m04m_solve_linear.py                                                                                                                                                                                       4s Py base
Starting MindtPy version 0.1.0 using OA algorithm
iteration_limit: 50
stalling_limit: 15
time_limit: 600
strategy: OA
add_regularization: None
call_after_main_solve: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7fc7dab23450>
call_after_subproblem_solve: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7fc7dab23490>
call_after_subproblem_feasible: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7fc7dab234d0>
tee: true
logger: <Logger pyomo.contrib.mindtpy (INFO)>
logging_level: 20
integer_to_binary: false
add_no_good_cuts: false
use_tabu_list: false
single_tree: false
solution_pool: false
num_solution_iteration: 5
cycling_check: true
feasibility_norm: L_infinity
differentiate_mode: reverse_symbolic
use_mcpp: false
calculate_dual_at_solution: false
use_fbbt: false
use_dual_bound: true
partition_obj_nonlinear_terms: true
quadratic_strategy: 0
move_objective: false
add_cuts_at_incumbent: false
heuristic_nonconvex: false
init_strategy: rNLP
level_coef: 0.5
solution_limit: 10
reduce_level_coef: false
use_bb_tree_incumbent: false
sqp_lag_scaling_coef: fixed
fp_cutoffdecr: 0.1
fp_iteration_limit: 20
fp_projcuts: true
fp_transfercuts: true
fp_projzerotol: 0.0001
fp_mipgap: 0.01
fp_discrete_only: true
fp_main_norm: L1
fp_norm_constraint: true
fp_norm_constraint_coef: 1.0
add_slack: false
max_slack: 1000.0
OA_penalty_factor: 1000.0
equality_relaxation: false
linearize_inactive: false
nlp_solver: gams
nlp_solver_args:
  solver: baron
mip_solver: cplex
mip_solver_args:
mip_solver_mipgap: 0.0001
threads: 0
regularization_mip_threads: 0
solver_tee: false
mip_solver_tee: false
nlp_solver_tee: false
mip_regularization_solver: None
absolute_bound_tolerance: 0.0001
relative_bound_tolerance: 0.001
small_dual_tolerance: 1.0e-08
integer_tolerance: 1.0e-05
constraint_tolerance: 1.0e-06
variable_tolerance: 1.0e-08
zero_tolerance: 1.0e-08
obj_bound: 1000000000000000.0
continuous_var_bound: 10000000000.0
integer_var_bound: 1000000000.0
initial_bound_coef: 0.1

-----------------------------------------------------------------------------------------------
               Mixed-Integer Nonlinear Decomposition Toolbox in Pyomo (MindtPy)                
-----------------------------------------------------------------------------------------------
For more information, please visit 
https://pyomo.readthedocs.io/en/stable/contributed_packages/mindtpy.html
If you use this software, please cite the following:
Bernal, David E., et al. Mixed-integer nonlinear decomposition toolbox for Pyomo (MindtPy).
Computer Aided Chemical Engineering. Vol. 44. Elsevier, 2018. 895-900.

Original model has 2104 constraints (112 nonlinear) and 0 disjunctions, with 840 variables, of which 320 are binary, 0 are integer, and 520 are continuous.
rNLP is the initial strategy being used.

 ===============================================================================================
 Iteration | Subproblem Type | Objective Value | Primal Bound |   Dual Bound |   Gap   | Time(s)

relaxed NLP is not solved to optimality.
         -       Relaxed NLP           9168.63           -inf        9169.55      nan%      2.24
         1              MILP           1887.59           -inf        1887.59      nan%      2.51
*        1         Fixed NLP           777.973        777.973        1887.59   142.63%      3.24
         2              MILP           953.471        777.973        953.471    22.56%      3.46
*        2         Fixed NLP           901.109        901.109        953.471     5.81%      4.21
         3              MILP           903.068        901.109        903.068     0.22%      4.47
*        3         Fixed NLP           901.642        901.642        903.068     0.16%      5.14
         4              MILP           901.764        901.642        901.764     0.01%      5.69
MindtPy exiting on bound convergence. Relative gap : 0.0001352826792759511 <= relative tolerance: 0.001 

 ===============================================================================================
 Primal integral          :   372.9502 
 Dual integral            :   18848.2326 
 Primal-dual gap integral :   19221.1828 
strahl21 commented 1 year ago

Zedong, Yeah, reproducing is going to be a bit tricky because of solver versions. Using gams 42.4.0 - Baron as the NLP solver and Cplex v22.1.0 with your mindtpy parameters with 2 threads throws the error. It works fine with 1 thread. Try setting threads=2? I am completely unsure why changing the number of threads causes the error.

Regards, Will

On Mon, Jun 5, 2023 at 12:31 PM Zedong @.***> wrote:

Hi Will. Unfortunately, the attached code in your last comment is incomplete. I tried your previous one and changed the MIP solver to cplex. Here is the output.

SolverFactory('mindtpy').solve(m, mip_solver='cplex', nlp_solver='gams',

nlp_solver_tee=True,

nlp_solver_args=dict(solver='baron'),
tee=True,
)

Output

python syn40m04m_solve_linear.py 4s Py base Starting MindtPy version 0.1.0 using OA algorithm iteration_limit: 50 stalling_limit: 15 time_limit: 600 strategy: OA add_regularization: None call_after_main_solve: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7fc7dab23450> call_after_subproblem_solve: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7fc7dab23490> call_after_subproblem_feasible: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7fc7dab234d0> tee: true logger: <Logger pyomo.contrib.mindtpy (INFO)> logging_level: 20 integer_to_binary: false add_no_good_cuts: false use_tabu_list: false single_tree: false solution_pool: false num_solution_iteration: 5 cycling_check: true feasibility_norm: L_infinity differentiate_mode: reverse_symbolic use_mcpp: false calculate_dual_at_solution: false use_fbbt: false use_dual_bound: true partition_obj_nonlinear_terms: true quadratic_strategy: 0 move_objective: false add_cuts_at_incumbent: false heuristic_nonconvex: false init_strategy: rNLP level_coef: 0.5 solution_limit: 10 reduce_level_coef: false use_bb_tree_incumbent: false sqp_lag_scaling_coef: fixed fp_cutoffdecr: 0.1 fp_iteration_limit: 20 fp_projcuts: true fp_transfercuts: true fp_projzerotol: 0.0001 fp_mipgap: 0.01 fp_discrete_only: true fp_main_norm: L1 fp_norm_constraint: true fp_norm_constraint_coef: 1.0 add_slack: false max_slack: 1000.0 OA_penalty_factor: 1000.0 equality_relaxation: false linearize_inactive: false nlp_solver: gams nlp_solver_args: solver: baron mip_solver: cplex mip_solver_args: mip_solver_mipgap: 0.0001 threads: 0 regularization_mip_threads: 0 solver_tee: false mip_solver_tee: false nlp_solver_tee: false mip_regularization_solver: None absolute_bound_tolerance: 0.0001 relative_bound_tolerance: 0.001 small_dual_tolerance: 1.0e-08 integer_tolerance: 1.0e-05 constraint_tolerance: 1.0e-06 variable_tolerance: 1.0e-08 zero_tolerance: 1.0e-08 obj_bound: 1000000000000000.0 continuous_var_bound: 10000000000.0 integer_var_bound: 1000000000.0 initial_bound_coef: 0.1


           Mixed-Integer Nonlinear Decomposition Toolbox in Pyomo (MindtPy)

For more information, please visit https://pyomo.readthedocs.io/en/stable/contributed_packages/mindtpy.html If you use this software, please cite the following: Bernal, David E., et al. Mixed-integer nonlinear decomposition toolbox for Pyomo (MindtPy). Computer Aided Chemical Engineering. Vol. 44. Elsevier, 2018. 895-900.

Original model has 2104 constraints (112 nonlinear) and 0 disjunctions, with 840 variables, of which 320 are binary, 0 are integer, and 520 are continuous. rNLP is the initial strategy being used.

=============================================================================================== Iteration | Subproblem Type | Objective Value | Primal Bound | Dual Bound | Gap | Time(s)

relaxed NLP is not solved to optimality.

  • Relaxed NLP 9168.63 -inf 9169.55 nan% 2.24 1 MILP 1887.59 -inf 1887.59 nan% 2.51

    • 1 Fixed NLP 777.973 777.973 1887.59 142.63% 3.24 2 MILP 953.471 777.973 953.471 22.56% 3.46
    • 2 Fixed NLP 901.109 901.109 953.471 5.81% 4.21 3 MILP 903.068 901.109 903.068 0.22% 4.47
    • 3 Fixed NLP 901.642 901.642 903.068 0.16% 5.14 4 MILP 901.764 901.642 901.764 0.01% 5.69 MindtPy exiting on bound convergence. Relative gap : 0.0001352826792759511 <= relative tolerance: 0.001

    =============================================================================================== Primal integral : 372.9502 Dual integral : 18848.2326 Primal-dual gap integral : 19221.1828

— Reply to this email directly, view it on GitHub https://github.com/Pyomo/pyomo/issues/2864#issuecomment-1577115118, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIOSMCKBI35OAGBBBEBYRLTXJYCULANCNFSM6AAAAAAYW6F4MM . You are receiving this because you were mentioned.Message ID: @.***>

strahl21 commented 1 year ago

Here is the output that I get: Starting MindtPy version 0.1.0 using OA algorithm iteration_limit: 50 stalling_limit: 15 time_limit: 600 strategy: OA add_regularization: None call_after_main_solve: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7f2e0f8c25e0> call_after_subproblem_solve: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7f2e0f8c2610> call_after_subproblem_feasible: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7f2e0f8c2640> tee: true logger: <Logger pyomo.contrib.mindtpy (INFO)> logging_level: 20 integer_to_binary: false add_no_good_cuts: false use_tabu_list: false single_tree: false solution_pool: false num_solution_iteration: 5 cycling_check: true feasibility_norm: L_infinity differentiate_mode: reverse_symbolic use_mcpp: false calculate_dual_at_solution: false use_fbbt: false use_dual_bound: true partition_obj_nonlinear_terms: true quadratic_strategy: 0 move_objective: false add_cuts_at_incumbent: false heuristic_nonconvex: false init_strategy: rNLP level_coef: 0.5 solution_limit: 10 reduce_level_coef: false use_bb_tree_incumbent: false sqp_lag_scaling_coef: fixed fp_cutoffdecr: 0.1 fp_iteration_limit: 20 fp_projcuts: true fp_transfercuts: true fp_projzerotol: 0.0001 fp_mipgap: 0.01 fp_discrete_only: true fp_main_norm: L1 fp_norm_constraint: true fp_norm_constraint_coef: 1.0 add_slack: false max_slack: 1000.0 OA_penalty_factor: 1000.0 equality_relaxation: false linearize_inactive: false nlp_solver: gams nlp_solver_args: solver: baron mip_solver: cplex mip_solver_args: mip_solver_mipgap: 0.0001 threads: 2 regularization_mip_threads: 0 solver_tee: false mip_solver_tee: false nlp_solver_tee: false mip_regularization_solver: None absolute_bound_tolerance: 0.0001 relative_bound_tolerance: 0.001 small_dual_tolerance: 1e-08 integer_tolerance: 1e-05 constraint_tolerance: 1e-06 variable_tolerance: 1e-08 zero_tolerance: 1e-08 obj_bound: 1000000000000000.0 continuous_var_bound: 10000000000.0 integer_var_bound: 1000000000.0 initial_bound_coef: 0.1


           Mixed-Integer Nonlinear Decomposition Toolbox in Pyomo

(MindtPy)

For more information, please visit https://pyomo.readthedocs.io/en/stable/contributed_packages/mindtpy.html If you use this software, please cite the following: Bernal, David E., et al. Mixed-integer nonlinear decomposition toolbox for Pyomo (MindtPy). Computer Aided Chemical Engineering. Vol. 44. Elsevier, 2018. 895-900.

Original model has 2904 constraints (112 nonlinear) and 0 disjunctions, with 1528 variables, of which 320 are binary, 0 are integer, and 1208 are continuous. rNLP is the initial strategy being used.

=============================================================================================== Iteration | Subproblem Type | Objective Value | Primal Bound | Dual Bound | Gap | Time(s)

relaxed NLP is not solved to optimality.

On Mon, Jun 5, 2023 at 1:04 PM William S @.***> wrote:

Zedong, Yeah, reproducing is going to be a bit tricky because of solver versions. Using gams 42.4.0 - Baron as the NLP solver and Cplex v22.1.0 with your mindtpy parameters with 2 threads throws the error. It works fine with 1 thread. Try setting threads=2? I am completely unsure why changing the number of threads causes the error.

Regards, Will

On Mon, Jun 5, 2023 at 12:31 PM Zedong @.***> wrote:

Hi Will. Unfortunately, the attached code in your last comment is incomplete. I tried your previous one and changed the MIP solver to cplex. Here is the output.

SolverFactory('mindtpy').solve(m, mip_solver='cplex', nlp_solver='gams',

nlp_solver_tee=True,

nlp_solver_args=dict(solver='baron'),
tee=True,
)

Output

python syn40m04m_solve_linear.py 4s Py base Starting MindtPy version 0.1.0 using OA algorithm iteration_limit: 50 stalling_limit: 15 time_limit: 600 strategy: OA add_regularization: None call_after_main_solve: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7fc7dab23450> call_after_subproblem_solve: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7fc7dab23490> call_after_subproblem_feasible: <pyomo.contrib.gdpopt.util._DoNothing object at 0x7fc7dab234d0> tee: true logger: <Logger pyomo.contrib.mindtpy (INFO)> logging_level: 20 integer_to_binary: false add_no_good_cuts: false use_tabu_list: false single_tree: false solution_pool: false num_solution_iteration: 5 cycling_check: true feasibility_norm: L_infinity differentiate_mode: reverse_symbolic use_mcpp: false calculate_dual_at_solution: false use_fbbt: false use_dual_bound: true partition_obj_nonlinear_terms: true quadratic_strategy: 0 move_objective: false add_cuts_at_incumbent: false heuristic_nonconvex: false init_strategy: rNLP level_coef: 0.5 solution_limit: 10 reduce_level_coef: false use_bb_tree_incumbent: false sqp_lag_scaling_coef: fixed fp_cutoffdecr: 0.1 fp_iteration_limit: 20 fp_projcuts: true fp_transfercuts: true fp_projzerotol: 0.0001 fp_mipgap: 0.01 fp_discrete_only: true fp_main_norm: L1 fp_norm_constraint: true fp_norm_constraint_coef: 1.0 add_slack: false max_slack: 1000.0 OA_penalty_factor: 1000.0 equality_relaxation: false linearize_inactive: false nlp_solver: gams nlp_solver_args: solver: baron mip_solver: cplex mip_solver_args: mip_solver_mipgap: 0.0001 threads: 0 regularization_mip_threads: 0 solver_tee: false mip_solver_tee: false nlp_solver_tee: false mip_regularization_solver: None absolute_bound_tolerance: 0.0001 relative_bound_tolerance: 0.001 small_dual_tolerance: 1.0e-08 integer_tolerance: 1.0e-05 constraint_tolerance: 1.0e-06 variable_tolerance: 1.0e-08 zero_tolerance: 1.0e-08 obj_bound: 1000000000000000.0 continuous_var_bound: 10000000000.0 integer_var_bound: 1000000000.0 initial_bound_coef: 0.1


           Mixed-Integer Nonlinear Decomposition Toolbox in Pyomo (MindtPy)

For more information, please visit https://pyomo.readthedocs.io/en/stable/contributed_packages/mindtpy.html If you use this software, please cite the following: Bernal, David E., et al. Mixed-integer nonlinear decomposition toolbox for Pyomo (MindtPy). Computer Aided Chemical Engineering. Vol. 44. Elsevier, 2018. 895-900.

Original model has 2104 constraints (112 nonlinear) and 0 disjunctions, with 840 variables, of which 320 are binary, 0 are integer, and 520 are continuous. rNLP is the initial strategy being used.

=============================================================================================== Iteration | Subproblem Type | Objective Value | Primal Bound | Dual Bound | Gap | Time(s)

relaxed NLP is not solved to optimality.

  • Relaxed NLP 9168.63 -inf 9169.55 nan% 2.24 1 MILP 1887.59 -inf 1887.59 nan% 2.51

    • 1 Fixed NLP 777.973 777.973 1887.59 142.63% 3.24 2 MILP 953.471 777.973 953.471 22.56% 3.46
    • 2 Fixed NLP 901.109 901.109 953.471 5.81% 4.21 3 MILP 903.068 901.109 903.068 0.22% 4.47
    • 3 Fixed NLP 901.642 901.642 903.068 0.16% 5.14 4 MILP 901.764 901.642 901.764 0.01% 5.69 MindtPy exiting on bound convergence. Relative gap : 0.0001352826792759511 <= relative tolerance: 0.001

    =============================================================================================== Primal integral : 372.9502 Dual integral : 18848.2326 Primal-dual gap integral : 19221.1828

— Reply to this email directly, view it on GitHub https://github.com/Pyomo/pyomo/issues/2864#issuecomment-1577115118, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIOSMCKBI35OAGBBBEBYRLTXJYCULANCNFSM6AAAAAAYW6F4MM . You are receiving this because you were mentioned.Message ID: @.***>

ZedongPeng commented 1 year ago

Hi Will. I still cannot reproduce the error by setting threads=2.

Could you try the following example to test if deactivate_trivial_constraints works well in your computational environment?

from pyomo.environ import *
from pyomo.contrib.mindtpy.tests.MINLP_simple import SimpleMINLP

m = SimpleMINLP()
TransformationFactory('core.relax_integer_vars').apply_to(m)
m.pprint()
m.constraint8 = Constraint(expr= 0 <= -1e-5 + m.Y[1])
m.Y[1].fix(0)
TransformationFactory('contrib.deactivate_trivial_constraints').apply_to(m,ignore_infeasible=False,tolerance=1e-4)
m.pprint()
opt = SolverFactory('ipopt')
result = opt.solve(m,tee=True)

Since we fix m.Y[1] to zero, constraint8 is infeasible. However, contrib.deactivate_trivial_constraints will deactivate this constraint when proper tolerance is set. Output

constraint8 : Size=1, Index=None, Active=True
    Key  : Lower : Body          : Upper : Active
    None :   0.0 : -1e-05 + Y[1] :  +Inf :   True
constraint8 : Size=1, Index=None, Active=False
    Key  : Lower : Body          : Upper : Active
    None :   0.0 : -1e-05 + Y[1] :  +Inf :  False
Ipopt 3.13.3: 

******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit https://github.com/coin-or/Ipopt
******************************************************************************

This is Ipopt version 3.13.3, running with linear solver mumps.
NOTE: Other linear solvers might be more efficient (see Ipopt documentation).

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:       14
Number of nonzeros in Lagrangian Hessian.............:        2

Total number of variables............................:        4
                     variables with only lower bounds:        0
                variables with lower and upper bounds:        4
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        7
        inequality constraints with only lower bounds:        4
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        3

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  1.9802000e+00 3.95e+00 1.38e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  1.9632289e+00 3.77e+00 2.69e+00  -1.0 7.95e-01    -  1.40e-02 4.84e-02h  1
   2  1.7857905e+00 1.02e+00 3.35e+02  -1.0 1.89e+00    -  1.11e-02 8.08e-01f  1
   3  2.4634345e+00 4.34e-01 2.48e+02  -1.0 1.01e+01   0.0 6.20e-03 7.07e-02h  3
   4  3.8830144e+00 0.00e+00 8.47e+01  -1.0 4.96e-01   2.2 1.37e-01 1.00e+00h  1
   5  3.9660112e+00 0.00e+00 2.53e+00  -1.0 2.17e-01    -  9.74e-01 1.00e+00h  1
   6  2.6200637e+00 2.27e-01 4.00e-01  -1.0 8.20e-01    -  1.00e+00 7.71e-01f  1
   7  2.6012172e+00 2.08e-01 3.00e-01  -1.7 3.59e-01    -  1.00e+00 4.77e-01h  1
   8  2.7704290e+00 0.00e+00 1.10e-01  -1.7 1.70e-01    -  1.00e+00 1.00e+00h  1
   9  2.7279484e+00 5.12e-04 3.06e-03  -2.5 1.48e-01    -  1.00e+00 9.79e-01h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10  2.7204462e+00 0.00e+00 8.00e-05  -3.8 3.92e-02    -  1.00e+00 1.00e+00h  1
  11  2.7200514e+00 0.00e+00 1.77e-07  -5.7 1.00e-03    -  1.00e+00 1.00e+00h  1
  12  2.7200460e+00 0.00e+00 1.20e-11  -8.6 1.14e-05    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 12

                                   (scaled)                 (unscaled)
Objective...............:   2.7200460176099206e+00    2.7200460176099206e+00
Dual infeasibility......:   1.1977778401079966e-11    1.1977778401079966e-11
Constraint violation....:   0.0000000000000000e+00    0.0000000000000000e+00
Complementarity.........:   2.5202438248233580e-09    2.5202438248233580e-09
Overall NLP error.......:   2.5202438248233580e-09    2.5202438248233580e-09

Number of objective function evaluations             = 17
Number of objective gradient evaluations             = 13
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 17
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 13
Number of Lagrangian Hessian evaluations             = 12
Total CPU secs in IPOPT (w/o function evaluations)   =      0.005
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.

If we comment the contrib.deactivate_trivial_constraints line, the output will become the following.

from pyomo.environ import *
from pyomo.contrib.mindtpy.tests.MINLP_simple import SimpleMINLP

m = SimpleMINLP()
TransformationFactory('core.relax_integer_vars').apply_to(m)

m.constraint8 = Constraint(expr= 0 <= -1e-5 + m.Y[1])
m.constraint8.pprint()
m.Y[1].fix(0)
# TransformationFactory('contrib.deactivate_trivial_constraints').apply_to(m,ignore_infeasible=False,tolerance=1e-4)
m.constraint8.pprint()
opt = SolverFactory('ipopt')
result = opt.solve(m,tee=True)

Output

constraint8 : Size=1, Index=None, Active=True
    Key  : Lower : Body          : Upper : Active
    None :   0.0 : -1e-05 + Y[1] :  +Inf :   True
constraint8 : Size=1, Index=None, Active=True
    Key  : Lower : Body          : Upper : Active
    None :   0.0 : -1e-05 + Y[1] :  +Inf :   True
Ipopt 3.13.3: 

******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit https://github.com/coin-or/Ipopt
******************************************************************************

This is Ipopt version 3.13.3, running with linear solver mumps.
NOTE: Other linear solvers might be more efficient (see Ipopt documentation).

Number of nonzeros in equality constraint Jacobian...:        0
Number of nonzeros in inequality constraint Jacobian.:       14
Number of nonzeros in Lagrangian Hessian.............:        2

Total number of variables............................:        4
                     variables with only lower bounds:        0
                variables with lower and upper bounds:        4
                     variables with only upper bounds:        0
Total number of equality constraints.................:        0
Total number of inequality constraints...............:        8
        inequality constraints with only lower bounds:        5
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        3

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  1.9802000e+00 3.95e+00 1.38e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  1.9632289e+00 3.77e+00 2.69e+00  -1.0 7.95e-01    -  1.40e-02 4.84e-02h  1
   2  1.7857905e+00 1.02e+00 3.35e+02  -1.0 1.89e+00    -  1.11e-02 8.08e-01f  1
   3  2.4634345e+00 4.34e-01 2.48e+02  -1.0 1.01e+01   0.0 6.20e-03 7.07e-02h  3
   4  3.8565866e+00 9.99e-06 8.20e+01  -1.0 4.96e-01   2.2 1.37e-01 9.84e-01h  1
   5  3.9088309e+00 9.99e-06 2.05e+03  -1.0 2.21e-01    -  9.72e-01 6.22e-01h  1
   6  3.9079458e+00 9.99e-06 9.18e+05  -1.0 9.23e-02    -  1.00e+00 1.65e-02h  1
   7  3.9079361e+00 9.99e-06 5.59e+09  -1.0 8.24e-02    -  1.00e+00 1.68e-04h  1
   8  3.8534824e+00 9.99e-06 5.49e+07  -1.0 8.29e-02    -  9.90e-01 1.00e+00h  1
   9r 3.8534824e+00 9.99e-06 1.00e+03  -1.0 0.00e+00    -  0.00e+00 4.31e-07R  4
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10r 3.9273130e+00 9.99e-06 5.69e+02  -1.0 4.14e-01    -  8.69e-01 6.68e-02f  1
  11  3.7356715e+00 9.99e-06 1.04e+04  -1.0 3.66e-01    -  8.91e-01 1.98e-01f  2
  12  3.6034221e+00 9.99e-06 6.96e+04  -1.0 4.35e-01    -  1.00e+00 1.25e-01f  2
  13  3.5719715e+00 9.99e-06 5.90e+05  -1.0 3.74e-01    -  1.00e+00 3.61e-02h  3
  14  3.5262131e+00 9.99e-06 5.22e+06  -1.0 3.56e-01    -  1.00e+00 5.63e-02h  2
  15  3.4825606e+00 9.99e-06 8.58e+07  -1.0 3.26e-01    -  1.00e+00 6.03e-02h  1
  16  3.4821420e+00 9.99e-06 1.42e+11  -1.0 3.00e-01    -  1.00e+00 6.41e-04h  1
  17  2.9874894e+00 9.99e-06 1.32e+09  -1.0 3.01e-01    -  9.91e-01 1.00e+00F  1
  18r 2.9874894e+00 9.99e-06 1.00e+03  -1.0 0.00e+00    -  0.00e+00 4.05e-07R  5
  19r 3.0164694e+00 9.99e-06 6.62e+02  -1.0 1.84e-01    -  6.50e-01 7.85e-02f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  20  3.0194924e+00 9.99e-06 7.19e+03  -1.0 1.49e-02    -  1.00e+00 4.36e-01h  1
  21  3.0195702e+00 9.99e-06 2.88e+06  -1.0 1.61e-02    -  1.00e+00 7.72e-03h  1
  22  3.0195709e+00 9.99e-06 3.71e+10  -1.0 1.59e-02    -  1.00e+00 7.78e-05h  1
  23  3.0304101e+00 9.99e-06 3.68e+08  -1.0 1.59e-02    -  9.90e-01 1.00e+00F  1
  24r 3.0304101e+00 9.99e-06 1.00e+03  -1.0 0.00e+00    -  0.00e+00 2.61e-07R  3
  25r 3.4287308e+00 9.99e-06 1.72e+02  -1.0 2.05e-01    -  6.53e-01 1.00e+00f  1
  26r 5.9773279e+00 9.99e-06 1.41e+02  -1.0 1.23e+00    -  4.52e-01 1.00e+00f  1
  27r 7.2307364e+00 9.99e-06 6.07e-02  -1.0 5.02e-01    -  1.00e+00 1.00e+00h  1
  28r 5.0618845e+00 9.99e-06 1.72e+00  -3.8 6.45e-01    -  8.26e-01 9.83e-01f  1
  29r 5.0007908e+00 9.99e-06 3.29e+01  -3.8 7.05e-02    -  1.00e+00 9.09e-01h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30r 4.0978263e+00 9.99e-06 8.32e-04  -3.8 3.23e-01    -  1.00e+00 1.00e+00f  1
  31r 3.6864504e+00 9.99e-06 7.17e-05  -3.8 1.94e-01    -  1.00e+00 1.00e+00h  1
  32r 3.6254222e+00 9.99e-06 3.08e-06  -3.8 4.30e-02    -  1.00e+00 1.00e+00h  1
  33r 3.2468478e+00 9.99e-06 5.34e-01  -5.7 1.91e-01    -  9.60e-01 9.98e-01h  1
  34r 3.2242018e+00 9.99e-06 1.56e-06  -5.7 2.52e-02    -  1.00e+00 1.00e+00h  1
  35r 3.1567018e+00 9.99e-06 2.50e-07  -5.7 4.60e-02    -  1.00e+00 1.00e+00h  1
  36r 3.1489363e+00 9.99e-06 3.98e-09  -5.7 4.59e-03    -  1.00e+00 1.00e+00h  1
  37r 3.0537302e+00 9.99e-06 4.62e-03  -8.6 5.15e-02    -  9.75e-01 1.00e+00h  1

Number of Iterations....: 37

                                   (scaled)                 (unscaled)
Objective...............:   3.0481612472924464e+00    3.0481612472924464e+00
Dual infeasibility......:   2.3581791412251070e+00    2.3581791412251070e+00
Constraint violation....:   9.9900000000000009e-06    9.9900000000000009e-06
Complementarity.........:   1.0681494261619128e-08    1.0681494261619128e-08
Overall NLP error.......:   2.3581791412251070e+00    2.3581791412251070e+00

Number of objective function evaluations             = 71
Number of objective gradient evaluations             = 26
Number of equality constraint evaluations            = 0
Number of inequality constraint evaluations          = 71
Number of equality constraint Jacobian evaluations   = 0
Number of inequality constraint Jacobian evaluations = 42
Number of Lagrangian Hessian evaluations             = 38
Total CPU secs in IPOPT (w/o function evaluations)   =      0.021
Total CPU secs in NLP function evaluations           =      0.001

EXIT: Converged to a point of local infeasibility. Problem may be infeasible.
WARNING: Loading a SolverResults object with a warning status into
    model.name="SimpleMINLP";
      - termination condition: infeasible
      - message from solver: Ipopt 3.13.3\x3a Converged to a locally
        infeasible point. Problem may be infeasible.

If contrib.deactivate_trivial_constraints works well and the feasibility subproblem is infeasible due to the constraint tolerance, you can resolve it by setting a proper contraint_tolerance as I previously recommended. Otherwise, the feasibility subproblem is infeasible due to other reasons. We need to dig deeper.

strahl21 commented 1 year ago

Zedong,

I ran the simple example you sent me and the "contrib.deactivate_trivial_constraints" works as intended. I set the constraint_tolerance parameter (even to 1e-2...) and I still get the error, so it must be due to something else.

The odd thing to me is that in the example that I sent you, if I solve the problem with "threads=1", then there is no issue, but any value for threads greater than 1, and the error message arises. However, using gurobi and baron, there is an instance that gives the error regardless of the number of threads being used.

It is also interesting that the issue is solver dependent, i.e., one problem using gurobi/baron will fail, whereas using cplex/baron passes.

On Tue, Jun 6, 2023 at 10:30 AM Zedong @.***> wrote:

Hi Will. I still cannot reproduce the error by setting threads=2.

Could you try the following example to test if deactivate_trivial_constraints works well in your computational environment?

from pyomo.environ import * from pyomo.contrib.mindtpy.tests.MINLP_simple import SimpleMINLP

m = SimpleMINLP() TransformationFactory('core.relax_integer_vars').apply_to(m) m.pprint() m.constraint8 = Constraint(expr= 0 <= -1e-5 + m.Y[1]) m.Y[1].fix(0) TransformationFactory('contrib.deactivate_trivial_constraints').apply_to(m,ignore_infeasible=False,tolerance=1e-4) m.pprint() opt = SolverFactory('ipopt') result = opt.solve(m,tee=True)

Since we fix m.Y[1] to zero, constraint8 is infeasible. However, contrib.deactivate_trivial_constraints will deactivate this constraint when proper tolerance is set. Output

constraint8 : Size=1, Index=None, Active=True Key : Lower : Body : Upper : Active None : 0.0 : -1e-05 + Y[1] : +Inf : True constraint8 : Size=1, Index=None, Active=False Key : Lower : Body : Upper : Active None : 0.0 : -1e-05 + Y[1] : +Inf : False Ipopt 3.13.3:


This program contains Ipopt, a library for large-scale nonlinear optimization. Ipopt is released as open source code under the Eclipse Public License (EPL). For more information visit https://github.com/coin-or/Ipopt


This is Ipopt version 3.13.3, running with linear solver mumps. NOTE: Other linear solvers might be more efficient (see Ipopt documentation).

Number of nonzeros in equality constraint Jacobian...: 0 Number of nonzeros in inequality constraint Jacobian.: 14 Number of nonzeros in Lagrangian Hessian.............: 2

Total number of variables............................: 4 variables with only lower bounds: 0 variables with lower and upper bounds: 4 variables with only upper bounds: 0 Total number of equality constraints.................: 0 Total number of inequality constraints...............: 7 inequality constraints with only lower bounds: 4 inequality constraints with lower and upper bounds: 0 inequality constraints with only upper bounds: 3

iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls 0 1.9802000e+00 3.95e+00 1.38e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0 1 1.9632289e+00 3.77e+00 2.69e+00 -1.0 7.95e-01 - 1.40e-02 4.84e-02h 1 2 1.7857905e+00 1.02e+00 3.35e+02 -1.0 1.89e+00 - 1.11e-02 8.08e-01f 1 3 2.4634345e+00 4.34e-01 2.48e+02 -1.0 1.01e+01 0.0 6.20e-03 7.07e-02h 3 4 3.8830144e+00 0.00e+00 8.47e+01 -1.0 4.96e-01 2.2 1.37e-01 1.00e+00h 1 5 3.9660112e+00 0.00e+00 2.53e+00 -1.0 2.17e-01 - 9.74e-01 1.00e+00h 1 6 2.6200637e+00 2.27e-01 4.00e-01 -1.0 8.20e-01 - 1.00e+00 7.71e-01f 1 7 2.6012172e+00 2.08e-01 3.00e-01 -1.7 3.59e-01 - 1.00e+00 4.77e-01h 1 8 2.7704290e+00 0.00e+00 1.10e-01 -1.7 1.70e-01 - 1.00e+00 1.00e+00h 1 9 2.7279484e+00 5.12e-04 3.06e-03 -2.5 1.48e-01 - 1.00e+00 9.79e-01h 1 iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls 10 2.7204462e+00 0.00e+00 8.00e-05 -3.8 3.92e-02 - 1.00e+00 1.00e+00h 1 11 2.7200514e+00 0.00e+00 1.77e-07 -5.7 1.00e-03 - 1.00e+00 1.00e+00h 1 12 2.7200460e+00 0.00e+00 1.20e-11 -8.6 1.14e-05 - 1.00e+00 1.00e+00h 1

Number of Iterations....: 12

                               (scaled)                 (unscaled)

Objective...............: 2.7200460176099206e+00 2.7200460176099206e+00 Dual infeasibility......: 1.1977778401079966e-11 1.1977778401079966e-11 Constraint violation....: 0.0000000000000000e+00 0.0000000000000000e+00 Complementarity.........: 2.5202438248233580e-09 2.5202438248233580e-09 Overall NLP error.......: 2.5202438248233580e-09 2.5202438248233580e-09

Number of objective function evaluations = 17 Number of objective gradient evaluations = 13 Number of equality constraint evaluations = 0 Number of inequality constraint evaluations = 17 Number of equality constraint Jacobian evaluations = 0 Number of inequality constraint Jacobian evaluations = 13 Number of Lagrangian Hessian evaluations = 12 Total CPU secs in IPOPT (w/o function evaluations) = 0.005 Total CPU secs in NLP function evaluations = 0.000

EXIT: Optimal Solution Found.

If we comment the contrib.deactivate_trivial_constraints line, the output will become the following.

from pyomo.environ import * from pyomo.contrib.mindtpy.tests.MINLP_simple import SimpleMINLP

m = SimpleMINLP() TransformationFactory('core.relax_integer_vars').apply_to(m)

m.constraint8 = Constraint(expr= 0 <= -1e-5 + m.Y[1]) m.constraint8.pprint() m.Y[1].fix(0)

TransformationFactory('contrib.deactivate_trivial_constraints').apply_to(m,ignore_infeasible=False,tolerance=1e-4)

m.constraint8.pprint() opt = SolverFactory('ipopt') result = opt.solve(m,tee=True)

Output

constraint8 : Size=1, Index=None, Active=True Key : Lower : Body : Upper : Active None : 0.0 : -1e-05 + Y[1] : +Inf : True constraint8 : Size=1, Index=None, Active=True Key : Lower : Body : Upper : Active None : 0.0 : -1e-05 + Y[1] : +Inf : True Ipopt 3.13.3:


This program contains Ipopt, a library for large-scale nonlinear optimization. Ipopt is released as open source code under the Eclipse Public License (EPL). For more information visit https://github.com/coin-or/Ipopt


This is Ipopt version 3.13.3, running with linear solver mumps. NOTE: Other linear solvers might be more efficient (see Ipopt documentation).

Number of nonzeros in equality constraint Jacobian...: 0 Number of nonzeros in inequality constraint Jacobian.: 14 Number of nonzeros in Lagrangian Hessian.............: 2

Total number of variables............................: 4 variables with only lower bounds: 0 variables with lower and upper bounds: 4 variables with only upper bounds: 0 Total number of equality constraints.................: 0 Total number of inequality constraints...............: 8 inequality constraints with only lower bounds: 5 inequality constraints with lower and upper bounds: 0 inequality constraints with only upper bounds: 3

iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls 0 1.9802000e+00 3.95e+00 1.38e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0 1 1.9632289e+00 3.77e+00 2.69e+00 -1.0 7.95e-01 - 1.40e-02 4.84e-02h 1 2 1.7857905e+00 1.02e+00 3.35e+02 -1.0 1.89e+00 - 1.11e-02 8.08e-01f 1 3 2.4634345e+00 4.34e-01 2.48e+02 -1.0 1.01e+01 0.0 6.20e-03 7.07e-02h 3 4 3.8565866e+00 9.99e-06 8.20e+01 -1.0 4.96e-01 2.2 1.37e-01 9.84e-01h 1 5 3.9088309e+00 9.99e-06 2.05e+03 -1.0 2.21e-01 - 9.72e-01 6.22e-01h 1 6 3.9079458e+00 9.99e-06 9.18e+05 -1.0 9.23e-02 - 1.00e+00 1.65e-02h 1 7 3.9079361e+00 9.99e-06 5.59e+09 -1.0 8.24e-02 - 1.00e+00 1.68e-04h 1 8 3.8534824e+00 9.99e-06 5.49e+07 -1.0 8.29e-02 - 9.90e-01 1.00e+00h 1 9r 3.8534824e+00 9.99e-06 1.00e+03 -1.0 0.00e+00 - 0.00e+00 4.31e-07R 4 iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls 10r 3.9273130e+00 9.99e-06 5.69e+02 -1.0 4.14e-01 - 8.69e-01 6.68e-02f 1 11 3.7356715e+00 9.99e-06 1.04e+04 -1.0 3.66e-01 - 8.91e-01 1.98e-01f 2 12 3.6034221e+00 9.99e-06 6.96e+04 -1.0 4.35e-01 - 1.00e+00 1.25e-01f 2 13 3.5719715e+00 9.99e-06 5.90e+05 -1.0 3.74e-01 - 1.00e+00 3.61e-02h 3 14 3.5262131e+00 9.99e-06 5.22e+06 -1.0 3.56e-01 - 1.00e+00 5.63e-02h 2 15 3.4825606e+00 9.99e-06 8.58e+07 -1.0 3.26e-01 - 1.00e+00 6.03e-02h 1 16 3.4821420e+00 9.99e-06 1.42e+11 -1.0 3.00e-01 - 1.00e+00 6.41e-04h 1 17 2.9874894e+00 9.99e-06 1.32e+09 -1.0 3.01e-01 - 9.91e-01 1.00e+00F 1 18r 2.9874894e+00 9.99e-06 1.00e+03 -1.0 0.00e+00 - 0.00e+00 4.05e-07R 5 19r 3.0164694e+00 9.99e-06 6.62e+02 -1.0 1.84e-01 - 6.50e-01 7.85e-02f 1 iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls 20 3.0194924e+00 9.99e-06 7.19e+03 -1.0 1.49e-02 - 1.00e+00 4.36e-01h 1 21 3.0195702e+00 9.99e-06 2.88e+06 -1.0 1.61e-02 - 1.00e+00 7.72e-03h 1 22 3.0195709e+00 9.99e-06 3.71e+10 -1.0 1.59e-02 - 1.00e+00 7.78e-05h 1 23 3.0304101e+00 9.99e-06 3.68e+08 -1.0 1.59e-02 - 9.90e-01 1.00e+00F 1 24r 3.0304101e+00 9.99e-06 1.00e+03 -1.0 0.00e+00 - 0.00e+00 2.61e-07R 3 25r 3.4287308e+00 9.99e-06 1.72e+02 -1.0 2.05e-01 - 6.53e-01 1.00e+00f 1 26r 5.9773279e+00 9.99e-06 1.41e+02 -1.0 1.23e+00 - 4.52e-01 1.00e+00f 1 27r 7.2307364e+00 9.99e-06 6.07e-02 -1.0 5.02e-01 - 1.00e+00 1.00e+00h 1 28r 5.0618845e+00 9.99e-06 1.72e+00 -3.8 6.45e-01 - 8.26e-01 9.83e-01f 1 29r 5.0007908e+00 9.99e-06 3.29e+01 -3.8 7.05e-02 - 1.00e+00 9.09e-01h 1 iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls 30r 4.0978263e+00 9.99e-06 8.32e-04 -3.8 3.23e-01 - 1.00e+00 1.00e+00f 1 31r 3.6864504e+00 9.99e-06 7.17e-05 -3.8 1.94e-01 - 1.00e+00 1.00e+00h 1 32r 3.6254222e+00 9.99e-06 3.08e-06 -3.8 4.30e-02 - 1.00e+00 1.00e+00h 1 33r 3.2468478e+00 9.99e-06 5.34e-01 -5.7 1.91e-01 - 9.60e-01 9.98e-01h 1 34r 3.2242018e+00 9.99e-06 1.56e-06 -5.7 2.52e-02 - 1.00e+00 1.00e+00h 1 35r 3.1567018e+00 9.99e-06 2.50e-07 -5.7 4.60e-02 - 1.00e+00 1.00e+00h 1 36r 3.1489363e+00 9.99e-06 3.98e-09 -5.7 4.59e-03 - 1.00e+00 1.00e+00h 1 37r 3.0537302e+00 9.99e-06 4.62e-03 -8.6 5.15e-02 - 9.75e-01 1.00e+00h 1

Number of Iterations....: 37

                               (scaled)                 (unscaled)

Objective...............: 3.0481612472924464e+00 3.0481612472924464e+00 Dual infeasibility......: 2.3581791412251070e+00 2.3581791412251070e+00 Constraint violation....: 9.9900000000000009e-06 9.9900000000000009e-06 Complementarity.........: 1.0681494261619128e-08 1.0681494261619128e-08 Overall NLP error.......: 2.3581791412251070e+00 2.3581791412251070e+00

Number of objective function evaluations = 71 Number of objective gradient evaluations = 26 Number of equality constraint evaluations = 0 Number of inequality constraint evaluations = 71 Number of equality constraint Jacobian evaluations = 0 Number of inequality constraint Jacobian evaluations = 42 Number of Lagrangian Hessian evaluations = 38 Total CPU secs in IPOPT (w/o function evaluations) = 0.021 Total CPU secs in NLP function evaluations = 0.001

EXIT: Converged to a point of local infeasibility. Problem may be infeasible. WARNING: Loading a SolverResults object with a warning status into model.name="SimpleMINLP";

  • termination condition: infeasible
  • message from solver: Ipopt 3.13.3\x3a Converged to a locally infeasible point. Problem may be infeasible.

If contrib.deactivate_trivial_constraints works well and the feasibility subproblem is infeasible due to the constraint tolerance, you can resolve it by setting a proper contraint_tolerance as I previously recommended. Otherwise, the feasibility subproblem is infeasible due to other reasons. We need to dig deeper.

— Reply to this email directly, view it on GitHub https://github.com/Pyomo/pyomo/issues/2864#issuecomment-1578877749, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIOSMCPYKUZIJGYN2HXAUK3XJ45HFANCNFSM6AAAAAAYW6F4MM . You are receiving this because you were mentioned.Message ID: @.***>

ZedongPeng commented 1 year ago

I'll try to install the solvers with the version that you are using. It may take some time and I'll let you know when I have any conclusions.

ZedongPeng commented 1 year ago

I finally get access to GUROBI. However, I still cannot reproduce this error. Have you finally resolved this? @strahl21

Information on my system

strahl21 commented 1 year ago

Hi Zedong,

I never resolved it, however I am currently working on some other work, and won't be able to get back to the error for a while (on the time scale of months).

You can close out the issue and if I get back to it and still notice a problem I can reopen the issue.

Regards, Will

On Wed, Aug 9, 2023 at 2:59 PM Zedong @.***> wrote:

I finally get access to GUROBI. However, I still cannot reproduce this error. Have you finally resolved this? @strahl21 https://github.com/strahl21 Information on my system

  • Operation System: macOS monterey Version 12.2
  • Python version: 3.9.16
  • Pyomo version: 6.6.1
  • Gurobi version: 10.0.2
  • Gams version: 44.1.1
  • Baron version (Access through Gams): 23.6.22

— Reply to this email directly, view it on GitHub https://github.com/Pyomo/pyomo/issues/2864#issuecomment-1671974945, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIOSMCIFHSGBIZYJR2SOB7TXUPMZPANCNFSM6AAAAAAYW6F4MM . You are receiving this because you were mentioned.Message ID: @.***>

blnicho commented 1 year ago

Closing this for now as @ZedongPeng has not been able to reproduce the issue. @strahl21 please reopen this in the future if this continues to be a problem for you.