
    tKg                     T    d dl Zd dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZ  G d d      Zy)    N)assert_allcloseassert_equal)BoundsLinearConstraintNonlinearConstraintOptimizeResultminimizec                   d    e Zd Zd Zedd       Zed        Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zy)
TestCOBYQAc                 (    ddg| _         ddi| _        y )Ng@gQ?maxfevd   )x0optionsselfs    d/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/optimize/tests/test_cobyqa.pysetup_methodzTestCOBYQA.setup_method   s    , #    c                 <    | d   dz  |t        | d         dz  z  z   S )Nr            )abs)xcs     r   funzTestCOBYQA.fun   s&    tQwS1Y\)))r   c                 *    | d   dz  | d   dz  z   dz
  S )Nr   r   r   g      9@ )r   s    r   conzTestCOBYQA.con   s"    tQw1q 4''r   c                 D    G d d      } G d d      } |       } |       }t        | j                  dd      }t        | j                  | j                  d||| j
                        }t        | j                  | j                  d||| j
                        }t        j                  d      d	g}t        |j                  |d
       |j                  sJ |j                         |j                  dk  sJ |       |j                  dk  sJ |       |j                  | j                  |      dz   k  sJ |       |j                  |j                  k(  sJ d       t        |j                  |j                         |j                  sJ |j                         |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                   |j                   k(  sJ |j                  |j                  k(  sJ d       y )Nc                       e Zd Zd Zd Zy)1TestCOBYQA.test_minimize_simple.<locals>.Callbackc                     d| _         y Nr   n_callsr   s    r   __init__z:TestCOBYQA.test_minimize_simple.<locals>.Callback.__init__   	     r   c                 f    t        |t        j                        sJ | xj                  dz  c_        y Nr   )
isinstancenpndarrayr'   )r   r   s     r   __call__z:TestCOBYQA.test_minimize_simple.<locals>.Callback.__call__!   s$    !!RZZ000!r   N__name__
__module____qualname__r(   r/   r   r   r   Callbackr#          !"r   r4   c                       e Zd Zd Zd Zy):TestCOBYQA.test_minimize_simple.<locals>.CallbackNewSyntaxc                     d| _         y r%   r&   r   s    r   r(   zCTestCOBYQA.test_minimize_simple.<locals>.CallbackNewSyntax.__init__&   r)   r   c                 R    t        |t              sJ | xj                  dz  c_        y r+   )r,   r   r'   )r   intermediate_results     r   r/   zCTestCOBYQA.test_minimize_simple.<locals>.CallbackNewSyntax.__call__)   s!    !"5~FFF!r   Nr0   r   r   r   CallbackNewSyntaxr7   %   r5   r   r;           cobyqa)methodconstraintscallbackr   888@UUUUUU?-C6?atol:0yE>r   MbP?z<Callback is not called exactly once for every function eval.)r   r    r	   r   r   r   r-   sqrtr   r   successmessagemaxcvnfevr'   r   nit)	r   r4   r;   r@   callback_new_syntaxr?   solsol_newsolutions	            r   test_minimize_simplezTestCOBYQA.test_minimize_simple   s   	" 	"	" 	" :/1 *$((C=HHGG#LL
 HHGG#(LL
 GG,-y9xd3{{'CKK'{yy4$$xx3##ww(+d227C72xx8+++ 	KJ	K+SUUGII&//ww'++%%%yyGMM)))xx7<<'''ww'++%%%||2::: 	KJ	K:r   c                 d     fd}t        ddgddg      t         j                  dd      }t        | j                  d| j
                        }t        j                  d	      d
g}t        |j                  |d       |j                  sJ |j                         |j                  dk  sJ |       t        j                  j                  |j                  k        r,t        j                  |j                  j                  k        sJ |       |j                   dk  sJ |       |j"                   j#                  |      dz   k  sJ |       t        ddgddg      t        | j                  d| j
                        }|j                  rJ |j                         |j                  dkD  sJ |       t        j                  j                  |j                  k        r,t        j                  |j                  j                  k        sJ |       |j                   dk  sJ |       y )Nc                     t        j                  j                  | k        r"t        j                  | j                  k        sJ j	                  |       S N)r-   alllbubr   )r   boundsr   s    r   fun_check_boundsz9TestCOBYQA.test_minimize_bounds.<locals>.fun_check_boundsT   s>    66&))q.)bffQ&))^.DDD88A;r         @333333?      @ffffff?r<   r=   r>   rY   r?   r   rA   rB   rC   rD   rF   r   rG   g      @g?gffffff?)r   r   r    r	   r   r   r-   rH   r   r   rI   rJ   rK   rV   rW   rX   rL   r   )r   rZ   r?   rO   rQ   rY   s   `    @r   test_minimize_boundszTestCOBYQA.test_minimize_boundsS   s   	
 c
