+
    /i{I              	          R t ^ RIt^ RIt^ RIt^ RIHtHt ^ RIt^RI	H
t
 ^ RIHtHtHt ^ RIHt ]P"                  R%8  tR t]P(                  P+                  RRR	7      R
 4       tR tR tR tR tR tR tR t]P(                  P<                  R 4       tR t Rt!Rt"]P(                  P+                  RR7      ]P(                  PG                  ]PH                  ! ^ 4      PJ                  ^8  RR7      ]P(                  PL                  ]P(                  PO                  RR.RR/]!3R^/]"3.4      R 4       4       4       4       t(R t)]P(                  P<                  R  4       t*]P(                  P+                  R!R7      R" 4       t+R# t,R$ t-R# )&z0
Unit test for Mixed Integer Linear Programming
N)assert_allcloseassert_array_equal)magic_square)milpBoundsLinearConstraint)sparsec            
         R p \         P                  ! \        V R7      ;_uu_ 4        \        \        P
                  ! ^ ^ .4      4       RRR4       Rp \         P                  ! \        V R7      ;_uu_ 4        \        \        P                  ! R4      4       RRR4       \         P                  ! \        V R7      ;_uu_ 4        \        . 4       RRR4       \         P                  ! \        V R7      ;_uu_ 4        \        R4       RRR4       Rp \         P                  ! \        V R7      ;_uu_ 4        \        ^^
R7       RRR4       Rp \         P                  ! \        \        P                  ! V 4      R7      ;_uu_ 4        \        ^^
R7       RRR4       \         P                  ! \        \        P                  ! V 4      R7      ;_uu_ 4        \        \        P                  ! ^4      . RO.^^.^^.3R7       RRR4       \         P                  ! \        \        P                  ! V 4      R7      ;_uu_ 4        \        \        P                  ! ^4      ^^..^.\        P
                  ! ^.4      3R7       RRR4       Rp \         P                  ! \        \        P                  ! V 4      R7      ;_uu_ 4        \        \        P                  ! ^4      ^^..^.^.3R7       RRR4       R	p \         P                  ! \        V R7      ;_uu_ 4        \        ^^.\        P
                  ! ^^.4      R
7       RRR4       Rp \         P                  ! \        V R7      ;_uu_ 4        \        . RO^^.R
7       RRR4       \         P                  ! \        V R7      ;_uu_ 4        \        . RO. ROR
7       RRR4       Rp \         P                  ! \        V R7      ;_uu_ 4        \        . RO^^.\        P
                  ! ^^.4      3R7       RRR4       Rp \         P                  ! \        V R7      ;_uu_ 4        \        . RO^^.. RO3R7       RRR4       \         P                  ! \        V R7      ;_uu_ 4        \        . RO. RO^^.3R7       RRR4       Rp \         P                  ! \        V R7      ;_uu_ 4        \        . RO^^.^^.3R7       RRR4       \         P                  ! \        V R7      ;_uu_ 4        \        . RO. RO. RO3R7       RRR4       \         P                  ! \        V R7      ;_uu_ 4        \        . RO. RO\        4       ^^.3R7       RRR4       R#   + '       g   i     EL4; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELN; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL4; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELZ; i  + '       g   i     EL*; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     R# ; i)z`c` must be a dense arraymatchNz:`c` must be a one-dimensional array of finite numbers withz3`bounds` must be convertible into an instance of...boundsz<`constraints` (or each element within `constraints`) must be)constraintsz,The shape of `A` must be (len(b_l), len(c)).z#`integrality` must be a dense array)integralityzJ`integrality` must contain integers 0-3 and be broadcastable to `c.shape`.z,Lower and upper bounds must be dense arrays.z6`lb`, `ub`, and `keep_feasible` must be broadcastable.z5`bounds.lb` and `bounds.ub` must contain reals and...)      )      r   )r      r   )r   r   r   )z3+4r   r   )pytestraises
