+
    /i1                     V    R t ^ RIt^ RIHtHt ^ RIt^ RIHt ^ RI	H
t
  ! R R4      tR# )z5
Unit tests for TNC optimization routine from tnc.py
N)assert_allcloseassert_equalpow)optimizec                     a  ] tR t^t o RtR tR+R ltR+R ltR+R ltR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R  t#R! t$R" t%R# t&R$ t'R% t(R& t)R' t*R( t+R)t,V t-R*# ),TestTnczTNC non-linear optimization.

These tests are taken from Prof. K. Schittkowski's test examples
for constrained non-linear programming.

http://www.uni-bayreuth.de/departments/math/~kschittkowski/home.htm

c                    R RR^/V n         R# )dispFmaxfunNopts)selfs   &[/var/www/html/photoedit/myenv/lib/python3.14/site-packages/scipy/optimize/tests/test_tnc.pysetup_methodTestTnc.setup_method   s    UHc2	    c                    V\        V^,          \        V^ ,          ^4      ,
          ^4      ,          \        RV^ ,          ,
          ^4      ,           # )         ?r   r   xas   &&&r   f1
TestTnc.f1   s;    3!s1Q4|+a003sQqTz13EEEr   c                    ^ ^ .p^V,          V^,          \        V^ ,          ^4      ,
          ,          V^&   RV^ ,          V^,          R,
          ,          R,           ,          V^ &   V# )    r          r   )r   r   r   difs   &&& r   g1
TestTnc.g1   sY    !fQ!A$QqT1-.A1Q#.45A
r   c                F    V P                  W4      V P                  W4      3# N)r   r   r   s   &&&r   fg1TestTnc.fg1$   s    wwq}dggam++r   c                n    V^,          \        V^,          V^ ,          ,
          ^4      R,          ,           # )r   h㈵>r   r   r   s   &&r   f3
TestTnc.f3'   s)    tc!A$1+q)F222r   c                    ^ ^ .pRV^,          V^ ,          ,
          ,          R,          V^ &   RV^ ,          ,
          V^&   V# )r   r&   r   r    r   r   r   s   && r   g3
TestTnc.g3*   s@    !f1!%.As1vA
r   c                F    V P                  V4      V P                  V4      3# r"   )r(   r-   r'   s   &&r   fg3TestTnc.fg30       wwqz4771:%%r   c                `    \        V^ ,          R,           ^4      R,          V^,          ,           # )r   r   g      @r   r'   s   &&r   f4
TestTnc.f43   s%    1Q4#:q!C'!A$..r   c                R    ^ ^ .p\        V^ ,          R,           ^4      V^ &   RV^&   V# )r   r   r   r,   s   && r   g4
TestTnc.g46   s1    !fQqTCZ#AA
r   c                F    V P                  V4      V P                  V4      3# r"   )r4   r7   r'   s   &&r   fg4TestTnc.fg4<   r2   r   c                   \         P                  ! V^ ,          V^,          ,           4      \        V^ ,          V^,          ,
          ^4      ,           RV^ ,          ,          ,
          RV^,          ,          ,           R,           # )r         ?      @r   )npsinr   r'   s   &&r   f5
