
    sgM#                        d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZmZmZmZmZmZm Z m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z)  e#d      Z* e#d      Z+d Z,d Z-d Z.d Z/y)    )Rational)EqNe)symbols)sympify)S)randomchoice)sqrt)	randprime)Matrixlinear_eq_to_matrix)
_lp_primal_dualUnboundedLPErrorInfeasibleLPErrorlpminlpmax_m_abcd_simplexlinprog)import_module)raises)xyznumpyscipyc            
      h   t         dt        z  z   dk  t         dt        z  z
  dk  dt        z  t         z   dt        z  z   dk  t        dk\  t         dk\  t        dk\  g} t         t         z
  dt        z  z
  }t        t        ||       x}\  }}|t        ||       k(  sJ |j                  |      |k(  sJ | D ]  }|j                  |      dk(  rJ  t        t         z
  dt        z  z   dk  t         dt         z  z   dt        z  z
  dk  dt        z  t         z   dt        z  z
  dk  t        dk\  t         dk\  t        dk\  g} t         t         z
  dt        z  z
  }t        t        ||       x}\  }}|t        ||       k(  sJ |j                  |      |k(  sJ | D ]  }|j                  |      dk(  rJ  t        t         z
  dt        z  z   d	k  t         dt         z  z   dt        z  z
  d
k  dt        z  t         z   dt        z  z
  dk  t        dk\  t         dk\  t        dk\  g} d}t         t         z
  dt        z  z
  |z   }t        t        ||       x}\  }}|t        ||       k(  sJ |j                  |      |k(  sJ | D ]  }|j                  |      dk(  rJ  t        d      x}\  }}	}
}||	z
  d|
z  z
  |z
  dk  d|z  |
z   d|z  z
  dk  d|z  |	z   |z   dk  |d|	z  z
  d|
