
    Pim                        d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZ  G d d          Z G d d	          Z G d
 d          Z G d d          Z G d d          Z G d de          Z G d de          Z G d de          Z G d d          Z G d d          Z G d d          Zd Zd Z d Z!d Z" G d  d!          Z#dS )"    N)
block_diag)	csc_array)assert_array_almost_equalassert_array_lessassert_)NonlinearConstraintLinearConstraintBoundsminimizeBFGSSR1rosenc                   B    e Zd ZdZd	dZd Zd Zd Zed             Z	dS )
MaratosProblem 15.4 from Nocedal and Wright

    The following optimization problem:
        minimize 2*(x[0]**2 + x[1]**2 - 1) - x[0]
        Subject to: x[0]**2 + x[1]**2 - 1 = 0
    <   Nc                     |dz  t           j        z  }t          j        |          t          j        |          g| _        t          j        ddg          | _        || _        || _        d | _	        d S N         ?        
nppicossinx0arrayx_opt
constr_jacconstr_hessboundsselfdegreesr    r!   radss        /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/scipy/optimize/tests/test_minimize_constrained.py__init__zMaratos.__init__   ]    s{25 6$<<.XsCj))
$&    c                 N    d|d         dz  |d         dz  z   dz
  z  |d         z
  S N   r       r$   xs     r'   funzMaratos.fun"   s0    !A$'AaD!G#a'(1Q4//r*   c                 X    t          j        d|d         z  dz
  d|d         z  g          S N   r   r.   r   r   r0   s     r'   gradzMaratos.grad%   s+    x1Q41QqT6*+++r*   c                 0    dt          j        d          z  S Nr5   r-   r   eyer0   s     r'   hesszMaratos.hess(       {r*   c                 v    d }| j         d }n| j         }| j        d }n| j        }t          |dd||          S )Nc                 0    | d         dz  | d         dz  z   S Nr   r-   r.   r/   r1   s    r'   r2   zMaratos.constr.<locals>.fun-       Q47QqT1W$$r*   c                 0    d| d         z  d| d         z  ggS r,   r/   rA   s    r'   jaczMaratos.constr.<locals>.jac1        1Q41Q4())r*   c                 B    d|d         z  t          j        d          z  S Nr-   r   r:   r1   vs     r'   r<   zMaratos.constr.<locals>.hess7       1vbfQii''r*   r.   r    r!   r   r$   r2   rD   r<   s       r'   constrzMaratos.constr+   u    	% 	% 	% ?"* * * * /C#( ( ( ( #D"31c4888r*   r   NN
__name__
__module____qualname____doc__r(   r2   r7   r<   propertyrM   r/   r*   r'   r   r      sz            0 0 0, , ,   9 9 X9 9 9r*   r   c                   H    e Zd ZdZd
dZd Zd Zd Zd Ze	d	             Z
dS )MaratosTestArgsr   r   Nc                     |dz  t           j        z  }t          j        |          t          j        |          g| _        t          j        ddg          | _        || _        || _        || _	        || _
        d | _        d S r   )r   r   r   r   r   r   r   r    r!   abr"   )r$   rY   rZ   r%   r    r!   r&   s          r'   r(   zMaratosTestArgs.__init__G   sk    s{25 6$<<.XsCj))
$&r*   c                 N    | j         |k    s| j        |k    rt                      d S N)rY   rZ   
ValueError)r$   rY   rZ   s      r'   
_test_argszMaratosTestArgs._test_argsQ   s(    6Q;;$&A++,, &+r*   c                 z    |                      ||           d|d         dz  |d         dz  z   dz
  z  |d         z
  S r,   )r^   r$   r1   rY   rZ   s       r'   r2   zMaratosTestArgs.funU   sD    1!A$'AaD!G#a'(1Q4//r*   c                     |                      ||           t          j        d|d         z  dz
  d|d         z  g          S r4   )r^   r   r   r`   s       r'   r7   zMaratosTestArgs.gradY   s?    1x1Q41QqT6*+++r*   c                 \    |                      ||           dt          j        d          z  S r9   )r^   r   r;   r`   s       r'   r<   zMaratosTestArgs.hess]   s(    1{r*   c                 v    d }| j         d }n| j         }| j        d }n| j        }t          |dd||          S )Nc                 0    | d         dz  | d         dz  z   S r@   r/   rA   s    r'   r2   z#MaratosTestArgs.constr.<locals>.func   rB   r*   c                 0    d| d         z  d| d         z  ggS r4   r/   rA   s    r'   rD   z#MaratosTestArgs.constr.<locals>.jacg   rE   r*   c                 B    d|d         z  t          j        d          z  S rG   r:   rH   s     r'   r<   z$MaratosTestArgs.constr.<locals>.hessm   rJ   r*   r.   rK   rL   s       r'   rM   zMaratosTestArgs.constra   rN   r*   rO   )rQ   rR   rS   rT   r(   r^   r2   r7   r<   rU   rM   r/   r*   r'   rW   rW   ?   s              0 0 0, , ,   9 9 X9 9 9r*   rW   c                   R    e Zd ZdZd	dZd Zed             Zd Zed             Z	dS )
