B u `@L@s ddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZededededfZiZiZdd d fed <d d d fed <dd d fed<dd ddddhfidfed<dd ddddhfidfed<dd ddddhfidfed<dd ddddhfidfed<dd ddddhfidfed<dd d fed!<d"d d#fed$<d%d d&fed'<d(d d)fed*<d+d d,fed-<d.d d/fed0<d1d d2fed3<d4d d2fed5<d6d d7fed8<d9d d:fed;<dd d:fed?<d@d d:fedA<dBd d:fedC<dDd d:fedE<dFd d:fedG<dHd d:fedI<dJd d:fedK<dLd d:fedM<dNd d:fedO<dPd dQfedR<dSd dQfedT<dUd dVfedW<dXd dVfedY<dZd dVfed[<d\d dVfed]<d^d dVfed_<d`d dVfeda<dbd dVfedc<ddd defedf<dgd dhfedi<ejdudjdkZejdldmZednkrddl m Z edoedpedqx6ee D](Zeee eZeeqWedoedredqx6eD],\ZZedseedtejej fqWdS)vN)Options)TerminationCondition) test_models)test_solver_cases)IBlockinfcCsdS)NT)vrrA/tmp/pip-unpacked-wheel-n62dbgi3/pyomo/solvers/tests/testcases.py1r z3Conic constraints not yet handled by this interface) mosek_directpython QCP_simplecCsdS)NTr)r rrr r 5r )r rZQCP_simple_nosuffixescCsdS)NTr)r rrr r 9r )r rZ MIQCP_simplecCs|tkS)N)_trunk_version)r rrr r @r ZdualTZqc0Zqc1z5Cplex does not report duals of quadratic constraints.)cplexlprcCs|tkS)N)r)r rrr r Er )rmpsrcCs|tkS)N)r)r rrr r Jr )rrrcCs|tkS)N)r)r rrr r Or )Zcplex_persistentrrcCs|dkS)N)  rr)r rrr r Tr )rnlrcCs|dkS)N)4rrr)r rrr r cr z_Glpk ignores bounds on Binary variables through the LP file interface. A ticket has been filed.)glpkrMILP_discrete_var_boundscCs|tkS)N)r)r rrr r hr z{Glpk does not accept the OBJSENSE section of the Free MPS format. Therefore maximization models are not explicitly handled.)rrLP_duals_maximizecCs|dkS)N) rr)r rrr r qr zFor a maximization problem where a variable is pushed to its lower bound, Cbc reports the reduced cost as a positive number. In practice this should be reported as a negative number. A ticket has been filed at: https://projects.coin-or.org/Cbc/ticket/125)cbcrrcCs|tkS)N)r)r rrr r xr zNCbc fails to report a MILP model as unbounded when itis defined as an NL file.)r rMILP_unboundedcCs|tkS)N)r)r rrr r r z_Pico ignores bounds on Binary variables through the LP file interface. A ticket has been filed.)picorrcCs|tkS)N)r)r rrr r r zZPico reports an incorrect dual solution for this problem when using the NL file interface.)r"r LP_piecewisecCs|tkS)N)r)r rrr r r zPico classifies certain models with equality constraints as infeasible when using the NL file interface. A ticket has been filed.)r"rrcCs|tkS)N)r)r rrr r r )r"rLP_duals_minimizecCs|tkS)N)r)r rrr r r z0Pico reports the wrong objective function value.)r"rLP_inactive_indexcCs|tkS)N)r)r rrr r r z Pico just gets the wrong answer.)r"r LP_simplecCs|tkS)N)r)r rrr r r )r"rZ LP_compiledcCs|tkS)N)r)r rrr r r )r"rLP_trivial_constraintscCs|tkS)N)r)r rrr r r )r"rr!cCs|tkS)N)r)r rrr r r )r"rr!cCs|tkS)N)r)r rrr r r )r"r LP_unboundedcCs|tkS)N)r)r rrr r r )r"rr(cCs|tkS)N)r)r rrr r r )r"rMILP_infeasible1cCs|tkS)N)r)r rrr r r )r"rr)cCs|tkS)N)r)r rrr r r )r"rZLP_infeasible1cCs|tkS)N)r)r rrr r r )r"rZLP_infeasible2cCs|dkS)N)rr*rr)r rrr r r zKIpopt returns duals with a different sign convention. Fixed in Ipopt 3.10.4)ipoptrrcCs|dkS)N)r*rr*rr)r rrr r r )r+rrcCs|dkS)N)r*rrrr)r rrr r r zKIpopt returns duals with a different sign convention. Fixed in Ipopt 3.10.3)r+rZLP_blockcCs|dkS)N)r*rrrr)r rrr r r )r+rr$cCs|dkS)N)r*rrrr)r rrr r r )r+rr%cCs|dkS)N)r*rrrr)r rrr r r )r+rr#cCs|dkS)N)r*rrrr)r rrr r r )r+rr&cCs|dkS)N)r*rrrr)r rrr r r )r+rZ QP_simplecCs|dkS)N)r*rrrr)r rrr r r )r+rr'cCs|dkS)N)r*rrrr)r rrr r r z]SCIP (scipampl) does not recognize sos2 constraints inside NL files. A ticket has been filed.)sciprZ SOS2_simplecCs|dkS)N)r*rrrr)r rrr r r z]SCIP (scipampl) does not recognize sos1 constraints inside NL files. A ticket has been filed.)r,rZ SOS1_simplec cs~xvttD]f}t|}|dk r.||s.qxDttD]4\}}t||}|j|js`q||jd7_n||j d7_ nx|d7}|dkr||j!d7_!|jrtdd"|||fn2||j#d7_#|jrtdd"|||fqW|jr|dkrtdtdt$j%}t&t&dd|Dtdg}d'|d}|(d|(d|(d |d!d|(|'dd"d#d$d%d&|(d |d!dxt)|D]}||}|j |j 7_ |j|j7_|j#|j#7_#|j!|j!7_!|(|'|t|j t|j!t|jt|j#tt*d'|j |j|j |j|j!|j#qW|(d |d!d|(|'d(t|j t|j!t|jt|j#tt*d'|j |j|j |j|j!|j#|(d |d!dttj+dS))Nrr/FZSolverztermination conditionzexpected failure)TzExpected failurez$Unexpected termination condition: %s)Tr.)default_variable_value)suffixesT)FzUnexpected success)FzUnexpected failurez---------------z Test Failures)NumEPassNumEFailNumUPassNumUFailzExpected failurerzUnexpected failurez- Unexpected Test Failure: z, z- Unexpected Test Success: z- NONEr.css|]}t|VqdS)N)len).0namerrr sz%run_test_scenarios..zD{{0:<{0}}}| {{1:>8}} | {{2:>8}} | {{3:>10}} | {{4:>10}} | {{5:>13}} r zSolver Test Summary =Bz# Passz# Failz # OK Failz # Bad Passz% OKgY@ZTOTALS),loggingdisableWARNINGsetr3rErLr0r2generate_modelwarmstart_modelZsolver4Z io_optionsZpost_solve_test_validationstrrZ unboundedZ infeasible isinstancerZ load_solutionZsolutionZ solutionsZ load_fromrFZvalidate_current_solutionZ test_suffixesverboseprintrrIrHrKjoinrJsysstdoutmaxformatwriter7intNOTSET)optionsZsolversstatkeyZ test_caser2r3rCZ model_classZsymbolic_labelsZload_solutionsoptresultsZtermination_conditionrcZnfailsummarytotalZ_pass_strstreamZmaxSolverNameLenZfmtStrZ_solverZansrrr run_test_scenarioss                         d^ro__main__r.zTesting model generationz------------------------------zTesting scenario generationz, z %s: %s)N)!r^rSZ pyutilib.ththZunittestZpyomo.common.collectionsrZ pyomo.optrZpyomo.solvers.tests.models.baserZpyomo.solvers.tests.solversrZpyomo.core.kernel.blockrfloatrr;r=ZnottestrEro__name__r\r7rgobjrWrXvaluer]r0r1rrrr  s                                              ] /}