
    e!h                     \    d dl Z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 )N@Q?maxfevd   )x0optionsselfs    h/var/www/html/diagnosisapp-backend/venv/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                 $    G d d      } G d d      }ddg} |       } |       }t        | j                  dd      }t        | j                  |d||| j                  	      }t        | 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    t        j                         | _        d| _        y Nr   	threadingLocklockn_callsr   s    r   __init__z:TestCOBYQA.test_minimize_simple.<locals>.Callback.__init__       %NN,	 r   c                     t        |t        j                        sJ | j                  5  | xj                  dz  c_        d d d        y # 1 sw Y   y xY wNr   )
isinstancenpndarrayr+   r,   )r   r   s     r   __call__z:TestCOBYQA.test_minimize_simple.<locals>.Callback.__call__#   s@    !!RZZ000YY &LLA%L& & &s   AAN__name__
__module____qualname__r-   r4   r!   r   r   Callbackr%          !&r   r9   c                       e Zd Zd Zd Zy):TestCOBYQA.test_minimize_simple.<locals>.CallbackNewSyntaxc                 D    t        j                         | _        d| _        y r'   r(   r   s    r   r-   zCTestCOBYQA.test_minimize_simple.<locals>.CallbackNewSyntax.__init__)   r.   r   c                     t        |t              sJ | j                  5  | xj                  dz  c_        d d d        y # 1 sw Y   y xY wr0   )r1   r   r+   r,   )r   intermediate_results     r   r4   zCTestCOBYQA.test_minimize_simple.<locals>.CallbackNewSyntax.__call__-   s=    !"5~FFFYY &LLA%L& & &s	   >ANr5   r!   r   r   CallbackNewSyntaxr<   (   r:   r   r@   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   r2   sqrtr   r   successmessagemaxcvnfevr,   r   nit)
r   r9   r@   r   rE   callback_new_syntaxrD   solsol_newsolutions
             r   test_minimize_simplezTestCOBYQA.test_minimize_simple   s   	& 	&	& 	& D\:/1 *$((C=HH#LL
 HH#(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)r2   alllbubr   )r   boundsr   s    r   fun_check_boundsz9TestCOBYQA.test_minimize_bounds.<locals>.fun_check_boundsZ   s>    66&))q.)bffQ&))^.DDD88A;r         @333333?      @ffffff?rA   rB   rC   r^   rD   r   rF   rG   rH   rI   rK   r   rL   g      @g?gffffff?)r   r   r"   r	   r   r   r2   rM   r   r   rN   rO   rP   r[   r\   r]   rQ   r   )r   r_   rD   rT   rV   r^   s   `    @r   test_minimize_boundszTestCOBYQA.test_minimize_boundsY   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      ?rB   rC   rD   r         r   r   rH   rI   rK   r   rL   )r   r	   r   r   r   r2   rM   r   r   rN   rO   rP   rQ   r   rD   rT   rV   s       r    test_minimize_linear_constraintsz+TestCOBYQA.test_minimize_linear_constraints   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 )NrA   )       @rB   )argsrC   rD   r   g988@gUUUUUU?rH   rI   rK   r   rn   rL   )r   r"   r	   r   r   r   r2   rM   r   r   rN   rO   rP   rQ   rk   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   )r2   arrayr   reshape)r   dimfr   s      r   	fun_arrayz1TestCOBYQA.test_minimize_array.<locals>.fun_array   s.    !%A::a,,r   r`   ra   rb   rc   rA   rB   rd   )r   r   r   )ro   rC   r^   rD   r   c                 n    t        j                  j                  |       j                  |       g      S rZ   )r2   rs   r   )r   r   s    r   <lambda>z0TestCOBYQA.test_minimize_array.<locals>.<lambda>   s%    "((DHHQK!#=> r   )r   r   r"   r	   r   r   r   r   r   rN   rO   rP   rQ   rR   pytestraises	TypeError)r   rw   r^   rD   rT   ru   	sol_arrays   `      r   test_minimize_arrayzTestCOBYQA.test_minimize_array   s]   	-
 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 )NrA   r   r   rB   rh   )r   r"   r	   r   r   rN   rO   rQ   r   rD   r   rT   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 )NrA   maxiterr   rB   rh   )r   r"   r	   r   r   rN   rO   rR   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 )NrA   rB   rh   f_targetrK   )r   r"   r	   r   r   r   dictrN   rO   rP   rQ   )r   rD   sol_refr   rT   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)rg   )r6   r7   r8   r   staticmethodr   r"   rW   re   rl   rp   r~   r   r   r   r!   r   r   r   r      s[    ' * * ( (:Kx%$N8 ="*X"!+r   r   )numpyr2   rz   r)   numpy.testingr   r   scipy.optimizer   r   r   r   r	   r   r!   r   r   <module>r      s'       7 m+ m+r   