MaratosGradInFuncr   r   Nc                     |dz  t           j        z  }t          j        |          t          j        |          g| _        t          j        ddg          | _        || _        || _        d | _	        d S r   r   r#   s        r'   r(   zMaratosGradInFunc.__init__}   r)   r*   c                     d|d         dz  |d         dz  z   dz
  z  |d         z
  t          j        d|d         z  dz
  d|d         z  g          fS )Nr-   r   r.   r5   r6   r0   s     r'   r2   zMaratosGradInFunc.fun   s]    1Q47QqT1W$q()AaD0!AaD&(AadF+,,. 	.r*   c                     dS )NTr/   r$   s    r'   r7   zMaratosGradInFunc.grad   s    tr*   c                 0    dt          j        d          z  S r9   r:   r0   s     r'   r<   zMaratosGradInFunc.hess   r=   r*   c                 v    d }| j         d }n| j         }| j        d }n| j        }t          |dd||          S )Nc                 0    | d         dz  | d         dz  z   S r@   r/   rA   s    r'   r2   z%MaratosGradInFunc.constr.<locals>.fun   rB   r*   c                 0    d| d         z  d| d         z  ggS r4   r/   rA   s    r'   rD   z%MaratosGradInFunc.constr.<locals>.jac   rE   r*   c                 B    d|d         z  t          j        d          z  S rG   r:   rH   s     r'   r<   z&MaratosGradInFunc.constr.<locals>.hess   rJ   r*   r.   rK   rL   s       r'   rM   zMaratosGradInFunc.constr   rN   r*   rO   )
rQ   rR   rS   rT   r(   r2   rU   r7   r<   rM   r/   r*   r'   rh   rh   u   s            . . .   X   9 9 X9 9 9r*   rh   c                   B    e Zd ZdZddZd Zd Zd Zed             Z	dS )	HyperbolicIneqa  Problem 15.1 from Nocedal and Wright

    The following optimization problem:
        minimize 1/2*(x[0] - 2)**2 + 1/2*(x[1] - 1/2)**2
        Subject to: 1/(x[0] + 1) - x[1] >= 1/4
                                   x[0] >= 0
                                   x[1] >= 0
    Nc                     ddg| _         ddg| _        || _        || _        t	          dt
          j                  | _        d S )Nr   g~T>?g~1[?)r   r   r    r!   r
   r   infr"   )r$   r    r!   s      r'   r(   zHyperbolicIneq.__init__   s?    a&)
$&Q''r*   c                 H    d|d         dz
  dz  z  d|d         dz
  dz  z  z   S )N      ?r   r-   r.   r/   r0   s     r'   r2   zHyperbolicIneq.fun   s/    AaD1Hq= 3!s
Q#666r*   c                 .    |d         dz
  |d         dz
  gS )Nr   r-   r.   rw   r/   r0   s     r'   r7   zHyperbolicIneq.grad   s    !q!A$*%%r*   c                 *    t          j        d          S Nr-   r:   r0   s     r'   r<   zHyperbolicIneq.hess   s    vayyr*   c                     d }| j         d }n| j         }| j        d }n| j        }t          |dt          j        ||          S )Nc                 0    d| d         dz   z  | d         z
  S )Nr.   r   r/   rA   s    r'   r2   z"HyperbolicIneq.constr.<locals>.fun   s    adQh<!A$&&r*   c                 *    d| d         dz   dz  z  dggS )Nr   r.   r-   r/   rA   s    r'   rD   z"HyperbolicIneq.constr.<locals>.jac   s!    QqTAXM)2.//r*   c                 l    d|d         z  t          j        d| d         dz   dz  z  dgddgg          z  S )Nr-   r   r.      r6   rH   s     r'   r<   z#HyperbolicIneq.constr.<locals>.hess   sH    1vbhAaD1Hq=!(<)*A(0 1 1 1 1r*   g      ?r    r!   r   r   ru   rL   s       r'   rM   zHyperbolicIneq.constr   sw    	' 	' 	' ?"0 0 0 0 /C#1 1 1 1 #D"3bfc4@@@r*   )NNrP   r/   r*   r'   rs   rs      s         ( ( ( (7 7 7& & &   A A XA A Ar*   rs   c                   B    e Zd ZdZd
dZd Zd Zd Zed             Z	d	S )
RosenbrockzRosenbrock function.

    The following optimization problem:
        minimize sum(100.0*(x[1:] - x[:-1]**2.0)**2.0 + (1 - x[:-1])**2.0)
    r-   r   c                     t           j                            |          }|                    dd|          | _        t          j        |          | _        d | _        d S )Nr~   r.   )r   randomRandomStateuniformr   onesr   r"   )r$   nrandom_staterngs       r'   r(   zRosenbrock.__init__   sH    i##L11++b!Q''WQZZ
r*   c                     t          j        |          }t          j        d|dd          |d d         dz  z
  dz  z  d|d d         z
  dz  z   d          }|S )Ng      Y@r.   r~          @r   axis)r   asarraysum)r$   r1   rs      r'   r2   zRosenbrock.fun   sh    JqMMF5AabbEAcrcFCK/#55QssVc8II  r*   c                 z   t          j        |          }|dd         }|d d         }|dd          }t          j        |          }d||dz  z
  z  d||dz  z
  z  |z  z
  dd|z
  z  z
  |dd<   d|d         z  |d         |d         dz  z
  z  dd|d         z
  z  z
  |d<   d|d         |d         dz  z
  z  |d<   |S )	Nr.   r~   r-        pr   )r   r   