ValueErrorr   r   	coo_arraynpzerosreescapeset)messages    \/var/www/html/photoedit/myenv/lib/python3.14/site-packages/scipy/optimize/tests/test_milp.pytest_milp_ivr       s?   )G	z	1	1Vq!f%& 
2 KG	z	1	1RXXf 
2	z	1	1R 
2	z	1	1T
 
2 DG	z	1	1Qr 
2 MG	z7);	<	<QB 
=	z7);	<	<RXXa[	{QFQF&CD 
=	z7);	<	<RXXa[Ax!f6F6Fs6K&LM 
= =G	z7);	<	<RXXa[Ax!qc&:; 
= 4G	z	1	1aV!1!11a&!9: 
2G	z	1	1YQF+ 
2	z	1	1YI. 
2 =G	z	1	1YA(8(8!Q(@AB 
2 GG	z	1	1YA	23 
2	z	1	1Y	Aq623 
2 FG	z	1	1YAA/0 
2	z	1	1Y	=9: 
2	z	1	1Y	CE1a=9: 
2	1k 
2	1	1 
2	1	1	1	1	1	1	1	1 
2	1	1 
=	<	<	<	<	<	<	<	< 
=	<	< 
2	1	1
 
2	1	1	1	1	1 
2	1	1 
2	1	1	1	1	1 
2	1	1	1	1	1	1	1	1s   "U47 VV;V05WW,W,?>X ?*X&X(+X<)Y)*Y$Y8ZZ 	Z4[4V	V	V-	0W	W	W)	,W=	 X	X%	(X9	<Y	Y!	$Y5	8Z		Z	 Z1	4[	[	Fz%Needs to be fixed in `_highs_wrapper`)runreasonc                    R pRR/p\         P                  ! \        VR7      ;_uu_ 4        \        ^VR7       RRR4       \	        ^4      w  r4rVpRRRRR	R
/p\        WSWD3R^VR7      pV P                  4       p	RV	P                  9   g   Q hRV	P                  9   g   Q hVP                  '       d   Q hR#   + '       g   i     L; i)z*Unrecognized options detected: {'ekki'}...ekkiTr
   )optionsNdisppresolveF
time_limit皙?cr   r   r   r%   zPresolve is switched offzTime Limit Reached    r   )r   warnsRuntimeWarningr   r   
readouterroutsuccess)
capsysr   r%   Abr+   numbersMrescaptureds
   &         r   test_milp_optionsr:   N   s     ;GtnG	nG	4	4Q  
5 'q/A!atZdCG
A	&a C   "H%5558<<///{{{?{ 
5	4s   B55C	c                     \        ^4      w  rr#p\        W W3R^R7      pVP                  ^ 8X  g   Q hVP                  '       g   Q hRpVP                  P                  V4      '       g   Q h\        VP                  \        P                  4      '       g   Q h\        VP                  \        4      '       g   Q h\        VP                  \        4      '       g   Q h\        VP                  \        4      '       g   Q h\        VP                  \        4      '       g   Q h\        ^4      w  rr#p\        V^ ,          WV3R^RR/R7      pVP                  ^8X  g   Q hVP                  '       d   Q hRpVP                  P                  V4      '       g   Q hVP                  VP                  u;J d:   VP                  u;J d)   VP                  u;J d   VP                  u;J d    e   Q h Q h\        ^RR7      pVP                  ^8X  g   Q hVP                  '       d   Q hR	pVP                  P                  V4      '       g   Q hVP                  VP                  u;J d:   VP                  u;J d)   VP                  u;J d   VP                  u;J d    e   Q h Q h\        R4      pVP                  ^8X  g   Q hVP                  '       d   Q hR
pVP                  P                  V4      '       g   Q hVP                  VP                  u;J d:   VP                  u;J d)   VP                  u;J d   VP                  u;J d    e   Q h Q hR# )r   r+   r   r   r   z6Optimization terminated successfully. (HiGHS Status 7:r(   r)   r*   %Time limit reached. (HiGHS Status 13:Nr   z+The problem is infeasible. (HiGHS Status 8:z+The problem is unbounded. (HiGHS Status 10:r,   )r   r>   )r   r   statusr2   r   
startswith
isinstancexr   ndarrayfunfloatmip_node_countintmip_dual_boundmip_gap)r4   r5   r+   r6   r7   r8   msgs          r   test_resultrK   b   s   &q/A!a
A	&a
HC::??;;;;
BC;;!!#&&&&ceeRZZ((((cggu%%%%c((#....c((%0000ckk5))))&q/A!a
11)F$d+-C::??{{{?
1C;;!!#&&&&GGs)) 3S[[ 3!!3%(UU3.23 4 3 4 3 q
!C::??{{{?
7C;;!!#&&&&GGs)) 3S[[ 3!!3%(UU3.23 4 3 4 3 r(C::??{{{?
7C;;!!#&&&&GGs)) 3S[[ 3!!3%(UU3.23 4 3 4 3    c                  p    \        ^4      p V P                  ^ 8X  g   Q h\        V P                  ^ .4       R# )r   N)r   rD   r   rB   )r8   s    r   test_milp_optional_argsrN      s+    
q'C77a<<suuqc"rL   c            	      0   ^p \        V 4      w  rr4p\        P                  ! V4      p\        V^ ,          WV3R^R7      p\        P
                  ! VP                  4      pVP                  4       V,          P                  V ^,          W 4      p\        P                  ! V^ R7      p	\        P                  P                  V	P                  ^ R7      V4       \        P                  P                  V	P                  ^R7      V4       \        P                  P                  \        P                  ! V	4      P                  4       V4       \        P                  P                  \        P                  ! V	RRRR13,          4      P                  4       V4       R# )r   r<   )axis:NNNNr,   r>   )r   r   	csc_arrayr   r   roundrB   flattenreshapesumtestingr   diag)
nr4   r5   r+   r6   r7   r8   rB   ssquares
             r   test_milp_1r[      s   	A&q/A!aA
11)F
JC 	A		Q	''1a3AVVAAFJJvzzqz115JJvzzqz115JJrwwv224a8JJrwwva2g7;;=qArL   c                     \         P                  ! ^4      ) p R	^.R
^
..p^\         P                  ) .p\         P                  ^.p\        WV4      p\	        WW#3RR7      p\	        WRR7      p\	        WW#3.RR7      p\	        W.RR7      p\	        V RVR,          VR,          VR,          3VR,          VR,          VR,          3.R7      p	\	        V R\        VR,          VR,          VR,          4      \        VR,          VR,          VR,          4      .R7      p
\	        V RVR,          VR,          VR,          3\        VR,          VR,          VR,          4      .R7      p\         P
                  ! VP                  VP                  VP                  VP                  V	P                  V
P                  VP                  .4      p\         P
                  ! VP                  VP                  VP                  VP                  V	P                  V
P                  VP                  .4      p\         P                  P                  V\         P                  ! ^^.VP                  4      4       \         P                  P                  VR4       \	        WW#3R7      p\         P                  P                  VP                  ^R.4       \         P                  P                  VP                  R4       R# )r   Tr+   r   r   :Nr   N:r   NN)r+   r   r   r+   r   g      @Nig      !)r   onesinfr   r   arrayrB   rD   rV   r   broadcast_toshape)r+   r4   b_lb_ulinear_constraintres1res2res3res4res5res6res7xsfunsr8   s                  r   test_milp_2rr      sP   
 
A
a2r(Arvvg,C662,C(5 !SDAD!ED!c-dCD!!4$GD!eSWc"g6eSWc"g689D !-aeSWc"gF-aeSWc"gFHID !eSWc"g6-aeSWc"gFHID 
466466466466466466466J	KB88TXXtxxXXtxx488= >DJJr2??Aq6288#DEJJtR( C
.CJJsuuq#h/JJsww-rL   c                  >   ^ R.p R^.^^.^^..p. ROp\         P                  ! V\         P                  ) \         P                  R7      p\	        WV4      p\         P
                  ! V 4      p\        WVR7      p\        VP                  R	4       \         P                  ! VP                  ^^.4      '       g,   \         P                  ! VP                  ^^.4      '       g   Q h\        WR7      p\        VP                  R
4       \        VP                  RR.4       R# )r-   dtyper]   r^   gffffff@g?Nr>   )r      rv   r_   gffffff)r   	full_likerb   float64r   	ones_liker   r   rD   allcloserB   )r+   r4   rg   rf   r   r   r8   s          r   test_milp_3r{      s     
BA
a1a&1a&!A
C
,,sRVVG2::
6C"13/K,,q/K 
ECCGGR ;;suuq!f%%SUUQF)C)CCC 
,CCGGT"CEEC:&rL   c                  z   ^^.p ^ ^.p^^.RR.^^..pR\         P                  ) \         P                  ) .p\         P                  R^.p\        W#V4      p\        \         P                  ) \         P                  4      p\	        WVVR7      p\        VP                  ^;4       \        VP                  R^.4       R# )   r   r   r   g      @Nr>   ii)r   rb   r   r   r   r   rD   rB   )r+   r   r4   rf   rg   r   r   r8   s           r   test_milp_4r      s     
AAa&K
Q"bAq6"A"&&
!C663
C"13/KRVVGRVV$F
q&&(CCGGR CEEC8$rL   c                     . ROp . ROp. ROp\         P                  \         P                  ^.p\        W#4      p. RO. RO.p\         P                  ) ^.p^^.p\        WVV4      p\	        WVVR7      p	\        V	P                  R4       R# )	r   r~   N)r`   r_   r>   )r-   r-   r   )r-   r-   r-   )r   r   r   )r   r   r   i)r   rb   r   r   r   r   rD   )
r+   r   lbubr   r4   rf   rg   r   r8   s
             r   test_milp_5r      s     	AK	B
&&"&&!	BB^F	IAFF7B-Cb'C"13/K
q&&(C CGGS!rL   c                      ^p \         P                  ! . RO. RO. RO. RO.4      p\         P                  ! . RO4      p\         P                  ! . R	O4      p\        W1W"3V R7      p\         P                  P	                  VP
                  R4       R# )
r   r]   i>  N         !      r      r   '      r      r               r         r   &   r   r   )   r   r   $   r   r   r   r   i  i(  i:,  i/  r   
   r         r   r   r   )r   rc   r   rV   r   rD   )r   A_eqb_eqr+   r8   s        r   test_milp_6r     sq     K8845557 8D 88/0D
,-A
t 2
LCJJsww-rL   c                  *   R R.p ^ ^.p^ \         P                  ) .p\         P                  \         P                  .p\        W#4      pRR ..pR.p\        WVV4      p\	        WVVR7      p\         P
                  P                  VP                  ^4       R# )      ?        g      ?r~   N)r   rb   r   r   r   rV   assert_equalr?   )	r+   r   r   r   r   r   r   r   r8   s	            r   test_infeasible_prob_16609r     s     
c
Aa&K
bffWB
&&"&&	BB^F#J<D5D"4t4K
q&&(CJJCJJ*rL   r=   z*Iteration limit reached. (HiGHS Status 14:z-Often buggy, revisit with callbacks, gh-19255)r"   zUnhandled 32-bit GCC FP bugr%   rJ   r(   g?
node_limitc                    \         P                  P                  R 4      pVP                  ^ ^RR7      p\         P                  ! ^d\         P
                  ) R7      p\         P                  ! ^d^R7      p\        W4V4      p\         P                  ! ^d4      p\         P                  ! ^d4      p\        Wx4      p	\         P                  ! ^d4      p
\         P                  ! ^d4      ) p\        VV
V	VV R7      pVP                  P                  V4      '       g   Q hVR,          f   Q hVR,          pRp\         P                  ! WN,
          W=,          8*  4      '       d,   \         P                  ! W=,          W^,           8*  4      '       g   Q h\         P                  ! W~,
          V8*  4      '       d&   \         P                  ! WV,           8*  4      '       g   Q h\         P                  ! V\         P                  ! V4      4      '       g   Q hR# )   $s8 size
fill_value)r   r   r   r%   rB   Ng:0yE>)d   r   )r   randomdefault_rngintegersfullrb   r   r   ra   r   r   r   r@   allrz   rR   )r%   rJ   rngr4   b_lbb_ubr   variable_lbvariable_ubvariable_boundsr   c_vectorr8   rB   tols   &&             r   test_milp_timeout_16545r   *  s|    ))

 3
