B u `@sZddlZddlZddlmZmZmZddlmZej j j dddGdddej j Z dS) N)TransformationFactoryVarSet)Bunchbilevel_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-n62dbgi3/pyomo/bilevel/plugins/solver2.pyr szBILEVEL_Solver2.__init__cOs$|d|_tjjj|f||dS)Nr) _instancer r r _presolve)rargsrrrrrs 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|jtt|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_cuidZfind_component_onZ deactivatergetattr) r start_timeZxfrmrr Z stop_timeZsubmodelnamedatarrr _apply_solvers4       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|_|jj|d|_|S)Ncpu_timer)r r Z SolverResultsrrZ subsolverr)r#Zwallclock_timer r'r!r,lensumZTerminationConditionZoptimalZtermination_conditionZproblemrZ statisticsZnumber_of_constraintsZnumber_of_variablesZnumber_of_binary_variablesZnumber_of_integer_variablesZnumber_of_continuous_variablesZnumber_of_objectivesZ solutionsZstore_to)rr ZsolvZcpu_resZprobrrr _postsolveUs,             zBILEVEL_Solver2._postsolveN)__name__ __module__ __qualname__r rr+r0rrrrrs7r)rZ pyomo.optr Z pyomo.corerrrZpyomo.common.collectionsrr rregisterr rrrrr s