TestTnc.f5?   s_    vvadQqTk"S1!a%88ad
 1Q4Z(*-. 	.r   c                    ^ ^ .p\         P                  ! V^ ,          V^,          ,           4      pRV^ ,          V^,          ,
          ,          pW4,           R,
          V^ &   W4,
          R,           V^&   V# )r          @r=   r>   )r?   cos)r   r   r   v1v2s   &&   r   g5
TestTnc.g5C   s^    !fVVAaD1Q4K !A$1+3A3A
r   c                F    V P                  V4      V P                  V4      3# r"   )rA   rH   r'   s   &&r   fg5TestTnc.fg5L   r2   r   c           	     J   R \        V^,          \        V^ ,          ^4      ,
          ^4      ,          \        RV^ ,          ,
          ^4      ,           R\        V^,          \        V^,          ^4      ,
          ^4      ,          ,           \        RV^,          ,
          ^4      ,           R\        V^,          R,
          ^4      \        V^,          R,
          ^4      ,           ,          ,           RV^,          R,
          ,          V^,          R,
          ,          ,           R,          # )      Y@r   g     V@g333333$@3@r&   r   r'   s   &&r   f38TestTnc.f38O   s    AaD3qtQ</33C!A$J"#%)C!s1Q4|0CQ,G%GHC!A$J"#%)S1Q-?-01Q-?.@ &AA !s
#qtcz2	3 7=	= 	=r   c                &   . ROpR	V^ ,          ,          V^,          \        V^ ,          ^4      ,
          ,          RRV^ ,          ,
          ,          ,
          R,          V^ &   RV^,          \        V^ ,          ^4      ,
          ,          RV^,          R,
          ,          ,           RV^,          R,
          ,          ,           R,          V^&   R
V^,          ,          V^,          \        V^,          ^4      ,
          ,          RRV^,          ,
          ,          ,
          R,          V^&   RV^,          \        V^,          ^4      ,
          ,          RV^,          R,
          ,          ,           RV^,          R,
          ,          ,           R,          V^&   V# )r   rD   r   r&   g      i@g3333334@rO   g     f@)r   r   r   r   g      yg     vr   r,   s   && r   g38TestTnc.g38V   s8   1Q4-1Q4#adA,#67qt$%(./A1Q4#adA,./$!A$*2EE!A$*%&)/0AAaD.AaD3qtQ<$78qt$%(./A1Q4#adA,./$!A$*2EE!A$*%&)/0A
r   c                F    V P                  V4      V P                  V4      3# r"   )rP   rS   r'   s   &&r   fg38TestTnc.fg38b       xx{DHHQK''r   c                    R V^ ,          V^,          ,          V^,          ,          V^,          ,          V^,          ,          R,          ,
          # )rD         ^@r+   r'   s   &&r   f45TestTnc.f45e   s9    QqTAaD[1Q4'!A$.15===r   c                   ^ .^,          pV^,          ) V^,          ,          V^,          ,          V^,          ,          R,          V^ &   V^ ,          ) V^,          ,          V^,          ,          V^,          ,          R,          V^&   V^ ,          ) V^,          ,          V^,          ,          V^,          ,          R,          V^&   V^ ,          ) V^,          ,          V^,          ,          V^,          ,          R,          V^&   V^ ,          ) V^,          ,          V^,          ,          V^,          ,          R,          V^&   V# )r   rZ   r+   r,   s   && r   g45TestTnc.g45h   s    cAgQ4!A$1%!,u4AQ4!A$1%!,u4AQ4!A$1%!,u4AQ4!A$1%!,u4AQ4!A$1%!,u4A
r   c                F    V P                  V4      V P                  V4      3# r"   )r[   r^   r'   s   &&r   fg45TestTnc.fg45q   rX   r   c           
     Z   R^.\         P                  ) R.RR.3r!^^.p. p\        P                  ! V P                  VRV P
                  W P                  VP                  R7      p\        VP                  V P	                  V4      RR7       \        \        V4      VP                  4       R# )   NTNC)methodjacboundsoptionscallback:0yE>atol      )r?   infr   minimizer   r   r   appendr   funr   lennit)r   x0bndsxoptiterxress   &     r   test_minimize_tnc1TestTnc.test_minimize_tnc1v   s    7rvvgt_tTl;D1vEtww'+YY).7 	T:SZ)r   c                2   \         P                  ! R^.4      \         P                  ) R.RR.3r!^^.p\        P                  ! V P
                  VRW P                  R7      P                  p\        V P                  V4      V P                  V4      RR7       R# )rd   Nre   )rf   rh   ri   -C6?rl   rn   ro   )	r?   arrayrp   r   rq   r   r   r   r   r   rv   rw   rx   r   s   &    r   test_minimize_tnc1bTestTnc.test_minimize_tnc1b   sw    88RG$t&ED1vdggr%%)99>>?a 	