4CQ
+A773BFF7+D7732&D"1D1K((3-K''#,K[6O''#,K}H
C ;;!!#&&&&s8 	CA
C66$*%&&266!%4:2E+F+FFF66+#q())bffQ:K5K.L.LLL;;q"((1+&&&&rL   c                     \         P                  P                  R 4      p V P                  ^ ^RR7      p\         P                  ! ^\         P
                  ) R7      p\         P                  ! ^^
R7      p\        VR,          VR,          VR,          4      \        VR,          VR,          VR,          4      \        VR,          VR,          VR,          4      .pVR,          VR,          VR,          3VR,          VR,          VR,          3VR,          VR,          VR,          3.p\         P                  ! ^4      p\         P                  ! ^4      p\        Wg4      p\         P                  ! ^4      ) p	\        WVR7      p
\        WVR7      p\        WWV3R7      pV
P                  '       d   VP                  '       g   Q h\        V
P                  VP                  4       \        VP                  VP                  4       R# )	r   r   r   :Nr   N:r   r   N:r   NN)r   r   N)   r   )r   r   r   r   r   rb   r   r   ra   r   r   r2   r   rB   )r   r4   blbur   constraints2r   r   r   r+   ri   rj   refs                r   test_three_constraints_16878r   P  s    ))

 3