z  z
  |z
  g|D cg c]  }|dk\  	 c}z   } }t        t        ||       x}\  }}|t        ||       k(  sJ |d|d|	d|
d|difk(  sJ t        t         z
  dt        z  z   d	k  t         dt         z  z   dt        z  z
  d
k  dt        z  t         z   dt        z  z
  dk  gt        t         t        fD cg c]  }|dk\  	 c}z   } t         t         z
  dt        z  z
  }t        t        ||       \  }}|j                  |      |k(  sJ | D ]  }|j                  |      dk(  rJ  t        t         z
  t        d      t        z  z   d	k  t         dt         z  z   dt        z  z
  d
k  dt        z  t         z   dt        z  z
  dk  t        t        fd       t        dk\  t        t        fd       t        dk  t        t        fd       t        dkD  t        t        fd       t        t        d      t        t        fd       dd}t        t        t               t        t         t              t        dk  g} t        }t        t        ||       x}\  }}|t        ||       k(  sJ |j                  |      |k(  sJ | D ]  }|j                  |      dk(  rJ  y c c}w c c}w )N            r   T   
   x1 x2 x3 x4      g       @g      @c                  X    t        t        t         t        z
  dt        z  z
   g      S )Nr&   )lpmaxr   r   r   )r1r2r3s   S/var/www/html/venv/lib/python3.12/site-packages/sympy/solvers/tests/test_simplex.py<lambda>ztest_lp.<locals>.<lambda>Y   s$    bqbd1Q3hR=     c                  0    t        t        t         g      S Nr/   r0   r   r1   s   r4   r5   ztest_lp.<locals>.<lambda>\   s    RQ%5 r6   c                  2    t        t        t         g      S r8   r9   )r1   r2   s   r4   r5   ztest_lp.<locals>.<lambda>^   s    ba"b&: r6   c                  0    t        t        t         g      S r8   r9   r:   s   r4   r5   ztest_lp.<locals>.<lambda>b       ba". r6   c                  0    t        t        t         g      S r8   r9   r:   s   r4   r5   ztest_lp.<locals>.<lambda>f   r>   r6   c                     fdt        d| dz   z        }t        |      D cg c]  }t        fd|D                      k    }}t        fd|D              }|||fS c c}w )Nc                      t               k  rt        d      S t        d      D  cg c]  } t        dd       c} \  }}t	        ||      t        ddg      z  S c c} w )Nr   r"      r;   r-   )r	   r   ranger   r   r
   )_int1int2sparsitys      r4   randz2test_lp.<locals>.make_random_problem.<locals>.randi   sU    x("qz!5:1X>)As+>JD$D$'Aw77 ?s   Azx1:%sr-   c              3   2   K   | ]  }        |z    y wr8    .0r   rH   s     r4   	<genexpr>z7test_lp.<locals>.make_random_problem.<locals>.<genexpr>o   s     8DF1H8   c              3   2   K   | ]  }        |z    y wr8   rJ   rK   s     r4   rM   z7test_lp.<locals>.make_random_problem.<locals>.<genexpr>q   s     6q
6rN   )r   rC   sum)nvarnum_constraintsrG   	variablesrD   constraints	objectiverH   s     `    @r4   make_random_problemz$test_lp.<locals>.make_random_problemh   ss    	8
 Gtax01	 %o 68 8i88DFB 8 86I66	+y008s   #A$)r"   r"   g?)r   r   r   r/   r0   r   subsr   r   r   	TypeErrorr   r   r   r   )rT   rU   ansoptimumargmaxconstrconstvx1x2x3x4irV   r1   r2   r3   s                 @@@r4   test_lprd      s   	
QqSAB
acRB	
1q1Q3!	Br2qAvqAvqAv6KQQIsI{;;C/'6%	;////>>&!W,,, +{{6"d***+ 
Q1	B
acAaC2	B	
1q1Q3"	Br2qAvqAvqAv6KQ1IsI{;;C/'6%	;////>>&!W,,, +{{6"d***+ 
Q1	B
acAaC1	B	
1q1Q3"	Br2qAvqAvqAv6KE1QqSIsI{;;C/'6%	;////>>&!W,,, +{{6"d***+ !//ABB	b1R4"		!B	
2AbDA	B	BbA	B!B$Y2-2RRLDQD 5{IsI{;;C/'6%	;////1r1b!RB23333 
QQ"	B
acCE	Q	B	
1q1Q3"	Br2,1a)!<Q!q&!<<K1QqSIi5OGV>>&!W,,, +{{6"d***+ 
Qa1		"B
acAaC1	B	
1q1Q3"	B
9=>	
aB
56	
bB
:; 
QB
9./ 
AqB
9./
1 
AqB	AqB	
aBr2,KIsI{;;C/'6%	;////>>&!W,,, +{{6"d***+sD "=s   >V*4V/c                  z   ddgddgddgddggg dddggdgg} t        t        |  d      \  }}}}t        ||| |       ddd	gg d
fk(  sJ t        ||| | d      dg d
ddgfk(  sJ t        g gg dggdg      ddgg fk(  sJ t        t        t
        z
  t        t
        d	z   k  t        t
        d	z   k\  t        dk\  t
        dk\  g      d	t        d	t
        difk(  sJ t        t        t
        z
  t        t
        d	z   k  t        t        t
        d	z         t        dk\  t
        dk\  g      d	t        d	t
        difk(  sJ t        t        t
        z
  t        t
        d	z   k  t        t        d	      g      d	t        d	t
        difk(  sJ t        t
        t        t
        d	      g      d	t
        d	ifk(  sJ t        t
        t        t
        d	z   k  t        t
        d	z   k\  t
        dk\  g      dt        d	t
        difk(  sJ t        t
        dt
        d	z   k  dt
        d	z   k\  g      dt
        difk(  sJ t        t
        dt
        d	z   k  dt
        d	z   k\  t
        dk  g      dt
        difk(  sJ t        t        t
        dk\  t        t
        k\  g      dt        dt
        difk(  sJ t        t        t
        dk\  t        t
        t        z   k\  t        dk\  t        dk\  g      dt        dt
        dt        difk(  sJ t        d      x\  t        t        fd       t        }dz  z   dz  z   z
  }dz  d	z  z   dz  z   dz   z
  } | dk  gt        dz  z   d	      t         z   d	z  z   d      gz   } ||      \  }}	 ||       \  }
} ||dd        \  }}t        d      d	z  dt        d      d	z  dt        d      d	z  gf}t        ||
|||d      |k(  sJ t        ||dk\  dk  dk\  dk  dk\  dk  dk\  dk  gz         }|d   t        |d   j!                               f|k(  sJ y )Nr-   r;   r   )r&   r-   r"   r;   F)listir#   r"   )r-   r   r   r   T)dualr&   r$   r+   c            	          t        dz  dz  z
  dz  z   dz   dz  dz  z
  dk   dz  z
  dz  z   dk  d	z  z
  dz  z   d
k  gD  cg c]  } | dk\  	 c} z         S c c} w )N	   r)   r#      r&   r"   r   r*   r(   )r   )rc   r^   r_   r`   ra   rb   s    r4   r5   ztest_simplex.<locals>.<lambda>   s    e	"qtadQ	
2"		ad
QrTR
2
AbDB	 34"5a16"5	6'7  #6s   A"r,   ri   )r   r-   bounds)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rf   values)LABCDMfcondcdabaeqbeqrY   lpansr^   r_   r`   ra   rb   s                   @@@@@r4   test_simplexr~      s   
Q"a1a&2q'*
Q			A
 r1vE*JAq!QAq1"qb!b1a&,%????Aq1"qbt,q!f1    RDaSE1#&1qc2,666 Qa!eQ!a%Zaa@ 