zeros_like)r$   r1   xmxm_m1xm_p1ders         r'   r7   zRosenbrock.grad   s    JqMMqtW#2#!""mABM*EBEM*R/023q2v,?AbD	!!qtQw/!q1Q4x.@A22)*B
r*   c                    t          j        |          }t          j        d|d d         z  d          t          j        d|d d         z  d          z
  }t          j        t	          |          |j                  }d|d         dz  z  d|d         z  z
  dz   |d<   d	|d<   d
d|dd         dz  z  z   d|dd          z  z
  |dd<   |t          j        |          z   }|S )Nr   r~   r.   r   )dtypei  r   r-   r      )r   
atleast_1ddiagzeroslenr   )r$   r1   Hdiagonals       r'   r<   zRosenbrock.hess   s    M!GD1SbS6M1%%afb(A(AA8CFF!'222QqT1WnsQqTz1A5ta"gqj003122;>2!!!r*   c                     dS )Nr/   r/   rl   s    r'   rM   zRosenbrock.constr   s    rr*   N)r-   r   rP   r/   r*   r'   r   r      sz              
 
 
     X  r*   r   c                   0    e Zd ZdZddZed             ZdS )IneqRosenbrockzRosenbrock subject to inequality constraints.

    The following optimization problem:
        minimize sum(100.0*(x[1] - x[0]**2)**2.0 + (1 - x[0])**2)
        subject to: x[0] + 2 x[1] <= 1

    Taken from matlab ``fmincon`` documentation.
    r   c                 p    t                               | d|           ddg| _        ddg| _        d | _        d S )Nr-   r~         gn?g$?r   r(   r   r   r"   r$   r   s     r'   r(   zIneqRosenbrock.__init__	  s<    D!\222t*f%
r*   c                 H    ddgg}d}t          |t          j         |          S Nr.   r-   r	   r   ru   )r$   ArZ   s      r'   rM   zIneqRosenbrock.constr  s(    VHBF7A...r*   Nr   rQ   rR   rS   rT   r(   rU   rM   r/   r*   r'   r   r      sM             / / X/ / /r*   r   c                       e Zd ZdZddZdS )BoundedRosenbrocka  Rosenbrock subject to inequality constraints.

    The following optimization problem:
        minimize sum(100.0*(x[1] - x[0]**2)**2.0 + (1 - x[0])**2)
        subject to:  -2 <= x[0] <= 0
                      0 <= x[1] <= 2

    Taken from matlab ``fmincon`` documentation.
    r   c                     t                               | d|           ddg| _        d | _        t	          ddgddg          | _        d S )Nr-   gɿg?r   r   )r   r(   r   r   r
   r"   r   s     r'   r(   zBoundedRosenbrock.__init__   sI    D!\222+
b!Wq!f--r*   Nr   )rQ   rR   rS   rT   r(   r/   r*   r'   r   r     s2         . . . . . .r*   r   c                   0    e Zd ZdZddZed             ZdS )EqIneqRosenbrocka*  Rosenbrock subject to equality and inequality constraints.

    The following optimization problem:
        minimize sum(100.0*(x[1] - x[0]**2)**2.0 + (1 - x[0])**2)
        subject to: x[0] + 2 x[1] <= 1
                    2 x[0] + x[1] = 1

    Taken from matlab ``fimincon`` documentation.
    r   c                 p    t                               | d|           ddg| _        ddg| _        d | _        d S )Nr-   r~   r   gWs`?g|\*?r   r   s     r'   r(   zEqIneqRosenbrock.__init__1  s<    D!\222t*w'
r*   c                 x    ddgg}d}ddgg}d}t          |t          j         |          t          |||          fS r   r   )r$   A_ineqb_ineqA_eqb_eqs        r'   rM   zEqIneqRosenbrock.constr7  sN    a&Ax "&&99 tT224 	4r*   Nr   r   r/   r*   r'   r   r   '  sM             4 4 X4 4 4r*   r   c                   R    e Zd ZdZ	 	 ddZd Zd Zd Zd	 Zd
 Z	e
d             ZdS )Eleca  Distribution of electrons on a sphere.

    Problem no 2 from COPS collection [2]_. Find
    the equilibrium state distribution (of minimal
    potential) of the electrons positioned on a
    conducting sphere.

    References
    ----------
    .. [1] E. D. Dolan, J. J. Mor'{e}, and T. S. Munson,
           "Benchmarking optimization software with COPS 3.0.",
            Argonne National Lab., Argonne, IL (US), 2004.
    r   r   Nc                 `   || _         t          j                            |          | _        | j                            ddt          j        z  | j                   }| j                            t          j         t          j        | j                   }t          j        |          t          j        |          z  }t          j        |          t          j        |          z  }t          j        |          }	t          j	        |||	f          | _
        d | _        || _        || _        d | _        d S )Nr   r-   )n_electronsr   r   r   r   r   r   r   r   hstackr   r   r    r!   r"   )