S#J/)$((C=GG#LL
 GG,-y9xd3{{'CKK'{yy4$$vvfii355()bffSUUfii5G.HM#MHxx3##ww(+d227C72 c
S$K0GG#LL
 ;;++yy4$$vvfii355()bffSUUfii5G.HM#MHxx3##r   c                    t        ddgdd      }t        | j                  | j                  d|| j                        }dt        j                  d      z
  dz  t        j                  d      dz
  dz  g}t        |j                  |d	       |j                  sJ |j                         |j                  d
k  sJ |       |j                  dk  sJ |       |j                  | j                  |      dz   k  sJ |       y )N      ?r=   r>   r?   r         r   r   rC   rD   rF   r   rG   )r   r	   r   r   r   r-   rH   r   r   rI   rJ   rK   rL   r   r?   rO   rQ   s       r    test_minimize_linear_constraintsz+TestCOBYQA.test_minimize_linear_constraintsz   s    &Sz3<HHGG#LL
 ^q(2771:>Q*>?xd3{{'CKK'{yy4$$xx3##ww(+d227C72r   c                    t        | j                  dd      }t        | j                  | j                  dd|| j
                        }t        j                  d      dg}t        |j                  |d       |j                  sJ |j                         |j                  d	k  sJ |       |j                  d
k  sJ |       |j                  | j                  |d      dz   k  sJ |       y )Nr<   )       @r=   )argsr>   r?   r   g988@gUUUUUU?rC   rD   rF   r   ri   rG   )r   r    r	   r   r   r   r-   rH   r   r   rI   rJ   rK   rL   rf   s       r   test_minimize_argszTestCOBYQA.test_minimize_args   s    )$((C=HHGG#LL
 GG-.	:xd3{{'CKK'{yy4$$xx3##ww(C0477<<7r   c           
           fd}t        ddgddg      }t         j                  dd      }t         j                   j
                  d|| j                        }d	D ]  }t        | j
                  |fd|| j                  
      }t        |j                  |j                         |j                  sJ |j                         |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  rJ  t        j                  t               5  t         fd j
                  d|| j                         d d d        y # 1 sw Y   y xY w)Nc                 ~    t        j                  j                  |             }t        j                  |d|z        S )N)r   )r-   arrayr   reshape)r   dimfr   s      r   	fun_arrayz1TestCOBYQA.test_minimize_array.<locals>.fun_array   s.    !%A::a,,r   r[   r\   r]   r^   r<   r=   r_   )r   r   r   )rj   r>   rY   r?   r   c                 n    t        j                  j                  |       j                  |       g      S rU   )r-   rn   r   )r   r   s    r   <lambda>z0TestCOBYQA.test_minimize_array.<locals>.<lambda>   s#    "((DHHQK!#=>r   )r   r   r    r	   r   r   r   r   r   rI   rJ   rK   rL   rM   pytestraises	TypeError)r   rr   rY   r?   rO   rp   	sol_arrays   `      r   test_minimize_arrayzTestCOBYQA.test_minimize_array   sO   	-
 c
S#J/)$((C=HHGG#LL
 C V'I 	,$$7i&7&77$77imm+++99	///88y~~---77imm+++ $ ]]9%>' &%%s   )E??Fc                     t        | j                  dd      }ddi}t        | j                  | j                  d||      }|j
                  rJ |j                         |j                  dk  sJ |       y )Nr<   r   r   r=   rc   )r   r    r	   r   r   rI   rJ   rL   r   r?   r   rO   s       r   test_minimize_maxfevzTestCOBYQA.test_minimize_maxfev   sj    )$((C=Q-HHGG#
 ;;++xx1}!c!}r   c                     t        | j                  dd      }ddi}t        | j                  | j                  d||      }|j
                  rJ |j                         |j                  dk  sJ |       y )Nr<   maxiterr   r=   rc   )r   r    r	   r   r   rI   rJ   rM   r{   s       r   test_minimize_maxiterz TestCOBYQA.test_minimize_maxiter   sj    )$((C=a.HHGG#
 ;;++ww!| S |r   c                    t        | j                  dd      }t        | j                  | j                  d|| j
                        }t        | j
                        }|j                  |d<   t        | j                  | j                  d||      }|j                  sJ |j                         |j                  dk  sJ |       |j                  |j                  k  sJ |       |j                  |j                  k  sJ |       y )Nr<   r=   rc   f_targetrF   )r   r    r	   r   r   r   dictrI   rJ   rK   rL   )r   r?   sol_refr   rO   s        r   test_minimize_f_targetz!TestCOBYQA.test_minimize_f_target   s    )$((C=HHGG#LL
 t||$%kk
HHGG#
 {{'CKK'{yy4$$xx7<<',,'ww'++%*s*%r   N)rb   )r1   r2   r3   r   staticmethodr   r    rR   r`   rg   rk   ry   r|   r   r   r   r   r   r   r      s[    ' * * ( (5Kn%$N8 ="*X"!+r   r   )numpyr-   ru   numpy.testingr   r   scipy.optimizer   r   r   r   r	   r   r   r   r   <module>r      s$      7 h+ h+r   