!Q1  Qa!eR1q5\1616B 
!Q1  Qa!eR1X./A1a|3DDDDR1XJA1v;... Q!a%Za!eQ!V4 
!Q1   Q!a%Za!e,-"q"g>>>Q!a%Za!eQ!V4 
1b']   Q!VQ!V$%!aAq\)::::Q!VQ!a%Zaa8 
!Q1a#$% % %
 !//ABB
 7 8 	A	"r	AbD2A	"qtadb1f%AF8r!B$)Q'RC"HqtOQ)?@@DQ7DAqQ7DAqab1~HCQ46AqtAvq!A$q&)
*C1aCV4;;;!TR1WbAg
aq"'27B!GR1W> > ?E!Hd58??,-.#555r6   c            	      Z   t        d      x} \  }}}}ddggdgddggdgf}|D cg c]  }t        |       c}\  }}}	}
t        ||g|	|
gg      }t        |      d   \  }}t        ||| d d D cg c]  }|dk\  	 c}z         }|d|d|difk(  sJ |       ddgddggddgddggdgf}|D cg c]  }t        |       c}\  }}}	}
t        ||g|	|
gg      }t        |      d   \  }}t	        ||| dd  D cg c]  }|dk\  	 c}z         }|d|d|difk(  sJ y c c}w c c}w c c}w c c}w )Nzx1 x2 y1 y2r-   r;   r"   r   r$   )r   r   r   r   r   )r^   r_   r`   y1y2ro   rc   ry   rz   rw   rx   mru   r\   rY   s                  r4   test_lpmin_lpmaxr      s    //ABB
R	A3!Q1#%A%&'&)'JAq!QAA AQ"IAv
6QrU3Q!V33
4C2Ar1~&&*s*&
R1a&Aq6QF8aS0A%&'&)'JAq!QAA AQ"IAv
6QrsV4Q!V44
5C2Ar1~&&&& ( 4 ( 5s   D/D,D#6D(c            
         t        d      D ]E  } | sd }nd }t        d      x}\  }}}||z   d|z  z
  } |||      d   }d|z  d|z  z   d|z  z
  dk  d|z  |z
  d	|z  z   d
k  |dk\  |dk\  |dk\  g} ||D 	cg c]  }	|	j                  |	j                  z
   c}	|      }