r$   r   r   r    r!   phithetar1   yzs
             r'   r(   zElec.__init__O  s    &9((66hq!be)T-=>>  "%0@AAF5MMBF3KK'F5MMBF3KK'F5MM)Q1I&&
$&r*   c                 |    |d | j                  }|| j         d| j         z           }|d| j         z  d          }|||fS rz   r   )r$   r1   x_coordy_coordz_coords        r'   _get_cordinateszElec._get_cordinates_  sT    %T%%&D$Q)9%99:A(())*((r*   c                     |                      |          \  }}}|d d d f         |z
  }|d d d f         |z
  }|d d d f         |z
  }|||fS r\   r   )r$   r1   r   r   r   dxdydzs           r'   _compute_coordinate_deltaszElec._compute_coordinate_deltase  sm    $($8$8$;$;!'QQQW'QQQW'QQQW'2rzr*   c                    |                      |          \  }}}t          j        d          5  |dz  |dz  z   |dz  z   dz  }d d d            n# 1 swxY w Y   d|t          j        |          <   dt          j        |          z  S )Nignoredivider-   r   r   rw   )r   r   errstatediag_indices_fromr   )r$   r1   r   r   r   dm1s         r'   r2   zElec.funl  s    44Q77
B[))) 	2 	2q52q5=2q5(T1C	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2)*B %%&RVC[[     AAAc                    |                      |          \  }}}t          j        d          5  |dz  |dz  z   |dz  z   dz  }d d d            n# 1 swxY w Y   d|t          j        |          <   t          j        ||z  d           }t          j        ||z  d           }t          j        ||z  d           }t          j        |||f          S )Nr   r   r-         r   r.   r   )r   r   r   r   r   r   )	r$   r1   r   r   r   dm3grad_xgrad_ygrad_zs	            r'   r7   z	Elec.grads  s   44Q77
B[))) 	2 	2q52q5=2q5(T1C	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2)*B %%&&c****&c****&c****y&&&1222r   c           	         |                      |          \  }}}|dz  |dz  z   |dz  z   dz  }t          j        d          5  |dz  }|dz  }d d d            n# 1 swxY w Y   t          j        | j                  }d|||f<   d|||f<   |d|dz  z  |z  z
  }	t          j        |	d	
           |	||f<   d|z  |z  |z  }
t          j        |
d	
           |
||f<   d|z  |z  |z  }t          j        |d	
           |||f<   |d|dz  z  |z  z
  }t          j        |d	
           |||f<   d|z  |z  |z  }t          j        |d	
           |||f<   |d|dz  z  |z  z
  }t          j        |d	
           |||f<   t          j        t          j        |	|
|f          t          j        |
||f          t          j        |||f          f          }|S )Nr-   rw   r   r   r   r   r.   r   )r   r   r   aranger   r   vstackr   )r$   r1   r   r   r   dr   dm5iHxxHxyHxzHyyHyzHzzr   s                   r'   r<   z	Elec.hess  sj   44Q77
BURU]RU"s*[))) 	 	r'Cr'C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Id&''AqD	AqD	AAIO#VCa((((AqD	2glS VCa((((AqD	2glS VCa((((AqD	AAIO#VCa((((AqD	2glS VCa((((AqD	AAIO#VCa((((AqD	IIsCo&&IsCo&&IsCo&&
   s   AA!Ac                       fd} j          fd}n j         } j        d }n j        }t          |t          j         d||          S )Nc                 ^                         |           \  }}}|dz  |dz  z   |dz  z   dz
  S )Nr-   r.   r   )r1   r   r   r   r$   s       r'   r2   zElec.constr.<locals>.fun  s>    (,(<(<Q(?(?%GWgA:
*WaZ7!;;r*   c                                         |           \  }}}dt          j        |          z  }dt          j        |          z  }dt          j        |          z  }t          t          j        |||f                    S rz   )r   r   r   r   r   )r1   r   r   r   JxJyJzr$   s          r'   rD   zElec.constr.<locals>.jac  sw    ,0,@,@,C,C)'))))))))) BB<!8!8999r*   c                 R    dt          j        |          z  }t          |||          S rz   )r   r   r   )r1   rI   Ds      r'   r<   zElec.constr.<locals>.hess  s%    