4CQ'A	w	'B	r	"B#AbE2b62b6:#AcFBsGRW=#AbE2b62b6:<K rUBrFBrF+sVRWbg.rUBrFBrF+-L 
!B	BRnO	A{CD|DD
qqbk
BC<<<DLLL((DFFCEE"DFFCEE"rL   c            	      T   \         P                  ! . RO. RO. RO. RO.4      p \         P                  ! . R	O4      p\         P                  ! . R
O4      p. ROp. pV F  p\        V^ \         P                  3WV3RRV/R7      pVP                  V8:  g   Q hVP                  VP
                  VP                  ,
          VP
                  ,          8X  g   Q hVP                  VP                  4       K  	  \         P                  ! \         P                  ! V4      ^ 8  4      '       g   Q hR# )r   Tmip_rel_gap)r+   r   r   r   r%   Nr   r   r   r   r   r   )g      ?g{Gz?gMbP?)
r   rc   r   rb   rI   rD   rH   appendr   diff)r   r   r+   mip_rel_gapssol_mip_gapsr   r8   s          r   test_mip_rel_gap_passdownr   i  s    
 8845557 8D 88/0D
,-A&LL#Q266{T8J#m[-IK {{k))){{sww););;SWWDDDDCKK( $ 66"'','!+,,,,rL   z&Upstream / Wrapper issue, see gh-20116c                     Rp \         P                  ! RV .RV ) ..4      p\         P                  ! V ^ .4      p\        WR7      p\        ^ ^ .^^.4      p\         P                  ! ^ ^ .4      p\	        WSV^R7      pVP
                  ^ 8X  g   Q h\         P                  ! WP                  ,          V8  4      '       g   Q hR# )r   gi oY@)r4   r   r<   Nl    J))r   rc   r   r   r   r?   r   rB   )hr4   r5   r   r   r+   r8   s          r   test_large_numbers_gh20116r     s    A
8Q-(QB01A
!QA"Q-KQFQF#F
!QA
F
JC::??66!ee)a-    rL   c                  "   ^ RI Hp  ^ RIpVP                  pVP                  ! . R
O4      pVP                  ! . RO. RO. RO. RO. RO. RO. RO. RO. RO.	4      pVP                  ! V) V) V) V) V) V) V) V) V) .	4      pVP                  ! . RO4      p\        WEV4      p^pRp	V ! W7WRR/R7      p
V ! W7WRR/R7      pV
P                  VP                  8X  g   Q h\        V
P                  VP                  4       \        ^ ^R7      p	. ROp. ROp. RO. RO. RO. RO. RO. RO. RO. RO.p. ROp\        WLR7      pV ! W7V	VRR/R	7      p
V ! W7V	VRR/R	7      pV
P                  VP                  8X  g   Q h\        V
P                  VP                  4       R# ) r-   )r   Nr'   T)r+   r   r   r   r%   F)r   r   )r   r*   )g4xgUigYnaěg)t;*g&QgZRgR߿g]XPC޿g>]ٿgLYT]ؿ1V׿r   gщoֿgz|RXo5Կg[TrfʿgL鿿g2wVj./r   r          r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r         9r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r         r   r   r   r   r   r   r   r   r          @r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )	g      Y@r   r   r   r   r   r   r   r   r,   )r   r   r-   r-   )r   gw0#@igx0Í)r-   r-   r   r   )   r-   r-   r-   )r-   r   r-   r-   )r-   r-     r-   )r-   r-   r-   r   )r>   r-   r   r-   )r>   r>   r-   r   )r   r   r   r     r   r-   r-   )scipy.optimizer   numpyrb   rc   r   r?   r   rD   r   rB   )r   r   rb   r+   r4   r   r   r   r   r   r1r2r   s                r   test_presolve_gh18907r     s   #
&&C 	 6 	7A 	 KPMLOLJLP!Q 	RA$ 
C4#tcTC4#tcTC4H	IB	8	9B"1"-KKF	!4(
*B	!5)
+B99		!!!BFFBFF# qQFK.A	|^^	/=.	JA	+B"1,K	F%
E/B
DB	F%
E/B
DB99		!!!BDD"$$rL   c            	         \         P                  ! ^\         P                  R7      p V P                  4       p\         P                  ! . RO\         P                  R7      p\         P                  ! . RO. RO. RO. RO. R	O. R
O.\         P                  R7      p\        WW2V3R7      pVP                  '       g   Q h\        W4P                  ,          V4       R# )r}   rt   )r   r   N)*      i  r      0   )r-   r   r   r-   r   r-   r-   r-   )r-   r-   r   r   r   r-   r   r   )r   r   r   r   r   r   r-   r   )r-   r   r-   r   r   r   r-   r-   )r-   r   r-   r-   r   r   r-   r   )r-   r   r   r   r-   r   r   r-   )	r   ra   int64copyasarrayr   r2   r   rB   )r+   r   r5   ar8   s        r   test_regression_gh24141r     s    
"A&&(K


.bhh?A


       XX	A qay
AC;;;;AIq!rL   l        ).__doc__r   sysr   r   numpy.testingr   r   r   test_linprogr   r   r   r   r   scipyr   maxsize	_IS_32BITr    markxfailr:   rK   rN   r[   rr   r{   r   r   xslowr   r   	_msg_time	_msg_iterskipifintpitemsizeslowparametrizer   r   r   r   r   r    rL   r   <module>r      s   
 
  =  & 9 9  [[5 	9;x uA  CC$%4P#B"".J'.%""& . . +& 4	8	 IJBGGAJ''!+8  :)U+c/BI.N0<a/@).L.N O'O : K'@#2 - -8 BC	! D	!7 r"rL   