t	        d
       dz  ddt	        d      dz  gf}t        ||      |d   t        t        ||d               fk(  sJ t        |g|
 |k(  sJ |dz  } |||      d   }t        |d|z  z
  d      g} ||D 	cg c]  }	|	j                  |	j                  z
   c}	|      }dt	        d      dz  z
  ddt	        d      d	z  gf}t        |||z         |d   t        t        ||d               fk(  sJ t        |g|
| |d   dz
  |d   fk(  sJ ||z
  t        j                  k  g} ||D 	cg c]  }	|	j                  |	j                  z
   c}	|      }dt	        d	      dz  z
  dt	        d      dz  t	        d      dz  gf}t        |||z         |d   t        t        ||d               fk(  sJ t        |g|
| |d   dz
  |d   fk(  sJ ddd t        j                  fg}dddt        j                  gf}t        |||t        j                  k  gz         |d   t        t        ||d               fk(  sJ t        |g|
d|i|d   dz
  |d   fk(  sJ t        |g|
d|j                  |      |d   ii|d   dz
  |d   fk(  sJ ||z
  t        j                  k  g}H t        dggg g d      ddgfk(  sJ t        dgg g d      ddgfk(  sJ t        dgd      ddgfk(  sJ t        ddgddggdgddi      dddgfk(  sJ t        ddgddggdgddi      dddgfk(  sJ y c c}	w c c}	w c c}	w )Nr"   c                     t        | |      S r8   r   )ry   rz   s     r4   r5   ztest_linprog.<locals>.<lambda>   s    0A6 r6   c                 n    t        t        | |      D cg c]  }|j                          c}      S c c}w r8   )tupler   tolist)ry   rz   rc   s      r4   r5   ztest_linprog.<locals>.<lambda>   s1    U$71$=$? 
$? @  $?s   2zx1:4r   r%   r,   r#   r*   rj   r&   r-   ri         )r   Nrm   r;   )r"   r#   rl   )NNr$   )r#   Nr'   )rC   r   ltsgtsr   r   dictzipr   r   lhsrhsHalfindex)dort   r^   r   r   r   ru   rw   ineqrc   abrY   eqabeqrm   s                  r4   test_linprogr      s   Ah (6A@A fo%GAq!EAaCKaGAJ!ac	AaC1$aC!GbdNaFAFAF$ t,!,a0!uQwAqtAv'Q~#a&$s1c!f~*>!????q2#%%%	QaGAJQqS!n,A!%%!%%-,a01Q46zAq!A$r'?+Qr	"s1vtC3q6N/C&DDDDq%2%%#a&1*c!f)====!eqvvo,A!%%!%%-,a01R57{Q!Q"b12Qr	"s1vtC3q6N/C&DDDDq%2%%#a&1*c!f)====Yqvv71a.!QQVV},-FDQA(2* * 	* *q-2-f-#a&1*c!f1EEEEq 2 qwwqz6":&> a&1*c!f%& 	& &!eqvvoQ(T QC5"b0QH<<<A3Bv.1qc(:::A3v&1qc(222Ar7aVHqc1\2B 
1a&\  Ar7aVHqc1Y- 
1a&\  C - - -s   8 O
' O"
 O'
N)0sympy.core.numbersr   sympy.core.relationalr   r   sympy.core.symbolr   sympy.core.sympifyr   sympy.core.singletonr   sympy.core.randomr	   r
   (sympy.functions.elementary.miscellaneousr   sympy.ntheory.generater   sympy.matrices.denser   sympy.solvers.solvesetr   sympy.solvers.simplexr   r/   r   r   r   r   r   r   r   r   r   sympy.external.importtoolsr   sympy.testing.pytestr   	sympy.abcr   r   r   npr    rd   r~   r   r   rJ   r6   r4   <module>r      sm    ' ( % & " , 9 , ' 6" " " 5 '   7gd+N86v'"1r6   