N!!Q***r*   r   r   rL   s   `   r'   rM   zElec.constr  s    	< 	< 	< 	< 	< ?": : : : : : /C#+ + + + #D"3C>>>r*   )r   r   NN)rQ   rR   rS   rT   r(   r   r   r2   r7   r<   rU   rM   r/   r*   r'   r   r   A  s          67.2    ) ) )  ! ! !3 3 3$ $ $L ? ? X? ? ?r*   r   c                      e Zd Z e             ed           e e                       ed e                       e             e             ed           e e                       ed e                       e             e	             e
             e             ed           edd           ed e                       edd e                      gZej                            d	e          ej                            d
d          ej                            dddd d d f          d                                     Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestTrustRegionConstr2-point)r!   )r    r!   3-pointr-   r   )r   r!   )r   r    r!   probr7   )	prob.gradr   Fr<   	prob.hessc                      t                      S r\   )r   r/   r*   r'   <lambda>zTestTrustRegionConstr.<lambda>  s
    cee r*   c                  "    t          d          S )Ndamp_updateexception_strategyr   r/   r*   r'   r   zTestTrustRegionConstr.<lambda>      dm.T.T.T r*   c                  "    t          d          S )Nskip_updater  r  r/   r*   r'   r   zTestTrustRegionConstr.<lambda>  r  r*   c           
         |dk    r|j         n|}t          |          r
 |            n|}|dk    r|j        n|}|dv r|dv rt          j        d           |j         du r|dv rt          j        d           t          |t                    o|d	k    ot          |t                    }|rt          j        d
           t          j
                    5  t          j        ddt                     t          |j        |j        d|||j        |j                  }d d d            n# 1 swxY w Y   |j        <t'          |j        |j        d           |j        dk    rt-          |j        d           |j        dk    r5t-          |j        d           |j        dk    rt-          |j        d           d|j         d}|j        dvs
J |            d S )Nr   r   >   Fcsr   r   >   r	  r   r   z+Numerical Hessian needs analytical gradientT>   Fr   z6prob.grad incompatible with grad in {'3-point', False}r   z3Seems sensitive to initial conditions w/ Accelerater   delta_grad == 0.0trust-constrmethodrD   r<   r"   constraints   decimalr.   :0yE>r-   tr_interior_pointzInvalid termination condition: .>   r   r   )r7   callabler<   pytestskip
isinstancer   r   xfailwarningscatch_warningsfilterwarningsUserWarningr   r2   r   r"   rM   r   r   r1   statusr   
optimality	tr_radiusr  barrier_parameter)r$   r   r7   r<   	sensitiveresultmessages          r'   test_list_of_problemsz+TestTrustRegionConstr.test_list_of_problems  sR    !K//tyyT!$1ttvvvT K//tyyT777444KEFFF9);!;!;KPQQQ&788 0TY=N 0#D$// 	 	PLNOOO$&& 	7 	7#H.A;OOOdh%3"&T%)[*.+	7 7 7F	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 :!%fh
./1 1 1 1 }!!!&"3T:::=Af.555} 333!&":DAAA EFMDDD}F***G*****s   AD""D&)D&c                 h    d }dg}t          |dg|d          }t          |j        dd           d S )	Nc                     | dz
  dz  S r   r/   rA   s    r'   r2   z<TestTrustRegionConstr.test_default_jac_and_hess.<locals>.fun      Ea<r*   r   r-   r   r  )r   r"   r  r.   r  r  r   r   r1   r$   r2   r"   ress       r'   test_default_jac_and_hessz/TestTrustRegionConstr.test_default_jac_and_hess  sM    	  	  	 svf^LLL!#%A666666r*   c                 j    d }dg}t          |dg|dd          }t          |j        dd	           d S )
Nc                     | dz
  dz  S r   r/   rA   s    r'   r2   z4TestTrustRegionConstr.test_default_hess.<locals>.fun
  r(  r*   r)  r   r  r   )r   r"   r  rD   r.   r  r  r*  r+  s       r'   test_default_hessz'TestTrustRegionConstr.test_default_hess	  sV    	  	  	 svf^$& & &!#%A666666r*   c                    t                      }t          |j        |j        d|j        |j                  }t          |j        |j        dd          }t          |j        |j        dd          }t          |j        |j        d           t          |j        |j        d           t          |j        |j        d           d S )	Nr  )r  rD   r<   zL-BFGS-Br   )r  rD   r   r  r  )	r   r   r2   r   r7   r<   r   r1   r   )r$   r   r#  result1result2s        r'   test_no_constraintsz)TestTrustRegionConstr.test_no_constraints  s    ||$(DG!/"idi9 9 9 48TW",(* * * 48TW",(* * * 	"&(DJBBBB!')TZCCCC!')TZCCCCCCr*   c           	         t                      fd}t          j        j        dj        |j        j                  }j        t          |j	        j        d           |j
        dk    rt          |j        d           |j
        dk    r5t          |j        d           |j        dk    rt          |j        d           |j
        d	v rt!          d
          d S )Nc                 X                         |           }|                    |          S r\   )r<   dot)r1   pr   r   s      r'   hesspz/TestTrustRegionConstr.test_hessp.<locals>.hessp$  s!    		!A5588Or*   r  )r  rD   r9  r"   r  r-   r  r.   r  r  r   r   Invalid termination condition.)r   r   r2   r   r7   r"   rM   r   r   r1   r  r   r  r   r  r!  RuntimeError)r$   r9  r#  r   s      @r'   
test_hesspz TestTrustRegionConstr.test_hessp!  s   yy	 	 	 	 	 $(DG!/"iu!%&*k	3 3 3 :!%fh
AFFFF =Af/666=Af.555} 333!&":DAAA=F""?@@@ #"r*   c           
         t          dd          }t          |j        |j        dd|j        |j        |j        |j                  }|j        t          |j
        |j        d           |j        dk    rt          |j        d	           |j        dk    r5t          |j        d	           |j        d
k    rt          |j        d	           |j        dv rt#          d          d S )NrY      )rY   r?  r  r  r-   r  r.   r  r  r:  r;  )rW   r   r2   r   r7   r<   r"   rM   r   r   r1   r  r   r  r   r  r!  r<  )r$   r   r#  s      r'   	test_argszTestTrustRegionConstr.test_args>  s    sC(($(DGZ!/"idi!%&*k	3 3 3 :!%fh
AFFFF =Af/666=Af.555} 333!&":DAAA=F""?@@@ #"r*   c           	          t                      }d}t          j        t          |          5  t	          |j        |j        ddd|j                   d d d            d S # 1 swxY w Y   d S )Nz9Whenever the gradient is estimated via finite-differencesmatchr  r   )r  rD   r<   r  )r   r  raisesr]   r   r2   r   rM   )r$   r   r$  s      r'   test_raise_exceptionz*TestTrustRegionConstr.test_raise_exceptionV  s    yyM]:W555 	> 	>TXtw~9#> > > >	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   %AA"%A"c                    d }t          d dgd d |d          }t          |                    d                     t          |                    d	d
          dk               t          |                    dd
          dk               d S )Nc                 J    t          d|v            t          d|v            d S )Nnitniter)r   )r1   infos     r'   callbackz7TestTrustRegionConstr.test_issue_9044.<locals>.callbackb  s,    ETM"""GtO$$$$$r*   c                     | dz  S rz   r/   rA   s    r'   r   z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>f  s
    AqD r*   r   c                     d| z  S rz   r/   rA   s    r'   r   z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>f  s
    QqS r*   c                     dS rz   r/   rA   s    r'   r   z7TestTrustRegionConstr.test_issue_9044.<locals>.<lambda>g  s     r*   r  )rD   r<   rK  r  successrH  r~   r.   rI  )r   r   get)r$   rK  r#  s      r'   test_issue_9044z%TestTrustRegionConstr.test_issue_9044]  s    
	% 	% 	% ..1#==*{X!/1 1 1 	

9%%&&&

5"%%*+++ 	

7B''1,-----r*   c                 r   t          j        ddg          }d }t          t          j        ddg          t          j        ddg          d          }t          j                    5  t          j        ddt                     t          d	|||
          }d d d            n# 1 swxY w Y   |d         sJ d S )Nr   rw   c                 8    | d         }| d         }|dz  |dz  z   S )Nr   r.   r-   r/   )r1   x1x2s      r'   objz3TestTrustRegionConstr.test_issue_15093.<locals>.objx  s'    1B1B7R1W$$r*   r   T)keep_feasibler   r
  r  )r  r2   r   r"   rO  )r   r   r
   r  r  r  r  r   )r$   r   rV  r"   r#  s        r'   test_issue_15093z&TestTrustRegionConstr.test_issue_15093p  s    Xr3i  	% 	% 	%
 "b**BHb"X,>,>&*, , , $&& 	 	#H.A;OOO%	  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 i      s   '/B""B&)B&N)rQ   rR   rS   r   r   rh   rs   r   r   r   r   r   r   list_of_problemsr  markparametrizer%  r-  r0  r4  r=  r@  rE  rQ  rX  r/   r*   r'   r   r     sU       		I666CCEE2229##%%HHH))++&((&9===&4466:::&)37466; ; ;"
&((((**))+++++	BBB>>>y),0 0 0#1( [V%566[V%DEE[Vk9mm&T&T&T&T&V W W%4 %4W W FE 76
%4P7 7 77 7 7D D D A A A:A A A0> > >. . .&! ! ! ! !r*   r   c                       e Zd ZdZd ZdS )TestEmptyConstrainta  
    Here we minimize x^2+y^2 subject to x^2-y^2>1.
    The actual minimum is at (0, 0) which fails the constraint.
    Therefore we will find a minimum on the boundary at (+/-1, 0).

    When minimizing on the boundary, optimize uses a set of
    constraints that removes the constraint that sets that
    boundary.  In our case, there's only one constraint, so
    the result is an empty constraint.

    This tests that the empty constraint works.
    c           	         d }d }d }d }d }d }t          |dt          j        ||          }ddg}t          t          j         t          j         gt          j        t          j        g          }t	          ||d	|||g|
          }	t          t          |	j                  t          j        ddg          d           d S )Nc                 0    | d         dz  | d         dz  z   S r@   r/   rA   s    r'   functionz;TestEmptyConstraint.test_empty_constraint.<locals>.function  rB   r*   c                 R    t          j        d| d         z  d| d         z  g          S )Nr   r   r.   r6   rA   s    r'   functionjacobianzCTestEmptyConstraint.test_empty_constraint.<locals>.functionjacobian  s'    8R!Wb1g.///r*   c                     d|z  S )Nr   r/   rH   s     r'   functionhvpz>TestEmptyConstraint.test_empty_constraint.<locals>.functionhvp  s    a4Kr*   c                 V    t          j        | d         dz  | d         dz  z
  g          S r@   r6   rA   s    r'   
constraintz=TestEmptyConstraint.test_empty_constraint.<locals>.constraint  s*    8QqT1WqtQw./000r*   c                 T    t          j        d| d         z  d| d         z  gg          S )Nr-   r   r   r.   r6   rA   s    r'   constraintjacobianzETestEmptyConstraint.test_empty_constraint.<locals>.constraintjacobian  s*    8a!fb1g./000r*   c                 H    t          j        ddgddgg          |d         z  S )Nr   r   g       r   r6   rH   s     r'   constraintlcohzATestEmptyConstraint.test_empty_constraint.<locals>.constraintlcoh  s(    8b"XCy122QqT99r*   r   r   r  )r  rD   r9  r  r"   r.   r   r5   r  )	r   r   ru   r
   r   r   absr1   r   )
r$   r`  rb  rd  rf  rh  rj  
startpointr"   r#  s
             r'   test_empty_constraintz)TestEmptyConstraint.test_empty_constraint  s
   	% 	% 	%	0 	0 	0	 	 		1 	1 	1	1 	1 	1	: 	: 	: )R);^M M
 "X