DGGDM=r   c           	        R^.\         P                  ) R.RR.3r!^^.p\        P                  ! V P                  VRRVV P
                  R7      P                  p\        V P                  V4      V P                  V4      RR7       R# )	rd   Nre   Trf   rg   rh   ri   rk   rl   rn   ro   )	r?   rp   r   rq   r#   r   r   r   r   r   s   &    r   test_minimize_tnc1cTestTnc.test_minimize_tnc1c   su    7rvvgt_dD\:D1vdhh5"&t&*ii112 	
 	
DGGDM=r   c           	     "   R^.\         P                  ) R.RR.3r!RR.p\        P                  ! V P                  VRV P
                  VV P                  R7      P                  p\        V P	                  V4      V P	                  V4      RR7       R# )	rd   Nr=   re   r   rk   rl   rn   AR)	r?   rp   r   rq   r   r   r   r   r   r   s   &    r   test_minimize_tnc2TestTnc.test_minimize_tnc2   sz    7rvvgt_sDk:D#S)dggr%"&''$&*ii112 	
 	
DGGDM=r   c           	     "   ^
^.\         P                  ) R.RR.3r!^ ^ .p\        P                  ! V P                  VRV P
                  VV P                  R7      P                  p\        V P	                  V4      V P	                  V4      RR7       R# )
   N        re   r   rk   rl   )	r?   rp   r   rq   r(   r-   r   r   r   r   s   &    r   test_minimize_tnc3TestTnc.test_minimize_tnc3   sy    7rvvgt_sDk:D1vdggr%"&''$&*ii112 	
 	
DGGDM=r   c           	         R R.RR.r!^^ .p\         P                  ! V P                  VRV P                  VV P                  R7      P
                  p\        V P                  V4      V P                  V4      RR7       R# )	      ?      ?Nre   r   rk   rl   r   Nr   N)r   rq   r4   r7   r   r   r   r   s   &    r   test_minimize_tnc4TestTnc.test_minimize_tnc4   sk    %.9i"841vdggr%"&''$&*ii112 	
 	
DGGDM=r   c           	         ^ ^ .RR.r!RR	.p\         P                  ! V P                  VRV P                  VV P                  R7      P
                  p\        V P                  V4      V P                  V4      RR7       R# )
r   re   r   rk   rl   Nro         Zpes-8R)r   rq   rA   rH   r   r   r   r   s   &    r   test_minimize_tnc5TestTnc.test_minimize_tnc5   sm    q6Ig.D$&9:dggr%"&''$&*ii112 	
 	
DGGDM=r   c           	     <   \         P                  ! . RO4      R.^,          r!^.^,          p\        P                  ! V P                  VRV P
                  VV P                  R7      P                  p\        V P	                  V4      V P	                  V4      RR7       R# )r   re   r   rk   rl   Nr   r   r   ir   )	r?   r   r   rq   rP   rS   r   r   r   r   s   &    r   test_minimize_tnc38TestTnc.test_minimize_tnc38   st    88,-	{1}Ds1udhh5"&((4&*ii112 	
 	TXXd^$?r   c           	        ^.^,          . ROr!. ROp\         P                  ! V P                  VRV P                  VV P                  R7      P
                  p\        V P                  V4      V P                  V4      RR7       R# )rd   re   r   rk   rl   N)r   r   )r   rd   )r   r   )r   r   )r      r   rd   r   r   r   )r   rq   r[   r^   r   r   r   r   s   &    r   test_minimize_tnc45TestTnc.test_minimize_tnc45   se    37DDdhh5"&((4&*ii112 	
 	TXXd^$?r   c           	     l   V P                   R^.\        P                  ) R.RR.3r2p^^.p\        P                  ! WVR\        P
                  P                  ^R7      w  r%p\        V P                  V4      V P                  V4      RR\        P
                  P                  V,          ,           R7       R# )	rd   N)rh   argsmessagesr   rk   TNC failed with status: rm   err_msgrn   ro   rN   
