L i'dZddlZddlZddlZddlmZddlmZm Z m Z m Z m Z m Z ddlmZddlmZmZddlmZddlmZdd lmZddlZddlZd Z dd lmZd Z ddl!Z!dd l"m#Z$dZ%dZ&dZ'dZ( dUdZ)dZ*dZ+dVdZ,dZ-dWdZ.dZ/ej`jbdZ2dZ3ej`jbdZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;GddZej`j{d Gd#d$e<Z?ej`j{d Gd%d&e<Z@Gd'd(e<ZAGd)d*e>ZBGd+d,e>ZCGd-d.e>ZDGd/d0e?ZEe r Gd1d2e?ZFer Gd3d4e?ZGGd5d6e?ZHGd7d8e?ZIej`j{d Gd9d:ZJGd;de@ZLGd?d@eAZMGdAdBeAZNGdCdDZOej`j{d GdEdFZPGdGdHePZQGdIdJePZRGdKdLePZSej`j{d GdMdNZTGdOdPeTZUGdQdReTZVGdSdTeTZWy#e$rd ZYewxYw#e$rd Z YfwxYw)Xz" Unit test for Linear Programming N)VisibleDeprecationWarning)assert_assert_allclose assert_equalassert_array_less assert_warnssuppress_warnings)raises)linprogOptimizeWarning)approx_derivative)MatrixRankWarning) LinAlgWarningT)UmfpackWarningF)choleskyct|j dt|j|kdt|jddy)NIncorrectly reported successz)Incorrectly reported number of iterationsz(Failed to report iteration limit reachedrsuccessrstatus)resmaxiters g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_linprog.py_assert_iteration_limit_reachedr!s8  O;< CKK' !#NOQ JKc`t|j dt|jddy)Nincorrectly reported successz"failed to report infeasible statusrrs r_assert_infeasibler!'s$  O;<Q DErc`t|j dt|jddy)Nrz!failed to report unbounded statusrr s r_assert_unboundedr$-s$  O;<Q CDrcbt|j dt|jdvdy)Nrrz%failed to report optimization failure)rrrr s r)_assert_unable_to_find_basic_feasible_solr(3s)   O;< CJJ& "IJrc|js'd|jd|j}t|t |jd|t |j |d|||t |j|d||yy)Nzlinprog status z , message: rz*converged to an unexpected objective valueerr_msgrtolatolz#converged to an unexpected solution)rrmessageAssertionErrorrrfunx)r desired_fun desired_xr,r-msgs r_assert_successr5=s ;; |;s{{mDS!!Q L! .y E! .rc tjjd}||dzdzzdz }tj|dz|dzzdz}|j |dz||}tj |dz||f}g}g}t |dzD]N}|j}d||ddddf<|j|j|jdPt |D]\}t |D]L} |j}d|dd|| f<|j|j|jdN^t |D]X}|j}|dd|ddf|dd|ddf<|j|j|j|Zt |D]X}|j}|dddd|f|dddd|f<|j|j|j|Z|j}|ddt |t |f|ddt |t |f<|j|j|j||j}|ddt |t d| dz df|ddt |t d| dz df<|j|j|j|tjtj|t} tj|t} |j| jd} | | | ||fS)z Generates a linear program for which integer solutions represent an n x n magic square; binary decision variables represent the presence (or absence) of an integer 1 to n^2 in each position of the square. rrrr'Ndtype)nprandom RandomStatearangereshapezerosrangecopyappendflattenarrayvstackfloatrandshape) nrngMnumbersr?A_listb_listiA_rowjAbcs r magic_squarerUQs ))   "C QTAXAii1oA%)GooadAq)G HHadAq\ "E F F1a4[ aAg emmo& a 1Xq AJJLEE!Q'N MM%--/ * MM!   1X  Aq)aAg emmo& a 1X  Aq)aAg emmo& a  JJLE#*1eAha+@#AE!U1XuQx   MM%--/" MM! JJLE58U2rAvr223 !U1XuR!a, ,- MM%--/" MM! 6"%0A u%A A aGQ rcHtjjd}|j||f }tj|||zf}tj|}t |D]}|dz}d||||z||zf<||z ||< tj|||zf}tj|} t |D]}|dz}d|||d|f<d| |<tj ||f} tj|| f} | | |jfS)z -> A b c LP test: m*n vars, m+n constraints row sums == n/m, col sums == 1 https://gist.github.com/denis-bz/8647461 rsizerN) r:r;r< exponentialr?r@rEhstackravel) mrIrJrTArowbrowrQj1AcolbcolrRrSs rlpgen_2drbs* ))   "C //1v/ &&A 88QAJ D 88A;D 1X U !QAb1f _a%Q 88QAJ D 88A;D 1X UQ1W Q 4,A 4,A a?rcDtjj|}d\}}}|j|dz }|j||dz }|j|dz }|j||dz }|j|dz } |j| } |j|} tj | | |j k<tj| | |jkD<tj | | fj } ||||| | fS)N) 2?)r:r;r<rGinfrET) seedrJm_eqm_ubrIrTA_ubb_ubA_eqb_eqlbubboundss rvery_random_genrts ))   %CMD$  CA 88D! S D 88D># D 88D! S D 88D># D ((1+B !BFF7BrSXXZK&&BrCHHJ YYBx " "F dD$f ,,rc\gd}gdgdgdgdg}gd}gdg}dg}gd }d }|||||||fS) N)r7r')rx )rr7r)rdrx)ryr7r#r')r{ryrwry)r|rr)gk椀?gs?rgkL?gqY:^@)rTrmrnrorpx_starf_stars rnontrivial_problemrsOA     D D  D 4D 5F F dD$ff 44rctjj|}|jdd||f}|j |}|jdd||f}|||zz|jdd|z}tj ||z} d| d|t jjd|z||zf} d} t|D]J} ||dd| fz| | d|f<d| | || zf<d|z|dd| fz| | dzd|f<d| | dz|| zf<| dz } L| j} tjd|z} || ddd<| | ddd<dg|zd g|zz}| | | |fS) z Training data is {(x0, y0), (x1, y2), ..., (xn-1, yn-1)} x in R^d y in R n: number of training samples d: dimension of x, i.e. x in R^d phi: feature map R^d -> R^m m: dimension of feature space rrrWh㈵>Nrr7NNrN) r:r;r<normalrandnonesscipysparse lil_arrayr@tocscr?)rjr\drIrJphiw_truer1yrTrmidxiirnbndss rl1_regression_probrs ))   %C **QA* 'C YYq\F 1aq!f %A#'SZZ4aZ88A ! A AbqE << ! !1Q3!* -D CAha2hS"1"W S!B$YS&1QU8+SUBQBYSUAbD[ q  ::! yk!m +D dD$ rcDifd}tjddg}ddgddgddgg}gd}t|||||j}t |d dd g t d |d t d |d t d|dt d|dy)Nc|jd}|jd}t|jddvt|jdtdvtt|jdttt|t tt|t |dd<|d d <|d d <|d d <y) Nr.completephaserrrr'nitr1r0slackcon)poprr@ isinstanceintboolstr)rr.rlast_cbs rcbz!generic_callback_test..cbs'')$77:& F*+!U1X-. 3775>3/0 8T*+ 7C()3x Uw<Urr{rrrrdrvr'rmrncallbackmethod2ryr2r3r0r1rr)r:rDr rr5r)selfrrTrmrnrrs @rgeneric_callback_testrsG $ "bA FQFQF #D D !$TBt{{ KCCUq!f=GENCJ/GCL#c(+GENCJ/GG$c'l3rc:tjddg}ddgddgddgg}gd}ttt|||dttt|||d d }t j t| 5t |||d di dddy#1swYyxYw)Nr{rrrrrekki-ekki-ekkirmrnrz highs-ekkiz>Unrecognized options detected: {'rr_method': 'ekki-ekki-ekki'}match rr_methodrmrnoptions)r:rD assert_raises ValueErrorr pytestwarnsr )rTrmrnr.s r test_unknown_solvers_and_optionsrs "bA FQFQF #D D*g$T2BD*g$T,@NG oW 594$&67 9999s 6BBctjddg}ddgddgddgg}gd}t|||d}t|d dd g y) Nr{rrrrrhighsrrryr)r:rDr r5)rTrmrnrs rtest_choose_solverrsQ "bA FQFQF #D D !T4 0CCUq!f=rcftjt5tdddddtjt5tdddddtjt5tdddddy#1swYhxYw#1swYExYw#1swYyxYw)Nrinterior-pointrrevised simplexsimplex)rrDeprecationWarningr rrrtest_deprecationr(s ( ),*+, ( )-+,- ( )%)$%% ,,--%%s#B B8B'BB$'B0c tdd}d}|jdk(sJ|jj|sJt d\}}}}}dgt |z}dgt |z}dd i} t||||d| | }d }|jdk(sJ|jj|sJd d i} t||||d| }d}|jdk(sJ|jj|sJtddd}d}|jdk(sJ|jj|sJtdd}d}|jdk(sJ|jj|sJddlm} | dd\} } d}| dk(sJ| j|sJ| dd\} } d}| dk(sJ| j|sJy)Nrrrz6Optimization terminated successfully. (HiGHS Status 7:rryrr time_limit皙?)rTrorprsrr integralityz%Time limit reached. (HiGHS Status 13:rrdhighs-dsrTrorprsrrz*Iteration limit reached. (HiGHS Status 14:)rr7)rsrz+The problem is infeasible. (HiGHS Status 8:rr7z+The problem is unbounded. (HiGHS Status 10:r#)_highs_to_scipy_status_message:zHello!z;The HiGHS status code was not recognized. (HiGHS Status 58:r'z>HiGHS did not provide a status code. (HiGHS Status None: None))r rr. startswithrUlenscipy.optimize._linprog_highsr) rr4rRrSrTrLrKrsrrrrr.s rtest_highs_status_messager2s !G $C BC ::?? ;; ! !# && &&q/Aq!WaXA F#A,KS!G AAAfW!{ d:Z?d;Z@d<ZAd=ZBd>ZCd?ZDd@ZEdAZFdBZGdCZHdDZIdEZJdFZKdGZLdHZMdIZNdJZOdKZPdLZQdMZRe jjeTjdNk(dOPdQZVyR)SLinprogCommonTestsa Base class for `linprog` tests. Generally, each test will be performed once for every derived class of LinprogCommonTests, each of which will typically change self.options and/or self.method. Effectively, these tests are run for many combination of method (simplex, revised simplex, and interior point) and options (such as pivoting rule or sparse treatment). ct|yN)rrs r test_callbackz LinprogCommonTests.test_callback{s d#rcvtdd\}}}t||||jddi}t|dy)NredispTrmrnrrT*Pr2rbr rr5rrRrSrTrs r test_dispzLinprogCommonTests.test_disp~s;2r"1aaaa %tn.7rcddg}ddgddgg}ddg}d}d}t|||||f|j|j }t|d y) Nr7r'r{rrryrr{N)rmrnrsrrr)r rrr5)rrTrRrS x0_bounds x1_boundsrs rtest_docstring_examplez)LinprogCommonTests.test_docstring_examples_ G!Wq!f  F  aaaI0F"ll4;;@-rc rdg}dgg}d}ttt||||j|jy)Nrhellororprr)r TypeErrorr rr)rrTrorps rtest_type_errorz"LinprogCommonTests.test_type_errors:Cuid![[$,, @rc btjdg}tjdgg}tjdg}|j}dtjf}t |||t t ||j|j}t|ddgt||y)N?@rrrr) r:rDrArhr rorprrr5r)rrTrm b_ub_origrnrsrs rtest_aliasing_b_ubz%LinprogCommonTests.test_aliasing_b_ubs HHcUOxx# HHcUO ~~atT4![[$,,@t< 4(rc btjdg}tjdgg}tjdg}|j}dtjf}t |t t ||||j|j}t|ddgt||y)Nrrrrr#r) r:rDrArhr rmrnrrr5r)rrTro b_eq_origrprsrs rtest_aliasing_b_eqz%LinprogCommonTests.test_aliasing_b_eqs HHcUOxx# HHcUO ~~atT4![[$,,@qc: 4(rc dg}dgg}dg}dgg}dg}d}t|||||||j|j}t|ddgy)Nrrg@)$@rrr)r rrr5rrTrmrnrorprsrs rtest_non_ndarray_argsz(LinprogCommonTests.test_non_ndarray_argssbEwuwuatT4![[$,,@qc:rctjddg}ddgddgddgg}gd} d fd }jDcic]}|j|}}d|d <tt||||| ycc}w) Nr{rrrrrc @t||||||j|yNrr r)rTrmrnrorprsrrs rfz2LinprogCommonTests.test_unknown_options..fs AtT4v;; 9r*spamr)NNNNNN)r:rDrrr )rrTrmrnrkeyos` rtest_unknown_optionsz'LinprogCommonTests.test_unknown_optionss HHb"X AAA',0.2 9 04|| <S$,,s# # < <& _aTa 9 =sA2c Ltjddgddgddgg}tjgd}tjddg }dtjfgt|z}dgt|z}tjj t 5t|||||j|}dddtjjjdd gtjj|jd y#1swY`xYw) Nr7rr#rr r rrTrmrnrsrr?ffffff@ffffff) r:rDrhrtestingrr r rrr1r0rrmrnrTrsrrs rtest_integrality_without_highsz1LinprogCommonTests.test_integrality_without_highss xx"a1a&1a&12xx $ XXq!f  bff+Q'cCFl ZZ $ $_ 5 GADtF!%+GC G ""3553*5 ""377D1  G Gs DD#cdfd }tt|gdddgtjj 5}|j t dtt|gdgddddtt|gdddgtt|d d gd d ggd d g tt|d d gd ggd g tt|d d gd d ggd d g tt|d d gd ggd g tt|d d gd gd d jvrjd rytt|d d gtjdd y#1swYxYw)Nc Tt||||||jjyrr rrrTrmrnrorprsrs rrz1LinprogCommonTests.test_invalid_inputs..f$ AtT4v;;  >rrrr#rr#r'rszCreating an ndarray from ragged)rr)r#r'rrrr)rmrn)rorp_sparse_presolve)rrr#)rmrpNNNNN) rrr:rr filterrrr?)rrsups` rtest_invalid_inputsz&LinprogCommonTests.test_invalid_inputssA > j!Y7GH ZZ ) ) + Xs JJ02S T *a;V W X j!Y7HI j!aVAq6(!QHj!aVA3%qcBj!aVAq6(!QHj!aVA3%qcBj!aV1#A> $,, . /0  j!aV"((92EAN% X Xs .EEc dfd }tjjd}d}d}tjj ||fd}|j |}|j |}||j|z}||j|z } tj| |f} ||z} jdvrNttdjd  5t||| | jj dddyij} jd vrd | d<t||| | j| } | jsJy#1swYyxYw)Nc Tt||||||jjyrrrs rrz5LinprogCommonTests.test_sparse_constraints..frrrdrg)density>rrzMethod 'z.' does not support sparse constraint matrices.rr>rTrr)r:r;r<rr random_arrayrrG column_stackrrrr rr)rrrJr\rIrox_validrTrrrqrsrprrs` rtest_sparse_constraintsz*LinprogCommonTests.test_sparse_constraintssX >ii##A&  ||((!Q(=))A, IIaL sxx{ " sxx{ ""b*g~ ;;8 8z8DKK=IN2NO B!$T&#{{DLLB B B '&G{{00$(!ADtF!%g?C;; ; B Bs !&EE$cgd}gdgdgdg}gd}tjjdd}t||||jd|i }t ||t |j|y) Nr'rvr#rrrrrr#r7rrr#@rvrr7rrvrdr'rrr7iXrr#rr)r:r;rjr rrrr)rrTrRrSrrs r test_maxiterzLinprogCommonTests.test_maxiter"si   !  "  qaaa ('24'W5SWWg&rc|jjdd}tdgd|j|j}t |dd|rt |j dtgdgd|j|j}t |d gd |rt |j dtddgdd g|j|j}t |d ddg|rt |j dtgd gdgdgddggd|j|j}t |dgd|rt |j dyy)NpresolveTr)rrrsrrrr))rr)r7r7)r#r#r )rr7r#)rr#r)rrrrrrrrrr}))r)rrd) @r;rorprsrr)rr}r;)rgetr rr5rrr do_presolvers rtest_bounds_fixedz$LinprogCommonTests.test_bounds_fixed1s# ll&&z48 qc&![[$,,@Q"  ! $i(B![[$,,@R,  ! $q!fff%5![[$,,@QA'  ! $iy)&r rr!rrr?s rtest_bounds_infeasiblez)LinprogCommonTests.test_bounds_infeasibleQs ll&&z48 qc'$++t||T3  ! $qc7)DKKV3  ! $i(@![[$,,@3  ! $ rcjjdd}| xrjdk(}gd}dtjtjfdg}dtj tj fdg}|rfd}t j t5t jt5|||ddddddt j t5t jt5|||ddddddyt||jj }t||rt|jd t||jj }t||rt|jd yy#1swYxYw#1swYxYw#1swYxYw#1swYyxYw) Nr6TrrrrcNt||jj}|S)Nr7r)rTrsrrs rgz6LinprogCommonTests.test_bounds_infeasible_2..gzs$a%)[[$,,H rrrTrsrrr)rr>rr:rhrrRuntimeWarningr IndexErrorr r!rr)rr@simplex_without_presolverTbounds_1bounds_2rFrs` rtest_bounds_infeasible_2z+LinprogCommonTests.test_bounds_infeasible_2hsll&&z48 '2?#Ot{{i7O RVVRVV,f5bffWrvvg.7 #  n- *]]:.*a)* *n- *]]:.*a)* * *Ah!%dllDC s #SWWa(Ah!%dllDC s #SWWa(** * * ** * *sHF<8 F0F<,G GG0F9 5F<<GG GGcfddg}t||j|j}t|y)Nr7rr)r rrr$)rrTrs rtest_empty_constraint_1z*LinprogCommonTests.test_empty_constraint_1s) Ha T\\B#rcgd}dtjftj dfddg}t|||j|j}t ||jj ddrt|jdyy)N)r7rr7rrr7rr7r6T) r:rhr rrr$r>rrrrTrsrs rtest_empty_constraint_2z*LinprogCommonTests.test_empty_constraint_2sr bff+|Wg>a![[$,,@# <<  J - ! $ .rcgd}dtjftj dfddg}t|||j|j}t |gddy)N)rr7rr7rrQr7)rrr7rrr3r2)r:rhr rrr5rRs rtest_empty_constraint_3z*LinprogCommonTests.test_empty_constraint_3sO bff+|Wg>a![[$,,@}"Erc tjddgdz}ddgddgddgg}gd}t|||ttt |j |j}t|ddd g y) Nr#rr7rrrriryr r:rDr rorprsrrr5rrTrmrnrs rtest_inequality_constraintsz.LinprogCommonTests.test_inequality_constraintssr HHaV r !AAAatT4![[$,,@A?rc ddg}ddgddgddgg}gd}t|||ttt|j|j }t |d d d g y) Nryr#rr7rr)rr7r7rrgUUUUUU?gUUUUUU?rr rorprsrrr5rYs rtest_inequality_constraints2z/LinprogCommonTests.test_inequality_constraints2sdFARQatT4![[$,,@uenErc 0ddg}d}t|tttt||j |j }t|ddgddg}t|tttt||j |j }t|ddgy)Nrrrrr3)r rmrnrorprrr5rRs rtest_bounds_simplez%LinprogCommonTests.test_bounds_simples~ FatT4![[$,,@1v.&!atT4![[$,,@1v.rc  tjdg}tjdgg}tjdg}d}t|tt||||j |j }t|ddgy)Nrr)rNrr#rr:rDr rmrnrrr5rrTrorprsrs rtest_bounded_below_only_1z,LinprogCommonTests.test_bounded_below_only_1si HHcUOxx# xxatT4![[$,,@qc:rc Jtjd}tjd}tjgd}dtjf}t |t t||||j|j}t||tj|y)Nr#rrgrrU r:reyerDrhr rmrnrrr5sumrcs rtest_bounded_below_only_2z,LinprogCommonTests.test_bounded_below_only_2so GGAJvvayxx "rvvatT4![[$,,@tFrc  tjdg}tjdgg}tjdg}d}t|tt||||j |j }t|ddgy)Nrr)Nrrr#rrbrcs rtest_bounded_above_only_1z,LinprogCommonTests.test_bounded_above_only_1si HHcUOxx# xxatT4![[$,,@qc:rc Ltjd}tjd}tjgd}tj df}t |t t||||j|j}t||tj|y)Nr#rr'rrUrfrcs rtest_bounded_above_only_2z,LinprogCommonTests.test_bounded_above_only_2sq GGAJvvayxx "66'1atT4![[$,,@tFrc htjd}tjd}tjgd}tj tjf}t |t t||||j|j}t||tj|y)Nr#rrrUrfrcs rtest_bounds_infinityz'LinprogCommonTests.test_bounds_infinitysv GGAJvvayxx "66'266"atT4![[$,,@tFrc tjddgdz}tjddgddggtj}ddg}tj tjf}dtjf}||f}t |||t t ||j|j}t|d d d g y) Nr7r'r{rrr8ryrgm۶m&g$I$Ig%I$I@r) r:rDfloat64rhr rorprrr5)rrTrmrnrrrsrs rtest_bounds_mixedz$LinprogCommonTests.test_bounds_mixeds HHb!W  "xx"aQ!(* 41vffWbff% L Y'atT4![[$,,@VVr highs-ipmrr&r7rrrr6Tr) rrxfailr:r;r<rGr rr$r>rr) rrJr\rIrTrorprmrnrsrs rtest_zero_column_2z%LinprogCommonTests.test_zero_column_2:s ;;3 3 LLNii##A&1 HHQK!xx1~QT xx{xx1~QT xx{atT4![[$,,@# <<  J -'2L ! $ 3M -rc gd}gdgdgdg}gd}t|tt||t|j|j }t |dy)Nrrrrrrrrr#rrr#rr rmrnrsrrr5rrTrorprs rtest_zero_row_1z"LinprogCommonTests.test_zero_row_1UsF 9i0atT4![[$,,@+rc gdgdgdg}gd}gd}t|||ttt|j|j }t |dy)Nrrrrrrrr\)rrmrnrTrs rtest_zero_row_2z"LinprogCommonTests.test_zero_row_2]sF9i0 atT4![[$,,@+rc d\}}tjjd}|j|}|j||}d|dddf<|j|}t |t t ||t|j|j}t||jjddrt|jdyyNr&irrr6T)r:r;r<rGr rmrnrsrrr!r>rr)rr\rIrJrTrorprs rtest_zero_row_3z"LinprogCommonTests.test_zero_row_3es1ii##D) HHQKxx1~QT xx{atT4![[$,,@3 <<  J - ! $ .rc d\}}tjjd}|j|}|j||}d|dddf<|j| }t |||t t t|j|j}t||jjddrt|jdyyr)r:r;r<rGr rorprsrrr!r>rr)rr\rIrJrTrmrnrs rtest_zero_row_4z"LinprogCommonTests.test_zero_row_4ts1ii##D) HHQKxx1~QT  |atT4![[$,,@3 <<  J - ! $ .rc gd}gdgdgdgdg}gd}t|tt||t|j|j }t ||j jddrt|jd yy) Nrrrrrrrrrrrrrrrr)rrrr'rr6Tr) r rmrnrsrrr!r>rrrs rtest_singleton_row_eq_1z*LinprogCommonTests.test_singleton_row_eq_1so lL,GatT4![[$,,@3 <<  J - ! $ .rc gd}gdgdgdgdg}gd}t|tt||t|j|j }t |dy) Nrrrr)rrrr'rr'rrrs rtest_singleton_row_eq_2z*LinprogCommonTests.test_singleton_row_eq_2sH lL,GatT4![[$,,@+rc gd}gdgdgdgdg}gd}gd}t|||tt||j|j}t ||jj d d rt|jd yy) Nrrrr7rrrr)rrrr'rrrrrr6Tr r rorprrr!r>rrrws rtest_singleton_row_ub_1z*LinprogCommonTests.test_singleton_row_ub_1st lM<H@atT4![[$,,@3 <<  J - ! $ .rc gd}gdgdgdgdg}gd}gd}t|||tt||j|j}t |d y) Nrrrrr)rrr'rrrgr)r rorprrr5rws rtest_singleton_row_ub_2z*LinprogCommonTests.test_singleton_row_ub_2sM lM<H@atT4![[$,,@-rc ddg}ddgddgddgg}gd}t|||ttt|j|j }t |y)Nr7rr)rrr:r)r rorprsrrr!rYs rtest_infeasiblez"LinprogCommonTests.test_infeasiblesZ HAARatT4![[$,,@3rc dg}dgg}d}d}t|||tt||j|j}t ||jj ddrt|jdyy) Nrrr')rryrr6Trrrws r!test_infeasible_inequality_boundsz4LinprogCommonTests.test_infeasible_inequality_boundssq CuatT4![[$,,@3 <<  J - ! $ .rc tjddgdz}ddgddgg}ddg}t|||ttt |j |j}t|y)Nrr7rr) r:rDr rorprsrrr$rYs rtest_unboundedz!LinprogCommonTests.test_unboundedsc HHaV r !QRBxatT4![[$,,@#rcdg}dg}|jDcic]}||j|}}d|d<t|||j|}|jdk(rt|jdyt |ycc}w)NrNrFr6rGrr)rr rrrr$)rrTrsrrrs r*test_unbounded_below_no_presolve_correctedz=LinprogCommonTests.test_unbounded_below_no_presolve_correcteds C/3|| <S$,,s# # < <* &![[! ;;+ + Q ' c " =sA>c tjgd}tjgdgdgdg}tjgd}gd}t|||tt||j |j }t||j jjdsAt|jd tjt|jd d d y y ) | Test whether presolve pathway for detecting unboundedness after constraint elimination is working. )rrrrr7r7rrrrrrrrrrrr)rrrrrr7rrr)rrrrQrQrrrr7N$$The problem is (trivially) unboundedr:rDr rorprrr$lowerrrr1rhr.rws r*test_unbounded_no_nontrivial_constraints_1z=LinprogCommonTests.test_unbounded_no_nontrivial_constraints_1s HH) *xx++,./xx #/atT4![[$,,@#{{  "--g6 rBFF + Sb)? A7rc tjgd}tjgdgdgdg}tjgd}gd}t|||tt||j |j }t||j jjdsBt|jd tj t|jd d d y y ) r)rrrrr7rrr)rrrrrrr)rrrrQrQ)Nrrrr7Nrrrrws r*test_unbounded_no_nontrivial_constraints_2z=LinprogCommonTests.test_unbounded_no_nontrivial_constraints_2s HH( )xx+++-.xx #/atT4![[$,,@#{{  "--g6 rRVVG , Sb)? A7rc tjgddz}gdgdgdg}gd}t|||ttt |j |j}t|gdd d y) N)r$rdrr7r8)rerr)rer)rr$'r)rrrgh㈵>Hz>)r3r-r,rXrYs rtest_cyclic_recoveryz'LinprogCommonTests.test_cyclic_recoverys` HH\ "R 'atT4![[$,,@}4dKrc tjgd}tjgdgdgdg}gd}d}|jjDcic]\}}|| }}}||d<t |||t t t|j|}|jd k(r+|jjd st||dyt|gd  ycc}}w) N)r|9rzg8@)rggrrz)rggrrr)rrrr$rrrbland)rrrrr_) r:rDritemsr rorprsrr>rr5) rrTrmrnrrvalrrs rtest_cyclic_blandz$LinprogCommonTests.test_cyclic_blands HH& 'xx--%'(&*ll&8&8&: ;(#sS#X ; ;) atT4![[!5 ;;) #DLL,<, C< 8 r)r2r-r,) r rrr rmrnrsrrr5)rrTrIprorpr rs rtest_network_flowz$LinprogCommonTests.test_network_flowUsE 51 1aAq!Q1a 0 1aAq!Q1a 0 1aAq!Q1a 0 1aAq!Q1a 0 1aAq!Q1a 0 1aAq!Q1a 0 1aAq!Q1a 02+   DC JJ} %!T4tV!%dllDC D 4dC  D Ds 5A CCc gd}ddgddgddgddgddgg}d\}}||dddg|d||dgd||d|gddd||gg}gd}t5}tr|jt|jtd |jt d |jt d |jt t|tt||||j|j }dddtd y#1swYxYw)N)rrrr#rrr'rr#rrQ)rrrr'scipy.linalg.solve Ill...rSolving system with option...rrur) r has_umfpackrrrHr rr rmrnrrr5) rrTrsrIrrorpr rs r"test_network_flow_limited_capacityz5LinprogCommonTests.test_network_flow_limited_capacityjs  F F F F F  1 1aO 1aO 1aO 1aO    DC >* JJ~'C D JJ(A B JJ(G H JJ} %!T4tV!%dllDC D , D Ds B"C;;Dc gd}gdgdg}ddg}t|||ttt|j|j }t |dy) N)rr{r)r#rr)rrr#rdr=rirr\rYs r(test_simplex_algorithm_wikipedia_examplez;LinprogCommonTests.test_simplex_algorithm_wikipedia_examplesM   BxatT4![[$,,@-rc gd}gdgdgdg}gd}t|tt||t|j|j }t |dgdd d y) Nr,r-r.r0r1rgs@)gP@rg1@rgf@rgTqs*>r)r2r3r-r,rrs rtest_enzo_examplez$LinprogCommonTests.test_enzo_examplesX   ! "atT4![[$,,@"@! .rc &gd}gdgdgdgdgdg}gd}t5}|jtdt|tt ||t |j|j }dddtd gd  y#1swYxYw) N)rg333333@g%@rg333333g%)r7r7r7rrr)rrrrrr)rrrrrr)rrrrrr)rrrrrr)r皙?333333?rrrrgRQ)rg?rrrr) r rr r rmrnrsrrr5)rrTrorpr rs rtest_enzo_example_bz&LinprogCommonTests.test_enzo_example_bs /%"""" $ *   DC JJ(A B!T4tV!%dllDC D "@ B  D Ds A BBc d}tj| }dtjztjd|dzz|dzz }tjtj |dz tj |f}ddg}t|tt||t|j|j}t|dtj|y)Nrerrrrr)r:rpir=rEcossinr rmrnrsrrr5r?)rr\rTtmprorprs r#test_enzo_example_c_with_degeneracyz6LinprogCommonTests.test_enzo_example_c_with_degeneracys  WWQZK"%%i"))Aq1u--Q7yy"&&+/266#;781vatT4![[$,,@bhhqkBrc d}tj| }dtjztj|z|dzz }tj|dz }d|d<tj |}d|d<tj ||f}ddg}t|tt||t|j|j}t|y)Nrfrrrrr)r:rrr=rrrEr rmrnrsrrr$) rr\rTrrow0row1rorprs r&test_enzo_example_c_with_unboundednessz9LinprogCommonTests.test_enzo_example_c_with_unboundednesss  WWQZK"%%i"))A,&!a%0vvc{QQvvc{Qyy$&1vatT4![[$,,@#rc d}tj| }dtjztj|z|dzz }tjtj |dz tj |f}ddg}|jDcic]}||j|}}d|d<t|tt||t|j|}t|ycc}w)NrfrrFr6r)r:rrr=rErrrr rmrnrsrr!) rr\rTrrorprrrs r&test_enzo_example_c_with_infeasibilityz9LinprogCommonTests.test_enzo_example_c_with_infeasibilitys  WWQZK"%%i"))A,&!a%0yy"&&+/266#;781v/3|| <S$,,s# # < <* atT4![[!53 =sC-c tjgd}tjgdgdgdgdgdg}tjgd}tjgdgd g}tjd d g}t|||||t|j|j }t |d tj|d y)N)ggQ뱿Mbp?rrr)rrrrrr)rrrrrr)rrrrrr)rrrrrr)rrrrrr)rrrrg4@)rrr7rr7r)rrr7rr7rrrg>)r2r3r-)r:rDr rsrrr5 zeros_like)rrTrmrnrorprs rtest_basic_artificial_varsz-LinprogCommonTests.test_basic_artificial_varss HH> ?xx-/D.0D/12xx23xx/1HIJxxAatT4![[$,,@bmmA6F! #rc td\}}}}}}t|||||||j|j}t |j t |j t |j d|jvrt |jdk(t||jz|jt|||jzz |jdt|||jzz |jddD]Y}||jvst||dt j"sJt||d t j"rYJy) Nrrmrnrorprsrrrz%Optimization terminated successfully.gdy=r-)eqlinineqlinrupper marginalsresidual)rtr rrrrrrr.rr1r0rrkeysrr:ndarray) rrTrmrnrorprsrrs rtest_optimize_resultz'LinprogCommonTests.test_optimize_results*,;A,>)4tT6adDt#DKKO CJJ $++ % CKK#JJ KCEE 377+tcee|+SWW5Atcee|+SYYUC9 DCchhj !#c(;"7DDD!#c(:"6 CCC Drc/gd}d}d}d}tjgdddd|dd dd ddd dd ddddddgddd|ddd d d dd d dddddddggd gd gd gdgdgdgdgdgdgdgdgdgdgdgdgdgdgdddd d dddd ||ddd|dddddgdddddd d dddd ||d|ddddgdd dd ddd|d d ddddd|dddgddddd dd ddd|d |ddd|ddgdd d d ddd||d ddddddd|dgddddd d dddd||d ddddd|gg}tjgd!}tjgd"}t5}|jtd#|jt d$|jt t|||tt||j|j%} dddt d&'y#1swYxYw)(N)rrr$rrrrrrrrrrrrrrrrrgqq?g)rgQrrr{rrrr7r7rr7r7rrrrrrrrg333333r{r7)rrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrr7rrrrr)rrrrrrrrrrrrrrr7rrrr)rrrrrrrrrrrrrrrr7rrr)rrrrrrrrrrrrrrrrr7rr)rrrrrrrrrrrrrrrrrr7r)rrrrrrrrrrrrrrrrrrr7gףp= ?rgffffff?g@)rrrr$r$r$r$r$r$rrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrrrrrrrrrg^Zr) r:rDr rr rHrr rorprrr5) rrsrrFhrmrnrTr rs r test_bug_5400z LinprogCommonTests.test_bug_5400 saN   xx N 4Ar1b!QAr1aAq! L 1aAr2r1b"aAq!Q J E E E E E E E E E E E E F F F F F F b"aAr1aAq!Q1a K 1aBAq!RAq!Q1a H CaAq"b!Q1aAq! L 1aQAq!QAq!Q1a H BQ1aB1aAq!Q J 1aRAq!Q2q!Q1a H7JK:xx56 HH4 5   DC JJ= ? JJ~'B C JJ} %!T4tV!%dllDC  D )<= D Ds 1A1F88Gc tjgd}tjgdgdg}tjddg}tjgdg }tjdg }d}t|||||||j|j }t |d tjgd  y) Nr)rrr)@rrg@r)rg.Ag.AgcArrgfffff-@)rg@rrr:rDr rrr5)rrTrorprmrnrsrs r test_bug_6139z LinprogCommonTests.test_bug_6139Cs HHY xx'<=>xx9:2344)%%atT4![[$,,@ "$((<"8 :rc tjgdg}tjdg}tjgdgdgdgdgdg}tjgd}tjgd gd gj}tjgd }t5}tr|j t |j td |j td |j td|j tt|||||||j|j}dddd} tjgd} t| | d} t|dddf| z |jt|j|dddf| zy#1swYsxYw)N) rrrg(\?r?rrg(\?rg%䃞?) rrrzG?rrrgɿrg)\(̿) rrrrrrrrrr) rrrgQ?rrrrrr) rgQпrrrg{GzrrgQ?) rrrrrrrr rr)gGz?rgjt?g+gI +) gzG ףp= (\?rgQտgGzGz? ףp= ?g333333\(\) Gz?g{Gz?gzG@gQ?r rgg)\(?g(\?{Gz?g333333ÿ) g= ףp=gffffff?r g(\g(\gp= ף?g ףp= @g{Gz?gQ?gQ?z%Solving system with option 'cholesky'rrrgV) rr rrr rgrrrrrrrr)r:rDrir rrrr rHrr rrr5rr1) rrorprmrnrsrTr rr2r3r-s r test_bug_6690z LinprogCommonTests.test_bug_6690Ys xx@ABxx!xx 4 * - 9 .   xx9: M H   1  HH  DC >* JJ> @ JJ(N O JJ~'B C JJ} %!T4tV!%dllDC D% HHGH  J&A,-suu5#%%1!45' D Ds 0BF<<Gc 4td\}}}}}t5}|jtd|jtd|jt t |tt||t|j|j}dddd}t|t|j|j|t!t#j$|jj&dz |jy#1swY~xYw)Nr#rrr-U?rr)rUr rr rHrr rmrnrsrrr5rdotr1rr:r?rX)rrorprT_r rr2s r test_bug_7044z LinprogCommonTests.test_bug_7044s +1odAq!   DC JJ(A B JJ~'B C JJ} %!T4tV!%dllDC  D" 5."((355::.5suu= D Ds A5DDctjgd}tjgdgdgdgdgdgdgdgd gd gd gd gd gdgdgdgdgdgdgdgdgdgdg}tjgd}tjgdg}tjdgg}dgdz}t|||||||j|j}t |dd y)!N) r7rrrrrrrr) rggx@g8gXgg}@gTgPr) rg@gE@gH@g m@g@gx@ghgL@) rgjgg؀@gt@g@ggp@gK@) rgȊ@g؊gT@g|@gpgXgЉ@g ~@) rgs@zgn@rg@h@g{gZgz) rg@g8@gv@gb@g؉g`@gȃ@gr@) rrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr) rrrrrrrrr)rrrrrrrrrrrrrrrrrrrrrr) rrrrrrrrrrrrzrghb$[@rr2r-rrs r test_bug_7237z LinprogCommonTests.test_bug_7237s HH1 2xx E ? B B E A 8 8 8 8 8 8 8 8 0 0 0 0 0 0 0 0-0xx89xx=>?xx"!#atT4![[$,,@$?rc xtjgdgdgdgdg}tj|jd}tj|jd }dg|jdz}t 5}|j td|j tt|||tt||j|j }ddd|jjd d d kr|jd k(r tyt!ddy#1swYRxYw)N)XiiD43i)ii @i)r"rrr!r)r rrr#rrrrrrtolg& .>绽|=rgrr)r:rDr?rHrr rrHrr rorprrr>r(r5)rrmrnrTrsr rs r test_bug_8174z LinprogCommonTests.test_bug_8174sxx 0 0 % % '( xx 1 & WWTZZ] # #DJJqM)   DC JJ~'B C JJ} %!T4tV!%dllDC D <<  E4 (5 0T[[I5M 5c : C-@t L D Ds AD00D9c :tjgd}tjd }tjdgdgdgdgdgdgdgg}tjgdgdgdgdgdg}tjd gd gd gd gd gg}t5}tr|j t |j td t|||||t|j|j }dddtd y#1swYxYw)N)rrrrrrrr}r)rrrrrrr)rg?g?rrrr7)rrrrrrgUUUUUU)rr rrrr)rrrrrrr(r$rrrg?E@r) r:rDidentityr rrrr r rsrrr5rrTrmrnrorpr rs rtest_bug_8174_2z"LinprogCommonTests.test_bug_8174_2s HH* + Axx"tbTB4"tbTBCxx ! ( & ( '   xx#aS1#s34   DC >* JJ(A B!T4tV!%dllDC  D )9:  D Ds ADDctjgd}tjgdgdgdgdgdg}tjgd}t||||j|j}t |gd  y) N)r}rr?r-)r'@r-r )rrrr/rg)r#rr'g)rx)r7g@rr/r)r.rgr7g#@)rrrrr)rmrnrr)rrrgUUUUUU@gUUUUUU#@r_)r:rDr rrr5rYs r test_bug_8561z LinprogCommonTests.test_bug_8561sm HH) *xx $ # # " # %& xx(adt||![[*'=>rc gd}gdgdgdgdg}gd}gd}d}t5}tr|jt|jtd |jt t |||tt||j|j }ddd|jgd |jd d |d<t5}tr|jt|jtd |jt t |||tt||j|j }dddd} t|| t|| y#1swYxYw#1swY4xYw)N)r|rdryr#)rvr~rry)r~rvr'rw)rr'rvr)r#r{r{r|)rzr2r)rrrrgB@rr)rrr7rrrrr)r2r,) r rrrrHrr rorprrrBr5) rrTrmrnrsr2r res1res2r,s r test_bug_8662z LinprogCommonTests.test_bug_8662sL  "=#   EC >* JJ~'B C JJ} %1dD$f"&++t||ED  E M" A q   EC >* JJ~'B C JJ} %1dD$f"&++t||ED  E+DA+DA- E E E EsA6E5A6F5E>F c ddg}ddgg}dg}ddg}t|tt||||j|j}t |dd gd y) Nrrrrxrwrrrg۶m۶m?gI$I$@rU)r rmrnrrr5rcs r test_bug_8663z LinprogCommonTests.test_bug_8663$s]FByt\*atT4![[$,,@4yfErc 6dg}dgdgg}ddg}dgdgdgg}gd}t5}|jt|jtdt |||||t |j |j }dddty#1swYxYw) Nr'rrrr~rzr#rrdrr) r rrHr r rsrrr!r*s r test_bug_8664z LinprogCommonTests.test_bug_8664/sCaSz1vbTA3   DC JJ~ & JJ(G H!T4tV!%dllDC D 3  D Ds ABBc \tjgd}tjgdgdg}tjddg}gd}t|||tt||j |j }t|dt||jz|jy ) zv Test whether bug described at: https://github.com/scipy/scipy/issues/8973 was fixed. )rrrrr7)rrrrr)rrrrrrr)rrrrQrQrrN) r:rDr rorprrr5rr1r0rws r test_bug_8973z LinprogCommonTests.test_bug_8973?s HH% &xx/:;xxB MatT4![[$,,@ ,QY(rc tjd}tjdgg}tjdg}d}t|||tt ||j |j}t|dgdy)z Additional test for: https://github.com/scipy/scipy/issues/8973 suggested in https://github.com/scipy/scipy/pull/8985 review by @antonior92 rrrrrrUN) r:r?rDr rorprrr5rws rtest_bug_8973_2z"LinprogCommonTests.test_bug_8973_2Psh HHQKxx!xx~atT4![[$,,@t;rc \tjd}tjdgg}tjdg}d}ddg}ddgddgg}ddg}dd g}d d i}|j|jt |||t t||j| }t|d dgdy)zg Test for linprog docstring problem 'disp'=True caused revised simplex failure rrrr7r'r{rryrrTrrdrrUN) r:r?rDupdaterr rorprr5)rrTrmrnrsrrs rtest_bug_10124z!LinprogCommonTests.test_bug_10124`s HHQKxx!xx~ GQ!Q 1v + TN atT4![[!5BxSArc tjgdgdgdgdgdgdg}tjgd}tjdd tjd fd }t 5}|j t d t|tt||t|j|j}d d d tgddy #1swYxYw)zq Test for redundancy removal tolerance issue https://github.com/scipy/scipy/issues/10349 )rrrrrr)rrrrrr)rrrrrr)rrrrrr)rrrrrr)rrrrrr)rdfrrr'Naxisrr)\r rFrrdrKrU)r:rD concatenater?r rr r rmrnrsrrr5)rrorprTr rs rtest_bug_10349z!LinprogCommonTests.test_bug_10349ss xx++++++ -. xx56 NNAq"((1+.T :   DC JJ(A B!T4tV!%dllDC D '@bQ  D Ds 6A CC"darwinz0Failing on some local macOS builds, see gh-13846reasonc gd}gdgdgdgdgdgdgdgd gd gd g }gd }i}|jjd sddi}|j|jt 5}|j t dtr|j t|j td|j td|j td|j td|j tdt|tt||t|j|}dddtj dy#1swY xYw)zA Test that autoscale fixes poorly-scaled problem ) rrRrrRrrrrrrrr) rrrrrrrrrrrrr) rrrrrrrrrrrrr) rrrrrrrrrrrrr) rrrrrrrrrrrrr) rrrrrrrrrrrrr) rrrrrrrrrrrrr) rrrrrrrrrrrrr) rrrrrrrrrrrrr) rrrrrrrrrrrrr) rrrrrrrrrrrrr) gAgAg@AgAArSrSrSrSrSr autoscaleTrrzdivide by zero encountered...zoverflow encountered...zinvalid value encountered...Ill-conditioned matrix...rNl)rrr@rr rr rrrHrr rmrnrsrr0)rrTrorprr rs rtest_bug_10466z!LinprogCommonTests.test_bug_10466s NDDDEDDDDDD F  {{%%g.d#A   9C JJ(G H >* JJ~'C D JJ~'F G JJ~'@ A JJ~'E F JJ}&A B!T4tV!%a9C 9 - 9 9s /C EE N)W__name__ __module__ __qualname____doc__rrrrrrrrmark thread_unsaferrr!r*r4rArCrMrOrSrVrZr]r`rdrirkrmrorrrxrzr|rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr&r+r0r5r7r:r<r>rArMskipifsysplatformrVrrrrrns$$8 .@ ) ) ; [[99  [[22$O8B '%@%. [[')')R %F @ F /;G;GG N   " >%6,, % % %, %.   %# A(A( L92 (C 8D*-> ..(B" C"  #"D.5>n:,*6X>$'@RM.;0?""BH F )"< B&R& [[ 0!/1&.1&.rrzignore::DeprecationWarningceZdZdZy)LinprogSimplexTestsrNrWrXrYrrrrraras FrraceZdZdZdZy)LinprogIPTestsrc.tjdy)Nz*Test is failing, but solver is deprecated.rskiprs rrVzLinprogIPTests.test_bug_10466s @ArN)rWrXrYrrVrrrrdrds FBrrdc"eZdZdZdZdZdZy)LinprogRSTestsrc.tjdyNz Intermittent failure acceptable.rfrs rrzLinprogRSTests.test_bug_5400 67rc.tjdyrkrfrs rr5zLinprogRSTests.test_bug_8662rlrc.tjdyrkrfrs rrz LinprogRSTests.test_network_flowrlrN)rWrXrYrrr5rrrrriris F$888rric PeZdZdZej j ej jdddiddiddiddiddid did did d igd ZdZ ej jddZ dZ dZ ej jddZy)LinprogHiGHSTestsc d}tjddg}ddgddgddgg}gd}ttt|||||j t ||||j }t |d dd g y) Ncyrrr s rrz+LinprogHiGHSTests.test_callback..cbsrr{rrrrrrrrryr)r:rDrNotImplementedErrorr rr5)rrrTrmrnrs rrzLinprogHiGHSTests.test_callbacksv  HHb"X AAA')7ADt!$++ 7addkkB1a&Arrrr7rr6rdual_feasibility_toleranceprimal_feasibility_toleranceipm_optimality_tolerance!simplex_dual_edge_weight_strategyekkicjfd}|jjtt||y)Nc6tdj|y)Nrrr)rrs rrz7LinprogHiGHSTests.test_invalid_option_values..fs Adkk7 ;rr)r@rrr )rrrs` rtest_invalid_option_valuesz,LinprogHiGHSTests.test_invalid_option_valuess$ <t||$_a9rctd\}}}}}d}t|||||j|j}t |j dk(|jdk7y)Nr'rr<rr)rUr rrr crossover_nit)rrorprTrrsrs rtest_crossoverz LinprogHiGHSTests.test_crossovers[*1odAq!ad#DKKO S&&!+T[[K-GHrrdc  td\ t jj}j\ fd}t | d|j }t|jj| fd}t | d|j }t|jj| fd}tjd 5t |d|j }d|tj<dddt|jj fd }tjd 5t |d|j } d| tj<dddt|jj y#1swYxYw#1swY6xYw) Nrrjrc Pt|jjSNrr rr0)r1rormrprsrTrs rf_bubz/LinprogHiGHSTests.test_marginals..f_bubs(1dAtT6"&++//2s 3rz3-point)rf0c Pt|jjSrr)r1rormrnrsrTrs rf_beqz/LinprogHiGHSTests.test_marginals..f_beqs(1dD$6"&++//2s 3rc tj|gj}t|jj Srr:rDrir rr0) r1rsrormrprnrTrrrs rf_lbz.LinprogHiGHSTests.test_marginals..f_lb"s@XXq"g&((F1dD$f"&++//2s 3rignore)invalidc tj|gj}t|jj Srr) r1rsrormrprnrTrqrs rf_ubz.LinprogHiGHSTests.test_marginals..f_ub/s@XXr1g&((F1dD$f"&++//2s 3r)rtr rrrir r0rrrrr:errstateisfiniterr)rrrdfdbubrdfdbeqrdfdlbrdfdubrormrprnrsrTrqrrs` @@@@@@@@rtest_marginalsz LinprogHiGHSTests.test_marginalss-<,C)4tT6adDt#DKKOB 3 3#5$ySWWM --v6 3 3#5$ySWWM ++V4 3 3 [[ * (%dBySWWME&'E2;;r?" # (  ++U3 3 3 [[ * (%dBySWWME&'E2;;r?" # (  ++U3# ( ( ( (s:3G63GGG'c td\}}}}}}t|||||||j|j}| |j|j j zz|j|jj zz|jj z|jj z}t|ddy)Nrrrr-q=r) rtr rrrirrrrrr) rrTrmrnrorprsrresids rtest_dual_feasibilityz'LinprogHiGHSTests.test_dual_feasibility:s,;,D)4tT6adDt#DKKO dffs{{4444#))---.$$%$$% qu-rc td\}}}}}}t|||||||j|j}t j |j j|||jzz zdsJy)Nrrrr) rtr rrr:allcloserrr1rs rtest_complementary_slacknessz.LinprogHiGHSTests.test_complementary_slacknessHso,;,D)4tT6adDt#DKKO {{3;;00D4#%%<4GH!LLLrz&Upstream / Wrapper issue, see gh-20589rOc<gd}gd}gd}gd}gd}gd}tj|tj}tj|tj}tj|tj} tj j ||| ffd } tj|tj} tj|tj} tjj| d d | | | } | jd k(sJ| j}tjj| |z| z }tjj| jj}t||y ) zH Test that `linprog` now solves a poorly-scaled problem )!)@gj/aA)rNrN)rgS8(U@rrrrrrrrrrrrrrrrrrrrrrrrrrrrr)SrrrrrrrrrrrrrrrrrrrrrrrMbP?MbP<:=rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr)Srrrrrrr#r#r'r'rrryryr}r}rvrvrzrzrdrrr r r r  rrurururur=r=rrrrrrrrrrrrererererrrrrrrrrrrrrrrrrrrrr)Sr=rurrrrrrerrrrrrrrrrrrr r#rurr'rr'rrrrr rr rr=rr'rr'rrryrryrrerr}ryr}ryrrrvr}rvr}rrrzrvrzrvrrrdrzrdrzrrrrdrrdrrr rr r) rrrrrrrrrrg*aArgelaz?g?2gZPd%q?g4g̚y?gC1|g֛x?gKcgE3- w?g-.f?`gsF]Fv?g@ʥugbu?gNgжlt?g=ЂgnTs?gQ3og,'* +=r?g)[n)!rrrgl 'V3rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr8)rr)rHN)rmrnrorprsr)r:asarrayrqint32rr csr_arrayoptimizer rr1linalgnormrrr)r boundaries eq_entries eq_indizeseq_vars eq_values coefficients np_eq_entries np_eq_indizes np_eq_varsa_eqrprTresultr1n_r_xn_rs rtest_bug_20336z LinprogHiGHSTests.test_bug_20336Ss> # 9 N 3 ? T  :RZZ@  :RXX> ZZrxx8 ||%%}mZ5P&Q,4&6zz)2::6 JJ|2:: 6''4dQU/9(;}}a HH tax$/iinnV\\223U#rN)rWrXrYrrr[r\ parametrizer|r fail_slowrrrrrrrrrprps B [[ [[Y("o%rl)2.+R0;R@=rB92>BFK  !: !: I [[2/4/4b . M [[FGA$HA$rrpcbeZdZdZdZdZejjfdZ xZ S)TestLinprogSimplexDefaultci|_yrr{rs r setup_methodz&TestLinprogSimplexDefault.setup_methods  rc.tjdyNzSimplex fails on this problem.rfrs rrz'TestLinprogSimplexDefault.test_bug_5400 45rc.tjdyrrfrs rtest_bug_7237_low_tolz/TestLinprogSimplexDefault.test_bug_7237_low_tols  45rc|jjdditjt5t |dddy#1swYyxYwNr$rrr@rrr superr&r __class__s rtest_bug_8174_low_tolz/TestLinprogSimplexDefault.test_bug_8174_low_tolG UEN+ \\/ * $ G ! # $ $ $ AA) rWrXrYrrrrr[r\r __classcell__rs@rrrs066  [[$$rrc\eZdZdZdZej jfdZxZ S)TestLinprogSimplexBlandcddi|_y)NrTr{rs rrz$TestLinprogSimplexBland.setup_methods  rc.tjdyrrfrs rrz%TestLinprogSimplexBland.test_bug_5400rrc|jjdditjt5tj t 5t|!ddddddy#1swYxYw#1swYyxYwr) rr@rr r/rr rr&rs rrz-TestLinprogSimplexBland.test_bug_8174_low_tolsm UEN+ ]]> * (o. (%' ( ( ( ( ( ( (s#A>A2!A>2A; 7A>>B) rWrXrYrrrr[r\rrrs@rrrs+'6 [[((rrc8eZdZdZej dj dkZejjdZ e jjexre dfdZfdZd Ze jj$fd Zd Zd ZxZS) TestLinprogSimplexNoPresolvecddi|_y)Nr6Fr{rs rrz)TestLinprogSimplexNoPresolve.setup_methods"E* rrrvlinuxz"Fails with warning on 32-bit linux) conditionrPc"t|yr)rrrs rrz*TestLinprogSimplexNoPresolve.test_bug_5400s rc|jjdditjtd5t |cdddS#1swYyxYw)Nr$rzlinprog status 4r)rr@rr r/rrrs rtest_bug_6139_low_tolz2TestLinprogSimplexNoPresolve.test_bug_6139_low_tolsJ UEN+ ]]>1C D +7(* + + +s AAc.tjdyrrfrs rrz2TestLinprogSimplexNoPresolve.test_bug_7237_low_tolrrc|jjdditjt5t |dddy#1swYyxYwrrrs rrz2TestLinprogSimplexNoPresolve.test_bug_8174_low_tolrrc.tjdyNz#Tests behavior specific to presolverfrs rrzGTestLinprogSimplexNoPresolve.test_unbounded_no_nontrivial_constraints_1 9:rc.tjdyrrfrs rrzGTestLinprogSimplexNoPresolve.test_unbounded_no_nontrivial_constraints_2rr)rWrXrYrr:intpitemsize is_32_bitr^r_ris_linuxrr[rrrrr\rrrrrs@rrrs+ ##a'I||&&w/H [[(35 5 +6 [[$$;;rrceZdZddiZej j ejdk(dfdZ xZ S)TestLinprogIPDenserFrNz:Fails on some macOS builds for reason not relevant to testrOc"t|yrrrrs rrz TestLinprogIPDense.test_bug_6139s r) rWrXrYrrr[r]r^r_rrrs@rrrsDG [[  K  rrceZdZdddZy)TestLinprogIPSparseCholmodTrrNrWrXrYrrrrrrs !t4rrceZdZdddZdZy)TestLinprogIPSparseUmfpackTFrc.tjdy)Nz2Failing due to numerical issues on some platforms.rfrs rrz=TestLinprogIPSparseUmfpack.test_network_flow_limited_capacitys KKL MrN)rWrXrYrrrrrrrs!u5 NrrceZdZddddZej j ejdk(dej jdfdZ ej jd fd Z d Z d ZxZS) TestLinprogIPSparseTFrrsym_posrN/Fails on macOS x86 Accelerate builds (gh-20510)rOrThis test is sensitive to machine epsilon level perturbations in linear system solution in _linprog_ip._sym_solve.c"t|yrrrs rrz!TestLinprogIPSparse.test_bug_6139 rFails with ATLAS, see gh-7877c"t|yrrrrs rrz!TestLinprogIPSparse.test_bug_6690 rc td\}}}}}d}t5}tr|jt|jt d|jt d|jDcic]}||j|}}d|d<t|tt||||j|} dddt d ycc}w#1swYxYw) Nr#rzMatrix is exactly singularrFr6rrr) rUr rrrrr rr rmrnrr5) rrorprTrrsr rrrs r$test_magic_square_sparse_no_presolvez8TestLinprogIPSparse.test_magic_square_sparse_no_presolves*1odAq!  9C >* JJ(*F G JJ(G H37<<@Cdll3''@A@!AjM!T4tV!%a9C 9 5 A 9 9sAC4C  ,C CCc td\}}}}}t5}|jtd|jtd|jDcic]}||j|}}d}|D]=} | |d<t |t t||t|j|} t| d? dddycc}w#1swYyxYw) Nr#rzInvalid permc_spec option)NATURALMMD_ATA MMD_AT_PLUS_ACOLAMDr permc_specrrr) rUr rr rr rmrnrsrr5) rrorprTrr rr permc_specsrrs rtest_sparse_solve_optionsz-TestLinprogIPSparse.test_sparse_solve_options/s*1odAq!  >C JJ(A B JJ(C D37<<@Cdll3''@A@7K* > ",,atT4%)[[!==  > > >A > >s;CB>.AC>CC )rWrXrYrrr[r]r^r_xfail_on_32bitrrrr rrrs@rrr s5UCG [[  @ [[!:; ;   [[=> ? 6$>rrc eZdZdddZej j ejdk(dej jdfdZ dZ ej jd fd Z xZS) TestLinprogIPSparsePresolveT)rrrNrrOrc"t|yrrrs rrz)TestLinprogIPSparsePresolve.test_bug_6139Drrc.tjdy)Nz6_sparse_presolve=True incompatible with presolve=Falserfrs rrzBTestLinprogIPSparsePresolve.test_enzo_example_c_with_infeasibilityNs LMrrc"t|yrrrs rrz)TestLinprogIPSparsePresolve.test_bug_6690Qr r)rWrXrYrrr[r]r^r_rrrrrrrs@rrrAs48G [[  @ [[!:; ;  N [[=> ? rrc.eZdZdZdZdZdZdZdZy)TestLinprogIPSpecificrctrddd}ntrddd}ndddd}tdd\}}}t||||j|}t||||j}t |j |j dd d y) NTrFrrerrz(linprog default solver unexpected resultgV瞯C JJ~'C D JJ(G H JJ}&A B!!!DKK)-t"<>C  > 7 > >s A BBc >dg}dgdgg}ddg}dgdgdgg}gd}t5}|jt|jtdt |||||t |j d d i }dddtj d y#1swY!xYw) Nr'rrrr~rzr9rr6Frr) r rrHr r rsrrrr*s rr:z#TestLinprogIPSpecific.test_bug_8664s CaSz1vbTA3   KC JJ~ & JJ(G H!T4tV!%z56IKC K CKK!?@  K Ks ABBN) rWrXrYrrr r"r%r:rrrrrWs! F 0-8 8 Arrc:eZdZiZdZdZdZdZdZdZ dZ y) TestLinprogRSCommonc.tjdyrkrfrs rrz%TestLinprogRSCommon.test_cyclic_blandrlrc t\}}}}}}}t|||||t|j|j| }t |||t |jdyNrrx0rrrr rsrrr5rrrs r"test_nontrivial_problem_with_guessz6TestLinprogRSCommon.test_nontrivial_problem_with_guessY4F4H14tT66atT4![[$,,6K6BSWWa rc t\}}}}}}}gd}t|||||||j|j| } t | ||t | j dy)N)rrrrr,rrrr rrr5rr rrTrmrnrorprrrsrs r0test_nontrivial_problem_with_unbounded_variableszDTestLinprogRSCommon.test_nontrivial_problem_with_unbounded_variabless^4F4H14tT66FatT4![[$,,6K6BSWWa rc t\}}}}}}}gd}t|||||||j|j| } t | ||t | j dy)N)rrNrrg333333?r,rrr2r3s r.test_nontrivial_problem_with_bounded_variableszBTestLinprogRSCommon.test_nontrivial_problem_with_bounded_variabless^4F4H14tT66<atT4![[$,,6K6BSWWa rc t\}}}}}}}dg}tjgd}d}gd}t|||||||j|j | } t | ||t| jdy)Nr')gibl3g%G/?rrg@Q$@)rr6rr7r,rr) rr:rDr rrr5rrr3s r8test_nontrivial_problem_with_negative_unbounded_variablezLTestLinprogRSCommon.test_nontrivial_problem_with_negative_unbounded_variablesy4F4H14tT66s67?atT4![[$,,6K6BSWWa rc t\}}}}}}}gd}t|||||t|j|j| } t | j dyN)rrr#rgr,ryrr rsrrrr rrTrmrnrorprr bad_guessrs r&test_nontrivial_problem_with_bad_guessz:TestLinprogRSCommon.test_nontrivial_problem_with_bad_guessR4F4H14tT66! atT4![[$,,9NSZZ#rctd\}}}}}tjj|j}t 5}|j td|j td|j tt||||j}t||||j|j}t||z|||j|j} dddtdt|jdt t!| jjky#1swYZxYw) Nr#rr)rorpr)rorprr-rrr)rUr:r;rGrHr rr rHrr rr1r5rrr) rrRrSrTrrr rr4res3s r%test_redundant_constraints_with_guessz9TestLinprogRSCommon.test_redundant_constraints_with_guesss$Q 1aA IINNAGG $   PC JJ(A B JJ~'B C JJ} %!!!DKK@C111T[[SUUKD1q5qqOD  P +6TXXq!377"# P Ps B&EE N) rWrXrYrrr/r4r8r:r@rDrrrr(r(s*G8!!! !$ $rr(ceZdZddiZy)TestLinprogRSBlandpivotrNrrrrrFrFs  GrrFceZdZdZiZdZy)TestLinprogHiGHSSimplexDualrc |t\}}}}t|||||j|j}t |j dt |jdut tj|jdkDt tj|j|Dcgc]\}}|tjn|c}}kt tj|j|Dcgc]\}}|tj n|dz c}}k\ycc}}wcc}}w)z The scaled model should be optimal, i.e. not produce unscaled model infeasible. See https://github.com/ERGO-Code/HiGHS/issues/494. )rmrnrsrrrNgưr) rr rrrrrr1r:allrrh)rrTrmrnrrrqrrs rtest_lad_regressionz/TestLinprogHiGHSSimplexDual.test_lad_regressions124tadd![[$,,@SZZ#T!"syy5()*suu/3!5%+R,.:2!=!556 7suu/3!5%+R-/J"&&BI!E!556 7!5!5s 1D2"D8N)rWrXrYrrrLrrrrIrIs FG7rrIceZdZdZiZy)TestLinprogHiGHSIPMrN)rWrXrYrrrrrrNrN s FGrrNcreZdZdZiZej jdej je jdkxre jdk(dddZ d Zd Zd Zd Zej j$d Zej j$dZdZdZy)TestLinprogHiGHSMIPrrdlLinuxFzgh-16347)rrunrPc d}t|\}}}}}dgt|z}dgt|z}t|dz||||j|} |j | j zj |dz||} tj| d} tjj| jd|tjj| jd|tjjtj| j|tjjtj| dddddfj|tjj| j tj| j d y) Nr'rrrrTrorprsrrrrHr7rr) rUrr rrCr1r>r:rhrrdiaground) rrIrRrSrTrLrKrsrrssquares r test_mip1zTestLinprogHiGHSMIP.test_mip1 sT *1o1a!CF"cCFl !!!F![[kC__  & / /1a ;" ""6::1:#5q9 ""6::1:#5q9 ""2776?#6#6#8!< ""2776!TrT'?#;#?#?#A1E ""355"((355/"Frctjddgddgg}tjddg}tjddg }tjdtjfgt|z}tj|}t |||||j | }tjj|jddgtjj|jd y) Nrrr~rdr7rrrr r{) r:rDrhr ones_liker rrrr1r0rs r test_mip2zTestLinprogHiGHSMIP.test_mip2( s xx!R2r(+,xxR! XXq!f  Arvv;-#a&01ll1o 4![[kC ""3551a&1 ""377B/rctjddgddgddgg}tjgd}tjddg }dtjfgt|z}dgt|z}t |||||j |}tj j|jdtj|jddgs%tj|jddgsJyy) Nr7rr#rr rr r) r:rDrhrr rrrr0rr1rs r test_mip3zTestLinprogHiGHSMIP.test_mip3; sxx"a1a&1a&12xx $ XXq!f  bff+Q'cCFl 4![[kC ""377B/{{3551a&)R[[A-GGG-G)rctjddgddgddgg}tjgd}tjddg}dtjfgt|z}ddg}t |||||j | }tj j|jd d gtj j|jd y) Nr7rrrr)ruirervrr g@r};) r:rDrhrr rrrr1r0rs r test_mip4zTestLinprogHiGHSMIP.test_mip4L sxx"bB8aV45xx & HHaV bff+Q'!f 4![[kC ""3553(3 ""377B/rc tjgdg}tjdg}tjgdg}tjdg}tjgd}dtjfdtjfdg}gd}t|||||||j| }tj j |jgd tj j |jd |jd dJ|jd dJ|jddJy)Nrr})r'rrr )r{rr7rrr9)rTrmrnrorprsrr)rryrimip_node_countmip_dual_boundmip_gap) r:rDrhr rrrr1r0r>) rrmrnrorprTrsrrs r test_mip5zTestLinprogHiGHSMIP.test_mip5\ s xx $xx}xx $xx~ HH\ "bff+266{F3 4d#DKK"-/ ""355)4 ""377C0ww'.:::ww'.:::wwy$'333rcdtjgdgdgdgdg}tjgd}tjgd}dtjfgdz}d gdz}t|||||j| }tj j |jd y) Nrrrrrr#rur'rrrrrrrrrurrr&rr)rrrrrlrrii(i:,i/rrdrrr}rr}r#rrvrrTi>)r:rDrhr rrrr0)rrorprTrsrrs r test_mip6zTestLinprogHiGHSMIP.test_mip6t sxx8999;<xx34 HH0 1bff+qc!e 4![[kC ""377D1rc 6tjgdgdgdgdg}tjgd}tjgd}dtjfgdz}d gdz}gd }g}|D]G}t|tt ||||j |d |i } | d } | |ksJ|j| Itjtj|} tj| dk\sJtj| dk(rJy)Nrhrirkrmrorprrvr)rgg?g{Gz?r mip_rel_gap) rTrmrnrorprsrrrre) r:rDrhr rmrnrrBdifffliprK) rrorprTrsr mip_rel_gaps sol_mip_gapsrsr final_mip_gap gap_diffss rtest_mip_rel_gap_passdownz-TestLinprogHiGHSMIP.test_mip_rel_gap_passdown s xx8999;<xx34 HH0 1bff+qc!e /  ' /KADt$T!' &1#0+">@C NM!K/ //    . /"GGBGGL12 vvi1n%%%66)q.))))rc:tjgd}tjddgddgddgddgg}tjgd}t|||d}tjj |j gd|j dk(sJy) N)rrr7r7rgr-)rr#rr#r)rsrr)rrr-rr)r:rDr rrr1r)rrTrsrrs rtest_semi_continuousz(TestLinprogHiGHSMIP.test_semi_continuous s HH% &C:SzC:SzJKhh|, a"-g? ""355.9zzQrc $ddg}ddgg}dg}t|||ddg}t|||tjddg}t|||d}t|j|jt|j|jy)z Test that when integrality is a list of all zeros, linprog gives the same result as when it is an array of all zeros / integrality=None rr7rrrN)r r:rrr1)rrTrmrnr3r4rCs rtest_bug_20584z"TestLinprogHiGHSMIP.test_bug_20584 s FQyvqt$QFCqt$BJJ1vs rr@z6TestAutoscaleRS.test_nontrivial_problem_with_bad_guess rArN)rWrXrYrr/r@rrrrr s F!$rrceZdZdZeZej ZejZejZ ejZ ejZ y)RRTestsrN) rWrXrYrrLCTrtest_RR_infeasibilityrMrr test_NFLCrrrrrr sE F CDD''N%%M66I11rrceZdZddiZy) TestRRSVDrSVDNrrrrrr s E"GrrceZdZddiZy) TestRRPivotrrGNrrrrrr s G$GrrceZdZddiZy)TestRRIDrIDNrrrrrr s D!Grr)NN:0yE>r)r)rrvrzr$)XrZr^r_numpyr:numpy.exceptionsr numpy.testingrrrrrr rr rscipy.optimizer r scipy.optimize._numdiffr scipy.sparse.linalgr scipy.linalgr scipy.sparserrscikits.umfpackr ImportErrorrsksparsesksparse.cholmodrcholmodrr!r$r(r5rUrbrtrrrr[r\rrrrrrmrnrorprsrfilterwarningsrardrirprrrrrrrrrr(rFrIrNrPrrrrrrrrrrrrsN 6OO*351&  . 4 L F E K6:$(.(?D6 - 5 F4> 9 9>%%*#ZE     A.A.R*89,:89B'B:B898'8:8:s$*s$v$ 3$,(1($&;#6&;\    5^5N^N3>.3>l . ,89<A<A:<AH<$.<$~!!7"378+~%~%L8955:52n2>$n$.8922:2##%'%"w"uOKKs$J1 J?1J<;J<?K  K