
    ^Mh                     ,   d dl mZ d dlZd dl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 d Zd	 Zd
 Zd Zd Zd Zd Zd Zej                            dg d          d             Zej                            de          d             Zd ZdS )    )assert_array_equalN)linear_sum_assignment)random)matrix)"min_weight_full_bipartite_matching) linear_sum_assignment_assertions linear_sum_assignment_test_casesc                      t          j        t          d          5  t          g d           d d d            d S # 1 swxY w Y   d S )Nzexpected a matrixmatch         )pytestraises
ValueErrorr        k/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_linear_assignment.py&test_linear_sum_assignment_input_shaper      s    	z)<	=	=	= ) )iii((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   ;??c                      g dg dg} t          t          |           t          t          j        |                                t          t          |           t          t	          |                                d S )Nr   )         )r   r   npasarrayr   )Cs    r   'test_linear_sum_assignment_input_objectr      s|    	IIIA,Q//,RZ]];;= = =,Q//,VAYY779 9 9 9 9r   c                      t          j        d          } t          t          |                     t           j                            t          |                      d S )Nr   )r   identityr   r   astypebool_Is    r   %test_linear_sum_assignment_input_boolr&      sO    
AA,QXXbh-?-?@@,Q//1 1 1 1 1r   c                      t          j        d          } t          j        t          d          5  t          |                     t                               d d d            d S # 1 swxY w Y   d S )Nr   zCannot cast array datar   )r   r!   r   r   	TypeErrorr   r"   strr$   s    r   'test_linear_sum_assignment_input_stringr*   %   s    
AA	y(@	A	A	A - -ahhsmm,,,- - - - - - - - - - - - - - - - - -s   (A%%A),A)c                      t          j        t           j        ddg          } t          j        t
          d          5  t          |            d d d            d S # 1 swxY w Y   d S Nr   z contains invalid numeric entriesr   )r   diagnanr   r   r   r   r$   s    r   $test_linear_sum_assignment_input_nanr/   +   s    
AA	z)K	L	L	L ! !a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   AA!Ac                      t          j        dt           j         dg          } t          j        t
          d          5  t          |            d d d            d S # 1 swxY w Y   d S r,   )r   r-   infr   r   r   r   r$   s    r   'test_linear_sum_assignment_input_neginfr2   1   s    
RVGQ  A	z)K	L	L	L ! !a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   AA"Ac                      t          j        d          } t           j        | d d df<   t          j        t
          d          5  t          |            d d d            d S # 1 swxY w Y   d S )Nr   r   zcost matrix is infeasibler   )r   r!   r1   r   r   r   r   r$   s    r   $test_linear_sum_assignment_input_infr4   7   s    
AAfAaaadG	z)D	E	E	E ! !a   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   A  A$'A$c                      d} t          j        | | f          }t          |          \  }}t          |t          j        |                      t          |t          j        |                      d S )N   )r   onesr   r   arange)nr   row_indcol_inds       r   test_constant_cost_matrixr<   >   s`    	A
AA,Q//GWw	!---w	!-----r   znum_rows,num_cols))r   r   )r   r   )r   r   c                     t          j        || f          }t          |          \  }}t          |          dk    sJ t          |          dk    sJ d S )N)shaper   )r   emptyr   len)num_rowsnum_colsr   r:   r;   s        r   'test_linear_sum_assignment_trivial_costrC   G   s_    
(+,,,A,Q//GWw<<1w<<1r   zsign,test_casec                 H    t          t          t          j        | |           d S )N)r   r   r   array)sign	test_cases     r   'test_linear_sum_assignment_small_inputsrH   O   s)    $rxy: : : : :r   c                  `   t           j                            d           t          d          D ]} d}d}t          dddd           }t          j        |j        t           j                  }|j        ||j        |j	        f<   |
                                }	 t          |          \  }}|||f                                         }n# t          $ r d}Y nw xY w	 t          |          \  }}|||f                                         }n# t          $ r d}Y nw xY w||k    sJ |s||k    sJ d S )Ni  d   FgQ?c                 D    t           j                            dd|           S )Nr   rJ   )r   r   randint)sizes    r   <lambda>zItest_two_methods_give_same_result_on_many_sparse_inputs.<locals>.<lambda>a   s    bi.?.?3.M.M r   )densitydata_rvsT)r   r   seedrangefullr>   r1   datarowcoltocsrr   sumr   r   )	_
lsa_raisesmwfbm_raisessparsedenser:   r;   lsa_cost
mwfbm_costs	            r   7test_two_methods_give_same_result_on_many_sparse_inputsr`   W   sz   
 INN43ZZ * *
S$!M!MO O O bf--(.fj&*$%	4U;;GWWg-.2244HH 	 	 	JJJ		 A&IIGW 015577JJ 	  	  	 LLL	  \)))) 	*z))))/* *s$   .CCC.D		DD)numpy.testingr   r   numpyr   scipy.optimizer   scipy.sparser   scipy.sparse._sputilsr   scipy.sparse.csgraphr   (scipy.sparse.csgraph.tests.test_matchingr   r	   r   r   r&   r*   r/   r2   r4   r<   markparametrizerC   rH   r`   r   r   r   <module>rj      s   - , , , , ,      0 0 0 0 0 0       ( ( ( ( ( ( C C C C C C       
) ) )
9 9 91 1 1- - -! ! !! ! !! ! !. . . ,.F.F.FGG  HG )+KLL: : ML:* * * * *r   