r#   r?   rp   r   fmin_tnc_tncMSG_NONEr   r   	RCSTRINGSr   fgr   rh   rx   nfrcs   &      r   	test_tnc1TestTnc.test_tnc1   s    2q'bffWdOdD\+Jv1v%%bF/7}}/E/E-02	r 	
DGGDM : ( 7 7 ;!<	=r   c           	     j   R^.\         P                  ) R.RR.3r!^^.p\        P                  ! V P                  VRV\        P
                  P                  ^R7      w  rp\        V P	                  V4      V P	                  V4      RR\        P
                  P                  V,          ,           R7       R# )	rd   NT)approx_gradrh   r   r   r~   r   r   rn   ro   )	r?   rp   r   r   r   r   r   r   r   r   r   rh   rx   r   r   s   &     r   
test_tnc1bTestTnc.test_tnc1b   s    Gwod|<61v%%dggqd-3/7}}/E/E-02	r
 	
DGGDM : ( 7 7 ;!<	=r   c           	     |   R^.\         P                  ) R.RR.3r!^^.p\        P                  ! V P                  WP
                  V\        P                  P                  ^R7      w  rp\        V P	                  V4      V P	                  V4      RR\        P                  P                  V,          ,           R7       R# )rd   N)fprimerh   r   r   rk   r   r   rn   ro   )
r?   rp   r   r   r   r   r   r   r   r   r   s   &     r   
test_tnc1cTestTnc.test_tnc1c   s    Gwod|<61v%%dggq-3/7}}/E/E-02	r
 	
DGGDM : ( 7 7 ;!<	=r   c                j   V P                   R^.\        P                  ) R.RR.3r2pRR.p\        P                  ! WV\        P
                  P                  ^R7      w  r%p\        V P                  V4      V P                  V4      RR\        P
                  P                  V,          ,           R7       R# )	rd   Nr=   rh   r   r   rk   r   r   rn   r   r   r   s   &      r   	test_tnc2TestTnc.test_tnc2   s    2q'bffWdOc4[+Iv#S)%%bF/7}}/E/E-02	r 	
DGGDM : ( 7 7 ;!<	=r   c                j   V P                   ^
^.\        P                  ) R.RR.3r2p^ ^ .p\        P                  ! WV\        P
                  P                  ^R7      w  r%p\        V P                  V4      V P                  V4      RR\        P
                  P                  V,          ,           R7       R# )r   Nr   r   rk   r   r   )
