+
    ,iD                     4   ^ RI t ^ RIt^ RIHt ^ RIHtHt ^ RIH	t
 ^ RIHtHtHt R t] P                   P#                  R4       ! R R	4      4       t ! R
 R]4      t ! R R]4      t] P                   P#                  R4       ! R R4      4       tR tRR ltR# )    N)default_rng)quadratic_assignmentOptimizeWarning)_calc_score)assert_equalassert_assert_warnsc                  l   . RO. RO. RO. RO. RO. RO. RO. RO. R	O. R
O. RO. RO.p . RO. RO. RO. RO. RO. RO. RO. RO. RO. RO. RO. RO.p\         P                  ! V 4      \         P                  ! V4      rV P                  ^ ,          p\         P                  ! . RO4      ^.V,          ,
          pWV3# )r   )r   Z   
   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   X   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   $   6   r   ;   H   	   "   O      .   _   )r   r   I   #   r   :      N   r!   ,   r   r   )r   r    r      r   a   r"   B   E   =   r   ?   )r   r!   r&   r   ]      r   (   r   0   D   U   )r   r   r   r,   r   @      r   L   r   r3   r4   )r   r"   r'   r-   r2   r   r   7   &   r   r   r   )r   r#   r"   r   r3   r   r   S   r!      8   r   )r   r$   r(   r.   r   r5   r7   r   r%   r-      P   )r   r!   r)   r   r4   r6   r!   r%   r   r2   '   !   )r   r%   r*   r/   r   r   r8   r-   r2   r   F   V   )r   r   r   r0   r3   r   r9   r:   r<   r>   r      )r   r   r+   r1   r4   r   r   r;   r=   r?   r@   r   )   r3   r      r            r   r8      r-   )nparrayshape)ABnopt_perms       P/usr/lib/python3/dist-packages/scipy/optimize/tests/test_quadratic_assignment.pychr12crO      s    ......-.-.--	A 	777756577757	A 88A;q	
Axx?@A37JH>    z1ignore:The NumPy global RNG was seeded by callingc                      a  ] tR t^2t o RtR tR tR t]P                  P                  R 4       t]P                  P                  R 4       tRtV tR# )	QAPCommonTestsz.
Base class for `quadratic_assignment` tests.
c           	        \         P                  P                  R 4      p. RO. R	O. R
O. RO.p. RO. RO. RO. RO.p\        W#V P                  RVRR/R7      p\        VP                  ^
4       \        VP                  \         P                  ! . RO4      4       \        W#V P                  RVRR/R7      pV P                  R8X  dD   \        VP                  ^%4       \        VP                  \         P                  ! . RO4      4       MB\        VP                  ^(4       \        VP                  \         P                  ! . RO4      4       \        W#V P                  RVRR/R7       R# )   mX)Ec rngmaximizeFmethodoptionsTfaqN)r   rB   rC   rF   )r   r   r   rF   )r   r   r   r   )r   r   r   r   )r   rC   rF   rC   )r   rF   r   rF   )r   r   rF   r   r   rF   rB   r   )r   rF   rB   r   )r   rB   r   rF   )	rG   randomr   r   rX   r   funcol_indrH   selfrU   rJ   rK   ress   &    rN   test_accuracy_1QAPCommonTests.test_accuracy_1;   s   ii##$78
 
 #1,13