"&26'*RVRV,<==

!l
 
 
 	"#fh--1a&1A1A1MMMMMMr*   N)rQ   rR   rS   rT   rm  r/   r*   r'   r]  r]    s2         %N %N %N %N %Nr*   r]  c                  H   d } t          j                    5  t          j        dt                     t	          j        t	          j        ddg                    }d d d            n# 1 swxY w Y   t          |dt          j                  }t          | ddgz  |           d S )Nc                 0    | d         dz  | d         dz  z   S r@   r/   rA   s    r'   optztest_bug_11886.<locals>.opt  s    tQwqtQwr*   r   r.   r~   r-   )r  )
r  r  simplefilterPendingDeprecationWarningr   matrixr   r	   ru   r   )rp  r   lin_conss      r'   test_bug_11886ru    s       
	 	"	" ' 'h(ABBBIbgq!foo&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '  2rv..HS!QC%x000000s   AA&&A*-A*c                     t          ddgddgd          fdfd} fd}d }fd	}t          j        d
          }t          |dt          j                  t          |dd|          g}t          | |d|          } |j                   |d         j        |d                             |j                  cxk     r|d         j	        k     sn J d S )Nr~   r.   T)lbubrW  c                     t          j        | j        k              sJ t          j        | j        k              sJ d S r\   )r   allrw  rx  )r1   bndss    r'   assert_inboundsz%test_gh11649.<locals>.assert_inbounds  sA    va47l#####va47l#######r*   c                      |            t          j        | d                   d| d         dz  z  d| d         dz  z  z   d| d         z  | d         z  z   d| d         z  z   dz   z  S )Nr   r5   r-   r.   )r   expr1   r|  s    r'   rV  ztest_gh11649.<locals>.obj  sn    vad||QqtQwY1Q472QqtVAaD[@1QqT6IAMNNr*   c                 B     |            | d         dz  | d         z   S r@   r/   r  s    r'   nceztest_gh11649.<locals>.nce  s)    tQw1~r*   c                 @    t          j        d| d         z  dg          S r,   r6   rA   s    r'   nce_jacztest_gh11649.<locals>.nce_jac  s    x1Q4$$$r*   c                 <     |            | d         | d         z  S )Nr   r.   r/   r  s    r'   nciztest_gh11649.<locals>.nci  s%    tAaDyr*   )gGz?gGz)rD   r  )r2   r   r  r"   r  r   )
