o
    jgM#                     @   s  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d Z,dd Z-dd Z.dd Z/dS )    )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               
      sJ  t dt  dk t dt  dkdt t  dt  dk tdkt dktdkg} t t  dt  }tt||  }\}}|t|| ksGJ |||ksPJ | D ]}||dks]J qRtt  dt  dk t dt   dt  dkdt t  dt  dk tdkt dktdkg} t t  dt  }tt||  }\}}|t|| ksJ |||ksJ | D ]}||dksJ qtt  dt  d	k t dt   dt  d
kdt t  dt  dk tdkt dktdkg} d}t t  dt  | }tt||  }\}}|t|| ksJ |||ksJ | D ]}||dks,J q td }\}}	}
}||	 d|
  | dk d| |
 d|  dkd| |	 | dk|d|	  d|
  |  gdd |D  }} tt||  }\}}|t|| ksJ |d|d|	d|
d|difksJ tt  dt  d	k t dt   dt  d
kdt t  dt  dk gdd tt tfD  } t t  dt  }tt|| \}}|||ksJ | D ]}||dksJ qtt  tdt  d	k t dt   dt  d
kdt t  dt  dkt	t
 fdd tdk t	t fdd tdkt	t fdd tdk t	t
 fdd ttd t	t
 fdd ddd}ttt  tt ttdk g} t}tt||  }\}}|t|| ksJ |||ksJ | D ]}||dksJ qd S )N            r   T   
   x1 x2 x3 x4      c                 S      g | ]}|d kqS r    .0ir0   r0   X/var/www/html/zoom/venv/lib/python3.10/site-packages/sympy/solvers/tests/test_simplex.py
<listcomp>D       ztest_lp.<locals>.<listcomp>g       @g      @c                 S   r.   r/   r0   r1   r0   r0   r4   r5   N       c                      s    t tt t dt   gS )Nr&   )lpmaxr   r   r   r0   r1r2r3r0   r4   <lambda>Y   s     ztest_lp.<locals>.<lambda>c                         t tt gS Nr8   r9   r   r0   r;   r0   r4   r>   \       c                      s   t tt gS r@   rA   r0   )r;   r<   r0   r4   r>   ^   s    c                      r?   r@   rA   r0   rB   r0   r4   r>   b   rC   c                      r?   r@   rA   r0   rB   r0   r4   r>   f   rC   皙?c                    sT   fdd t d| d   fddt|D }t fddD }||fS )	Nc                     s>   t   k r	tdS dd tdD \} }t| |tddg S )Nr   c                 S   s   g | ]}t d dqS )r      r   r2   _r0   r0   r4   r5   l   s    zFtest_lp.<locals>.make_random_problem.<locals>.rand.<locals>.<listcomp>r"   rD   r-   )r   r   ranger   r	   )int1int2)sparsityr0   r4   randi   s   
z2test_lp.<locals>.make_random_problem.<locals>.randzx1:%sr-   c                    s(   g | ]}t  fd dD   kqS )c                 3       | ]}  | V  qd S r@   r0   r2   r   rM   r0   r4   	<genexpr>o       zBtest_lp.<locals>.make_random_problem.<locals>.<listcomp>.<genexpr>)sumrG   )rM   	variablesr0   r4   r5   o   s     z8test_lp.<locals>.make_random_problem.<locals>.<listcomp>c                 3   rN   r@   r0   rO   rP   r0   r4   rQ   q   rR   z7test_lp.<locals>.make_random_problem.<locals>.<genexpr>)r   rI   rS   )nvarnum_constraintsrL   constraints	objectiver0   )rM   rL   rT   r4   make_random_problemh   s   
z$test_lp.<locals>.make_random_problem)r"   r"   rE   )r   r   r   r8   r9   r   subsr   r
   r   	TypeErrorr   r   r   r   )rW   rX   ansoptimumargmaxconstrconstvx1x2x3x4rY   r0   r:   r4   test_lp   s   $"