r0   r?   rp   r   r   r   r   r   r(   r   r   s   &      r   	test_tnc3TestTnc.test_tnc3   s    2q'bffWdOc4[+Iv1v%%bF/7}}/E/E-02	r 	
DGGDM : ( 7 7 ;!<	=r   c                D   V P                   R R.RR.r2p^^ .p\        P                  ! WV\        P                  P                  ^R7      w  r%p\        V P                  V4      V P                  V4      RR\        P                  P                  V,          ,           R7       R# )	r   r   Nr   rk   r   r   r   r   )r:   r   r   r   r   r   r4   r   r   s   &      r   	test_tnc4TestTnc.test_tnc4   s    5%.9i2Hv1v%%bF/7}}/E/E-02	r 	
DGGDM : ( 7 7 ;!<	=r   c                D   V P                   ^ ^ .RR.r2pRR	.p\        P                  ! WV\        P                  P                  ^R7      w  r%p\        V P                  V4      V P                  V4      RR\        P                  P                  V,          ,           R7       R# )
r   r   rk   r   r   Nr   r   r   r   )rK   r   r   r   r   r   rA   r   r   s   &      r   	test_tnc5TestTnc.test_tnc5  s    1a&9W*=v$&9:%%bF/7}}/E/E-02	r 	
DGGDM : ( 7 7 ;!<	=r   c                   V P                   \        P                  ! . RO4      R.^,          r2p^.^,          p\        P                  ! WV\        P
                  P                  ^R7      w  r%p\        V P                  V4      V P                  V4      RR\        P
                  P                  V,          ,           R7       R# )r   r   rk   r   r   Nr   r   )
rV   r?   r   r   r   r   r   r   rP   r   r   s   &      r   
test_tnc38TestTnc.test_tnc38  s    		288,<#=	{1}vs1u%%bF/7}}/E/E-02	r 	TXXd^$ : ( 7 7 ;!<	=r   c                P   V P                   ^.^,          . ROr2p. ROp\        P                  ! WV\        P                  P                  ^R7      w  r%p\        V P                  V4      V P                  V4      RR\        P                  P                  V,          ,           R7       R# )rd   r   rk   r   r   Nr   r   )ra   r   r   r   r   r   r[   r   r   s   &      r   
test_tnc45TestTnc.test_tnc45#  s    		A37 -=v%%bF/7}}/E/E-02	r 	TXXd^$ : ( 7 7 ;!<	=r   c           	        R  pR pR p\         P                  ! \        4      ;_uu_ 4        \        P                  ! V^ ^.RR7       RRR4       \         P                  ! \
        4      ;_uu_ 4        \        P                  ! V^ ^.RVR7       RRR4       R#   + '       g   i     LY; i  + '       g   i     R# ; i)c                     \        R 4      h)myfunc)RuntimeErrorr   s   &r   r   /TestTnc.test_raising_exceptions.<locals>.myfunc3  s    x((r   c                 .    \         P                  ! V 4      # r"   )r   rosenr   s   &r   myfunc10TestTnc.test_raising_exceptions.<locals>.myfunc16  s    >>!$$r   c                     \        R 4      h)rj   )
ValueErrorr   s   &r   rj   1TestTnc.test_raising_exceptions.<locals>.callback9  s    Z((r   re   )rf   N)rf   rj   )pytestraisesr   r   rq   r   )r   r   r   rj   s   &   r   test_raising_exceptionsTestTnc.test_raising_exceptions0  s    	)	%	) ]]<((fq!fU; ) ]]:&&!Q '& )( '&&s   B2B,B)	,B=	c           	     z   R  p\         P                  pR.^,          p. ROp\         P                  ! W$VRRR/R7      p\         P                  ! W$VRRR/VR7      p\        VP                  VP                  4       \        VP
                  VP
                  4       \        VP                  VP                  4       R# )	c                     R # r"   r+   r   s   &r   rj   DTestTnc.test_callback_shouldnt_affect_minimization.<locals>.callbackJ  s    r   re   r   i  )rh   rf   ri   )rh   rf   ri   rj   N)r   r   )r   rd   r   g      @)r   r   rq   r   r   rs   r   nfev)r   rj   rs   rh   rv   rz   res2s   &      r   *test_callback_shouldnt_affect_minimization2TestTnc.test_callback_shouldnt_affect_minimizationD  s    	 nnQF58T:J
   F58T:J
 	&#''*TYY)r   r   Nr   ).__name__
__module____qualname____firstlineno____doc__r   r   r   r#   r(   r-   r0   r4   r7   r:   rA   rH   rK   rP   rS   rV   r[   r^   ra   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes____classdictcell__)__classdict__s   @r   r   r      s     3
F,3&/&.&=
(>(
	*>>>>>>@@
===
=
=
=
=
==(* *r   r   )r   r   numpy.testingr   r   numpyr?   mathr   scipyr   r   r+   r   r   <module>r      s'     7   L* L*r   