r
   r   r   r   ru   r   r1   rw  r2   rx  )	rV  r  r  r  r   nlcsr,  r|  r{  s	          @@r'   test_gh11649r    sS    b"X1a&===D$ $ $ $ $O O O O O    % % %     
-	 	 BS"&11Qw7779D sr.D2 2 2COCE7:QCE**7777T!WZ77777777r*   c            	      2   d} t          j        t          |           5  t          j        d          }t          j        d                              d          t          j        d          c}t          fd||          }t          t          |d	|g
           d d d            n# 1 swxY w Y   t          j                    5  t          j        dt                     t          t          |d	|gddi           d d d            d S # 1 swxY w Y   d S )Nz:...more equality constraints than independent variables...rB  )r-      )r   r-   )r   c                     | z  S r\   r/   )r1   r   s    r'   r   z3test_gh20665_too_many_constraints.<locals>.<lambda>  s    4!8 r*   )rw  rx  r  r  r  r   factorization_methodSVDFactorization)r  r  options)r  rD  r]   r   r   r   reshaper   r   r   r  r  rq  r  )r$  r   r   gr   s       @r'   !test_gh20665_too_many_constraintsr    s    KG	z	1	1	1 D DWT]]Yq\\))&11274==
d 3 3 3 3FFF>sCCCC	D D D D D D D D D D D D D D D 
	 	"	" G Gh444>s02DE	G 	G 	G 	GG G G G G G G G G G G G G G G G G Gs$   A?B**B.1B.7DDDc                  D   d } d }t          j                    5  t          j        ddt                     t          j        ddt                     t	          |ddgdt          | dd          	          }d d d            n# 1 swxY w Y   |j        s|j        d
k    sJ d S )Nc                 N    | \  }}ddg\  }}d|dz  |dz  z  z   |dz  |dz  z  z
  S )N      @      @r   r-   r/   )uu1u2rY   rZ   s        r'   lsfztest_issue_18882.<locals>.lsf  s@    BSz1RUQT\!BEAqDL00r*   c                 0    t          j        | dz            S rz   )r   r   )r  s    r'   ofztest_issue_18882.<locals>.of  s    vad||r*   r   r
  zSingular Jacobian matrix.r   r  r   r  r  )r  r  r  r  r   r   rO  constr_violation)r  r  r,  s      r'   test_issue_18882r    s   1 1 1
   
	 	"	" 
 