rf   c                     s"  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d\}}}}t||| | ddd	gg d
fks8J t||| | dddg d
ddgfksNJ tg gg dggdgddgg fksaJ ttt ttd	 kttd	 ktdktdkgd	td	tdifksJ ttt ttd	 ktttd	 tdktdkgd	td	tdifksJ ttt ttd	 kttd	gd	td	tdifksJ ttttd	gd	td	ifksJ ttttd	 kttd	 ktdkgdtd	tdifksJ ttdtd	 kdtd	 kgdtdifksJ ttdtd	 kdtd	 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s4J tttdkttt ktdktdkgdtdtdtdifksTJ t	d  \t
t fdd t}d  d   }d d	  d  d  } | dkgtd  d	t  d	  dg }|| \}}	||  \}
}||dd   \}}tdd	 dtdd	 dtdd	 gf}t||
|||dd|ksJ t||dkdkdkdkdkdkdkdkg }|d t|d  f|ksJ d S )Nr-   rD   r   )r&   r-   r"   rD   F)listir#   r"   )r-   r   r   r   T)dualr&   r$   r+   c                      sp   t d d  d  d d d  dk d  d  dkd	  d  d
kgdd  D  S )N	   r)   r#      r&   r"   r   r*   r(   c                 S   r.   r/   r0   r1   r0   r0   r4   r5      r7   z2test_simplex.<locals>.<lambda>.<locals>.<listcomp>)r   r0   ra   rb   rc   rd   re   r0   r4   r>      s    ztest_simplex.<locals>.<lambda>r,   ri   )r   r-   bounds)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   values)LABCDMfcondcdabaeqbeqr\   lpansr0   rl   r4   test_simplex   sZ   (
&,.4""0"

,$
 4($&r   c                  C   s@  t d } \}}}}ddggdgddggdgf}dd |D \}}}}	t||g||	gg}
t|
d \}}t||dd | d d D  }|d|d|difksSJ |ddgddggddgddggdgf}d	d |D \}}}}	t||g||	gg}
t|
d \}}t||d
d | dd  D  }|d|d|difksJ d S )Nzx1 x2 y1 y2r-   rD   r"   c                 S      g | ]}t |qS r0   r   r1   r0   r0   r4   r5      r7   z$test_lpmin_lpmax.<locals>.<listcomp>r   c                 S   r.   r/   r0   r1   r0   r0   r4   r5      r7   c                 S   r   r0   r   r1   r0   r0   r4   r5      r7   c                 S   r.   r/   r0   r1   r0   r0   r4   r5      r7   r$   )r   r   r   r   r   )ra   rb   rc   y1y2rp   rz   r{   rx   ry   mrv   r_   r\   r0   r0   r4   test_lpmin_lpmax   s    $ r   c                  C   s  t dD ]} | sdd }ndd }td }\}}}|| d|  }|||d }d| d|  d|  d	kd	| | d
|  dk|dk|dk|dkg}|dd |D |}	td d ddtd	d gf}
t|||
d tt||
d fks{J t|g|	R  |
ksJ |d7 }|||d }t|d|  dg}|dd |D |}dtdd  ddtdd
 gf}
t||| |
d tt||
d fksJ t|g|	|R  |
d d |
d fksJ || tjkg}|dd |D |}dtd
d  dtdd tdd gf}
t||| |
d tt||
d fks!J t|g|	|R  |
d d |
d fks8J ddd tjfg}dddtjgf}
t|||tjkg |
d tt||
d fkscJ t|g|	R d|i|
d d |
d fks{J t|g|	R d|	||d ii|
d d |
d fksJ || tjkg}qtdggg g ddddgfksJ tdgg g ddddgfksJ tdgddddgfksJ tddgddggdgddiddddgfksJ tddgddggdgddiddddgfksJ d S )Nr"   c                 S   s
   t | |S r@   r   rz   r{   r0   r0   r4   r>      s   
 ztest_linprog.<locals>.<lambda>c                 S   s   t dd t| |D S )Nc                 S   s   g | ]}|  qS r0   )tolistr1   r0   r0   r4   r5      r6   z2test_linprog.<locals>.<lambda>.<locals>.<listcomp>)tupler   r   r0   r0   r4   r>      s    zx1:4r   r%   r,   r#   r*   rj   c                 S      g | ]}|j |j qS r0   )ltsgtsr1   r0   r0   r4   r5          z test_linprog.<locals>.<listcomp>r&   r-   ri   c                 S   r   r0   lhsrhsr1   r0   r0   r4   r5      r   c                 S   r   r0   r   r1   r0   r0   r4   r5      r         )r   Nrn   rD   )r"   r#   rm   )NNr$   )r#   Nr'   )
rI   r   r   r   dictzipr   r   Halfindex)doru   ra   r   r   r   rv   rx   ineqabr\   eqabeqrn   r0   r0   r4   test_linprog   s\   
 (",,*..0"
$"


r   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   r8   r   r   r   r   r   r   r   r   r   sympy.external.importtoolsr   sympy.testing.pytestr   	sympy.abcr   r   r   npr!   rf   r   r   r   r0   r0   r0   r4   <module>   s(    0g;