B _@sVddlZddlZddlZddlmZmZmZej j j dddGdddej j Z dS)N)TransformationFactoryVarSetbilevel_blp_globalz4Global solver for continuous bilevel linear problems)docc@s,eZdZddZddZddZddZd S) BILEVEL_Solver2cKs$d|d<tjjj|f|d|_dS)NrtypeT)pyomoopt OptSolver__init__Z _metasolver)selfkwdsrA/tmp/pip-unpacked-wheel-d4p3hk07/pyomo/bilevel/plugins/solver2.pyr szBILEVEL_Solver2.__init__cOs$|d|_tjjj|f||dS)Nr) _instancer r r _presolve)r argsrrrrrs zBILEVEL_Solver2._presolvec Cs>t}td}||jtd}||jtd}|j|j|jddd|jj}|jjsfd}tj |*}g|_ |j |j |j|j |jdWdQRXt}|||_|jjdj|j}x8|jd d D]$\}}t|tst|ts|qW|jjdj|jtjjt|d dt|d dd S)Nzbilevel.linear_mpeczmpec.simple_disjunctionzgdp.bigmbigMi)rZglpk)teeZ timelimitF)activeZ_rc_log)rclog)timerZapply_toroptionsgetsolverr r SolverFactoryresultsappendZsolve_teeZ _timelimit wall_timeZ_transformation_dataZ submodel_cuidZfind_componentZ component_mapitems isinstancerractivateZ block_cuidZ deactivatepyutilibmiscZBunchgetattr) r start_timeZxfrmrr Z stop_timeZsubmodelnamedatarrr _apply_solvers0     zBILEVEL_Solver2._apply_solvercCstj}|j}|jj|_|j|_g}x.|j D]$}t |jdddk r.| |jj q.Wt |dkrlt||_ tjjj|_|j}|jj|_|jjj|_|jjj|_|jjj|_|jjj|_|jjj|_|jjj|_ddlm}|jj|d|_|S)Ncpu_timer)maximize)r r Z SolverResultsrrZ subsolverr*r"Zwallclock_timerr(r r-lensumZTerminationConditionZoptimalZtermination_conditionZproblemrZ statisticsZnumber_of_constraintsZnumber_of_variablesZnumber_of_binary_variablesZnumber_of_integer_variablesZnumber_of_continuous_variablesZnumber_of_objectives pyomo.corer.Z solutionsZstore_to)r rZsolvZcpu_resZprobr.rrr _postsolveTs.              zBILEVEL_Solver2._postsolveN)__name__ __module__ __qualname__r rr,r3rrrrrs5r)rZ pyutilib.miscr&Z pyomo.optr r1rrrr rregisterr rrrrr s