E+JL 	SWWb!S[["((<"89"1,13
D+IK ;;%"%bhh|&<="%bhh|&<=Q$++&+S*d%C	ErP   c           	        \         P                  P                  R 4      p\         P                  ! . R	O. R
O. RO. RO.4      p\         P                  ! . RO. RO. RO. RO.4      p\	        W#V P
                  RVRR/R7      pV P
                  R8X  dD   \        VP                  ^4       \        VP                  \         P                  ! . RO4      4       MB\        VP                  ^4       \        VP                  \         P                  ! . RO4      4       \	        W#V P
                  RVRR/R7      p\        VP                  R4       \        VP                  \         P                  ! . RO4      4       R# )rT   rU   rV   FrW   rZ   Ti  N)r   r3   rD   rE   )r3   r   r3   r   )rD   r3   r   rF   )rE   r   rF   r   )r   r   rD   rC   )r   r   r3   rF   )rD   r3   r   r3   )rC   rF   r3   r   )r   r   rB   rF   r[   )rF   rB   r   r   )	rG   r\   r   rH   r   rX   r   r]   r^   r_   s   &    rN   test_accuracy_2QAPCommonTests.test_accuracy_2a   s   ii##$78HHl"""$ %
 HHl"""$ %
 #1,13
E+JL ;;%#&bhh|&<=#&bhh|&<="1,13
D+IK 	SWWc"S[["((<"89rP   c           	     z   \         P                  P                  R 4      p\        4       w  r#p\	        W#V P
                  RV/R7      p\        RVP                  u;8*  ;'       d    R8  Mu 4       \        VP                  \        W#VP                  4      4       \	        W#V P
                  RVRR/R7      p\        RVP                  u;8*  ;'       d    R8  Mu 4       \        VP                  \        W#VP                  4      4       \         P                  ! . RO4      p\         P                  ! WdV,          .4      P                  p\	        W#V P
                  R	VRV/R7      p\        RVP                  u;8*  ;'       d    R8  Mu 4       \        VP                  V,          WF,          4       \         P                  ! \         P                  ! \        V4      4      V.4      P                  p\	        W#V P
                  R	VRV/R7      p\        VP                  VR,          P                  4       \        VP                  R4       \        VP                   ^ 4       \         P"                  ! R4      p\	        WV P
                  RV/R7      p\        VP                   ^ 4       \        VP                  ^ 4       R
# )rT   rU   rW   +  R  rV   Ti! iL partial_matchN)rC   rD   r   )NNNr   )r   r   )rG   r\   r   rO   r   rX   r   r]   r   _scorer^   rH   asarrayTarangelennitempty)	r`   rU   rJ   rK   rM   ra   	seed_costseedrr   s	   &        rN   test_accuracy_3QAPCommonTests.test_accuracy_3   s   ii##$78h #1,13<9((5()SWWfQ3;;78 #1,13
D+IK((5()SWWfQ3;;78 HHZ(	zz9y&9:;=="1,;T5#+NP((5()S[[+X-@A zz299SV,h78::"1,;T5#+NPS[[$t*,,/SWWe$SWWa   "5,13<9SWWa SWWa rP   c                X   a aa \        4       w  oopVVV 3R  lp\        \        V4       R# )c                  >   < \        S SSP                  R R/R7       R# )z	ekki-ekkiTrW   N)r   rX   )rJ   rK   r`   s   rN   f.QAPCommonTests.test_unknown_options.<locals>.f   s     Adkk*5t)<>rP   N)rO   r	   r   )r`   rM   ry   rJ   rK   s   f  @@rN   test_unknown_options#QAPCommonTests.test_unknown_options   s!    1h	> 	_a(rP   c                <   \         P                  ! ^4      P                  R
4      p\         P                  ! ^4      P                  R
4      p\        P                  ! \
        RR7      ;_uu_ 4        \         P                  P                  ^ 4      p\        WV P                  RVRR/R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \         P                  P                  ^ 4       \        WV P                  RR/R7       RRR4       \        P                  ! \        R	R7      ;_uu_ 4        \        WV P                  R^ RR/R7       RRR4       R#   + '       g   i     L; i  + '       g   i     Ln; i  + '       g   i     R# ; i)r   zUse of `RandomState`*matchrU   rV   FrW   Nz The NumPy global RNG was seeded*z!The behavior when the rng option*rC   rC   )rG   ro   reshapepytestwarnsDeprecationWarningr\   RandomStater   rX   FutureWarningrt   )r`   rJ   rK   rU   s   &   rN    test_deprecation_future_warnings/QAPCommonTests.test_deprecation_future_warnings   s    IIbM!!&)IIbM!!&)\\,4KLL))''*C dkk*/j%)HJ M
 \\-/QRRIINN1 dkk*4e)<> S
 \\-/RSS dkk*/J)FH TS ML
 SR
 TSSs$   /<E$:E7=F
$E4	7F	
F	 N)__name__
__module____qualname____firstlineno____doc__rb   re   ru   r   markthread_unsafer{   r   __static_attributes____classdictcell____classdict__s   @rN   rR   rR   2   sZ      EL:<%!N [[) ) [[H HrP   rR   c                   0   a  ] tR t^t o RtR tR tRtV tR# )TestFAQrZ   c                   \         P                  P                  R 4      p\        4       w  r#p\	        V4      p\        W#R^/R7      p\        VP                  ^4       \        W#RR/R7      p\        RVP                  u;8*  ;'       d    R8  Mu 4       \        W#RVRR	/R7      p\        RVP                  u;8*  ;'       d    R8  Mu 4       \         P                  ! WU34      \        V4      ,          p\        V4      p\        W#RV/R7      p\        RVP                  u;8*  ;'       d    R8  4       R
# u 4       R
# )rT   maxiterrY   shuffle_inputTrh   ri   rU   P0
randomizedN)rG   r\   r   rO   rp   r   r   rq   r   r]   onesfloat_doubly_stochastic)r`   rU   rJ   rK   rM   rL   ra   Ks   &       rN   test_optionsTestFAQ.test_options   s    ii##$78hF #1)Q@SWWa  #1/41HI((5() #1%dL1QR((5() GGQFOeAh&q!"1$;((5()()rP   c           
        \         P                  ! ^4      pTp\        P                  ! \        RR7      ;_uu_ 4        \        WRR/R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        WRR/R7       RRR4       \        P                  ! \        R	R7      ;_uu_ 4        \        WR
R/R7       RRR4       \        P                  ! \        4      ;_uu_ 4        \        WRR/R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \        \         P                  ! ^4      \         P                  ! ^4      R\         P                  ! R4      /R7       RRR4       . RO. RO. RO.p\        P                  ! \        RR7      ;_uu_ 4        \        \         P                  ! ^4      \         P                  ! ^4      RV/R7       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL^; i  + '       g   i     EL8; i  + '       g   i     L; i  + '       g   i     R# ; i)rF   zInvalid 'P0' parameterr~   r   r\   r   Nz$'maxiter' must be a positive integerr   z'tol' must be a positive floattolg      ?z1`P0` matrix must have shape m' x m', where m'=n-mz%`P0` matrix must be doubly stochasticrB   rB   )g?皙?333333?)r   g333333?r   )r   r   gffffff?)rG   identityr   raises
ValueErrorr   	TypeErrorr   )r`   rJ   rK   r   s   &   rN   test_specific_input_validation&TestFAQ.test_specific_input_validation   s   KKN ]]:-EFF h/?@ G]]"HJ J 	2?J ]]:-MNN r{; O
 ]]9%% 	3/?@ & ]]IK K !AArwwv/K  ]]"IK K AAq	K K5 GFFJ J J ONN
 &%%K KK K KsH   G29H5H/H.+AI/9I2H	H	H+	.H?	I	I&	r   N)	r   r   r   r   rX   r   r   r   r   r   s   @rN   r   r      s     F*2' 'rP   r   c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )Test2opti
  2optc                v   ^p\        R4      pVP                  W3R7      pVP                  W3R7      p\        W4V P                  RV/R7      p\        R4      pVP                  W3R7      pVP                  W3R7      p\        W4V P                  RV/R7      p\	        VP
                  VP
                  4       R# )   i<2sizerU   rW   N)r   r\   r   rX   r   rq   )r`   rL   rU   rJ   rK   res1res2s   &      rN   test_deterministicTest2opt.test_deterministic  s    (#JJQFJ#JJQFJ##AuclS(#JJQFJ#JJQFJ##AuclSTXXtxx(rP   c                p   ^p\         P                  P                  R4      pVP                  W3R7      pVP                  W3R7      p\        W4V P                  RV/R7      p\         P
                  ! \         P                  ! ^4      VP                  .4      P                  p\        W4V P                  RVRV/R7      p^^.p\         P
                  ! \         P                  ! ^4      V,          VP                  V,          .4      P                  p	\        W4V P                  RVRVRV	/R7      p
\        VP                  W^,           ,          ^,          8g  4       \        VP                  W^,           ,          ^,          4       \        V
P                  V^,
          V^,
          ,          ^,          4       R# )r3   rT   r   rU   rW   partial_guessrj   N)rG   r\   r   r   rX   rH   ro   r^   rn   r   rq   r   )r`   rL   rU   rJ   rK   r   guessr   fixr   res3s   &          rN   test_partial_guessTest2opt.test_partial_guess  sO   ii##$78JJQFJ#JJQFJ##A-2CL:"))A,5688#A-2C%,PR!f"))A,s+T\\#->?@BB#A-2C%-<e-EF 	AsGAI%&TXXqA#wqy)TXX!ac{1}-rP   c                   \         p\        P                  ! \        R R7      ;_uu_ 4        \	        \
        P                  ! ^4      \
        P                  ! ^4      V P                  RV! ^^4      /R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        \
        P                  ! ^4      \
        P                  ! ^4      V P                  R\        ^^4      /R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        \
        P                  ! ^4      \
        P                  ! ^4      V P                  R\
        P                  P                  ^^^4      /R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        \
        P                  ! ^4      \
        P                  ! ^4      V P                  RR
\        ^^4      ,          /R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        \
        P                  ! ^4      \
        P                  ! ^4      V P                  R^\        ^^4      ,          /R7       RRR4       \        P                  ! \        R	R7      ;_uu_ 4        \	        \
        P                  ! ^4      \
        P                  ! ^4      V P                  R\
        P                  ! R4      /R7       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL<; i  + '       g   i     EL; i  + '       g   i     ELT; i  + '       g   i     L; i  + '       g   i     R# ; i)z0`partial_guess` can have only as many entries asr~   r   rW   Nz%`partial_guess` must have two columnsz%`partial_guess` must have exactly twoz%`partial_guess` must contain only posz0`partial_guess` entries must be less than numberz-`partial_guess` column entries must be uniquer   rF   rF   )_range_matrixr   r   r   r   rG   r   rX   r\   randr   )r`   _rms   & rN   r   'Test2opt.test_specific_input_validation0  s   ]]HJ J !QQ(,*93q!9)EGJ ]]"IK K AAt{{(-1*=>K ]]"IK K AAt{{("))..Aq*ABK ]]"IK K AAt{{("}Q/B*BCK ]]HJ J !AAt{{(!mAq.A*ABJ ]]EG G !AAt{{("''&/:G GIJ J JK K KK K KK K KJ JG G GsM   AL"AL#A#L7+AM,AM-AM2L 	#L4	7M	M	M/	2N	r   N)
r   r   r   r   rX   r   r   r   r   r   r   s   @rN   r   r   
  s     F).*- -rP   r   c                   &   a  ] tR tRt o R tRtV tR# )TestQAPOncei`  c                	   \        R 4      p\        P                  ! \        RR7      ;_uu_ 4        \	        VP                  R4      VP                  R4      4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        VP                  R4      VP                  R4      4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        VP                  R4      VP                  R4      4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        VP                  R4      VP                  R4      4       RRR4       \        p\        P                  ! \        RR7      ;_uu_ 4        \	        \        P                  ! ^4      \        P                  ! ^4      RV! ^^4      /R	7       RRR4       \        P                  ! \        R
R7      ;_uu_ 4        \	        \        P                  ! ^4      \        P                  ! ^4      R\        ^^4      /R	7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        \        P                  ! ^4      \        P                  ! ^4      R\        P
                  P                  ^^^4      /R	7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        \        P                  ! ^4      \        P                  ! ^4      RR\        ^^4      ,          /R	7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        \        P                  ! ^4      \        P                  ! ^4      R^\        ^^4      ,          /R	7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \	        \        P                  ! ^4      \        P                  ! ^4      R\        P                  ! R4      /R	7       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL\; i  + '       g   i     EL; i  + '       g   i     EL; 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)inn z`A` must be squarer~   Nz`B` must be squarez!`A` and `B` must have exactly twoz*`A` and `B` matrices must be of equal sizez.`partial_match` can have only as many seeds asrj   r   z%`partial_match` must have two columnsz%`partial_match` must have exactly twoz%`partial_match` must contain only posz0`partial_match` entries must be less than numberz-`partial_match` column entries must be unique)rB   rC   r   )rB   rB   rB   r   r   r   )r   r   r   r   r   r\   r   rG   r   r   r   )r`   rU   r   s   &  rN   test_common_input_validation(TestQAPOnce.test_common_input_validationd  s   (#]]:-ABB 

6"

6" C
 ]]:-ABB 

6"

6" C ]]"EG G 

9%

9%G ]]BD D !

6"

6"D ]]FH H !QQ*93q!9)EGH ]]"IK K AA(-1*=>K ]]"IK K AA("))..Aq*ABK ]]"IK K AA("}Q/B*BCK ]]HJ J !AA(!mAq.A*ABJ ]]EG G !AA("''&/:G G} CBB
 CBBG G GD D DH H HK K KK K KK K KJ J JG G Gs}   +P4+Q+Q5+Q0A R>AR-AR,1A
S 'A
SAS(4Q	Q	Q-	0R	R	R)	,R=	 S	S%	(S9	r   N)r   r   r   r   r   r   r   r   s   @rN   r   r   `  s     G GrP   r   c                     \         P                  ! W34      p\        V4       F  p\         P                  ! V 4      VR V3&   K   	  V# )rk   )rG   zerosrangero   )abmatis   &&  rN   r   r     s:    
((A6
C1XIIaLAqD	 JrP   c                    R p^V P                  ^ R7      ,          p^W,          ,          pT p\        V4       F  p\        P                  ! VP                  ^R7      ^,
          4      V8  P	                  4       '       dH   \        P                  ! VP                  ^ R7      ^,
          4      V8  P	                  4       '       d    V# ^W@,          ,          p^W,          ,          pVR,          V ,          V,          pK  	  V# )i  )axis)rk   N)sumr   rG   absall)Pr   max_itercrP_epsits   &&     rN   r   r     s     H	AEEqEMA	QUAEHoVVEII1I%)*S05577		q	)A-.499;; L	 KK'
Q"  LrP   )gMbP?)r   numpyrG   numpy.randomr   scipy.optimizer   r   scipy.optimize._qapr   rl   numpy.testingr   r   r	   rO   r   filterwarningsrR   r   r   r   r   r   r   rP   rN   <module>r      s      $ @ 5 = ="J OPNH NH QNHbCn CLS~ Sl OPJ J QJZrP   