*={KKK*E{SSS#J!+CA66	
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 >#"6"="="=>"="=s   ABBBc                   r   e Zd Zej                            d eej         ej                   e	            j
        f eej         d          ddgf edej                  ddgf eddgddg          ddgfg          d             Zd	 Zd
 Zd Zej                            d          d             ZdS )TestBoundedNelderMeadzbounds, x_optgr  g      "@r   r        @c                 Z   t                      }t          j                    5  d}t          j        d|t                     t          |j        ddgd|          }t          j        |j	        |j
                                                  sJ t          j        |j
        |j                                                  sJ t          j        |                    |j
                  |j                  sJ t          j        |j
        |d          sJ 	 d d d            d S # 1 swxY w Y   d S )N0Initial guess is not within the specified boundsr   r  Nelder-Meadr  r"   gMbP?)atol)r   r  r  r  r  r   r2   r   
less_equalrw  r1   rz  rx  allclose)r$   r"   r   r   msgr#  s         r'   test_rosen_brock_with_boundsz2TestBoundedNelderMead.test_rosen_brock_with_bounds  sZ    ||$&& 		< 		<DC#Hc;???dhc
%2%+- - -F =FH5599;;;;;=695599;;;;;;txx116:>>>>>;vxU;;;;;;;		< 		< 		< 		< 		< 		< 		< 		< 		< 		< 		< 		< 		< 		< 		< 		< 		< 		<s   C0D  D$'D$c                 J   t                      }t          ddgddg          }t          j                    5  t          j        ddt
                     t          |j        ddgd|          }t          j	        |j
        ddg          sJ 	 d d d            d S # 1 swxY w Y   d S )	Nr  r  r   r  r     r  r  r   r
   r  r  r  r  r   r2   r   r  r1   r$   r   r"   r#  s       r'   test_equal_all_boundsz+TestBoundedNelderMead.test_equal_all_bounds&  s    ||c
S#J//$&& 	5 	5#B   dha%2%+- - -F ;vx#s444444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5   ABBBc                 J   t                      }t          ddgddg          }t          j                    5  t          j        ddt
                     t          |j        ddgd|	          }t          j	        |j
        dd
g          sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r  g      4@r   r  r  r  r  r  g      0@r  r  s       r'   test_equal_one_boundsz+TestBoundedNelderMead.test_equal_one_bounds3  s    ||c
S$K00$&& 	6 	6#B   dha%2%+- - -F ;vx#t555555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6r  c                     t                      }d}t          j        t          |          5  t	          t
          j         dgddg          }t          |j        ddgd|	           d d d            d S # 1 swxY w Y   d S )
Nz:An upper bound is less than the corresponding lower bound.rB  r   r  g      r  r   r  r  )	r   r  rD  r]   r
   r   ru   r   r2   r$   r   r$  r"   s       r'   test_invalid_boundsz)TestBoundedNelderMead.test_invalid_bounds@  s    ||N]:W555 	$ 	$bfWcNS$K88FTXQx)"$ $ $ $	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$   :A33A7:A7z5Failing on Azure Linux and macOS builds, see gh-13846)reasonc                     t                      }d}t          j        t          |          5  t	          t
          j         dgddg          }t          |j        ddgd|	           d d d            d S # 1 swxY w Y   d S )
Nr  rB  r   r  r  r  r  r  r  )	r   r  warnsr  r
   r   ru   r   r2   r  s       r'   test_outside_bounds_warningz1TestBoundedNelderMead.test_outside_bounds_warningI  s     ||D\+W555 	$ 	$bfWcNS#J77FTXQx)"$ $ $ $	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$r  N)rQ   rR   rS   r  rZ  r[  r
   r   ru   r   r   r  r  r  r  r  r  r/   r*   r'   r  r    s'       [_%vrvgrv66

8JK%vrvgt44tTlC%vc2622S#J?%vsCj3*==BxH ! !< <! !<5 5 56 6 6$ $ $ [ - . .$ $. .$ $ $r*   r  )$r  numpyr   r  scipy.linalgr   scipy.sparser   numpy.testingr   r   r   scipy.optimizer   r	   r
   r   r   r   r   r   rW   rh   rs   r   r   r   r   r   r   r]  ru  r  r  r  r  r/   r*   r'   <module>r     s5         # # # # # # " " " " " "7 7 7 7 7 7 7 7 7 7# # # # # # # # # # # # # # # # # #*9 *9 *9 *9 *9 *9 *9 *9Z39 39 39 39 39 39 39 39l,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9^+A +A +A +A +A +A +A +A\+ + + + + + + +\/ / / / /Z / / /,. . . . .
 . . ."4 4 4 4 4z 4 4 44|? |? |? |? |? |? |? |?~H! H! H! H! H! H! H! H!T2N 2N 2N 2N 2N 2N 2N 2Nj	1 	1 	1 8  8  8FG G G? ? ?(A$ A$ A$ A$ A$ A$ A$ A$ A$ A$r*   