
    bic                         d dl Z d dlZd dlmZ d dlmZ  G d de      Z G d de      Z	 G d d	e      Z
 G d
 de      Z G d de      Z G d de j                        Zy)    N)SCS)OSQPc                       e Zd Zy)CustomQPSolverCalledN__name__
__module____qualname__     Y/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/cvxpy/tests/test_custom_solver.pyr   r          r   r   c                       e Zd Zy)CustomConicSolverCalledNr   r   r   r   r   r      r   r   r   c                       e Zd ZdefdZd Zy)CustomQPSolverreturnc                      y)NCUSTOM_QP_SOLVERr   selfs    r   namezCustomQPSolver.name   s    !r   c                     t               N)r   r   argskwargss      r   solve_via_datazCustomQPSolver.solve_via_data   s    "$$r   Nr   r	   r
   strr   r   r   r   r   r   r      s    "c "%r   r   c                       e Zd ZdefdZd Zy)CustomConicSolverr   c                      y)NCUSTOM_CONIC_SOLVERr   r   s    r   r   zCustomConicSolver.name   s    $r   c                     t               r   )r   r   s      r   r   z CustomConicSolver.solve_via_data   s    %''r   Nr   r   r   r   r"   r"      s    %c %(r   r"   c                       e Zd ZdefdZy)ConflictingCustomSolverr   c                      y)Nr   r   r   s    r   r   zConflictingCustomSolver.name!   s    r   N)r   r	   r
   r    r   r   r   r   r'   r'       s    c r   r'   c                       e Zd ZddZddZddZddZddZddZddZ	dd	Z
dd
Zedd       Zedd       Zedd       Zedd       Zy)TestCustomSolversNc                 @    t               | _        t               | _        y r   )r   custom_qp_solverr"   custom_conic_solverr   s    r   setUpzTestCustomSolvers.setUp&   s     . 0#4#6 r   c                     | j                  t              5  | j                  | j                         d d d        y # 1 sw Y   y xY wNsolver)assertRaisesr   solve_example_qpr,   r   s    r   8test_custom_continuous_qp_solver_can_solve_continuous_qpzJTestCustomSolvers.test_custom_continuous_qp_solver_can_solve_continuous_qp*   sA    34 	@!!)>)>!?	@ 	@ 	@	   <Ac                     d| j                   _        | j                  t              5  | j	                  | j                          d d d        y # 1 sw Y   y xY wNTr1   )r,   MIP_CAPABLEr3   r   solve_example_mixed_integer_qpr   s    r   *test_custom_mip_qp_solver_can_solve_mip_qpz<TestCustomSolvers.test_custom_mip_qp_solver_can_solve_mip_qp.   sO    ,0)34 	N//t7L7L/M	N 	N 	Ns   AAc                     d| j                   _        | j                  t        j                  j
                        5  | j                  | j                         d d d        y # 1 sw Y   y xY wNFr1   )r-   r9   r3   cperrorSolverErrorr:   r,   r   s    r   4test_custom_continuous_qp_solver_cannot_solve_mip_qpzFTestCustomSolvers.test_custom_continuous_qp_solver_cannot_solve_mip_qp3   sX    /4  ,rxx334 	N//t7L7L/M	N 	N 	N   A!!A*c                     | j                  t        j                  j                        5  | j	                  | j
                         d d d        y # 1 sw Y   y xY wr0   )r3   r>   r?   r@   solve_example_socpr,   r   s    r   'test_custom_qp_solver_cannot_solve_socpz9TestCustomSolvers.test_custom_qp_solver_cannot_solve_socp8   sJ    rxx334 	B##4+@+@#A	B 	B 	Bs   AAc                     | j                  t              5  | j                  | j                         d d d        y # 1 sw Y   y xY wr0   )r3   r   rD   r-   r   s    r   =test_custom_continuous_conic_solver_can_solve_continuous_socpzOTestCustomSolvers.test_custom_continuous_conic_solver_can_solve_continuous_socp<   sA    67 	E##4+C+C#D	E 	E 	Er6   c                     d| j                   _        | j                   j                  }|| j                   _        | j	                  t
              5  | j                  | j                          d d d        y # 1 sw Y   y xY wr8   )r-   r9   SUPPORTED_CONSTRAINTSMI_SUPPORTED_CONSTRAINTSr3   r    solve_example_mixed_integer_socp)r   supported_constraintss     r   /test_custom_mip_conic_solver_can_solve_mip_socpzATestCustomSolvers.test_custom_mip_conic_solver_can_solve_mip_socp@   so    /3  , $ 8 8 N N<Q  967 	S119Q9Q1R	S 	S 	Ss   A44A=c                     d| j                   _        | j                  t        j                  j
                        5  | j                  | j                          d d d        y # 1 sw Y   y xY wr=   )r-   r9   r3   r>   r?   r@   r:   r   s    r   9test_custom_continuous_conic_solver_cannot_solve_mip_socpzKTestCustomSolvers.test_custom_continuous_conic_solver_cannot_solve_mip_socpG   sX    /4  ,rxx334 	Q//t7O7O/P	Q 	Q 	QrB   c                     | j                  t        j                  j                        5  | j	                  t                      d d d        y # 1 sw Y   y xY wr0   )r3   r>   r?   r@   r4   r'   r   s    r   $test_custom_conflicting_solver_failsz6TestCustomSolvers.test_custom_conflicting_solver_failsL   sH    rxx334 	D!!)@)B!C	D 	D 	Ds   AAc                     t        j                         }t        j                  |      }t        j                  t        j                  |            }|j                  |        y r0   r>   Variablesum_squaresProblemMinimizesolve)r2   x	quadraticproblems       r   r4   z"TestCustomSolvers.solve_example_qpP   s@    KKMNN1%	**R[[34V$r   c                     t        j                         }t        j                  d      }t        j                  ||z         }t        j                  t        j                  |            }|j                  |        y )NTintegerr1   rS   )r2   rY   zrZ   r[   s        r   r:   z0TestCustomSolvers.solve_example_mixed_integer_qpW   sR    KKMKK%NN1q5)	**R[[34V$r   c                     t        j                  d      }t        j                         }t        j                  |      }t        j                  t        j                  |      t        j
                  ||      g      }|j                  |        y )N   r1   r>   rT   rU   rV   rW   SOCrX   )r2   rY   yrZ   r[   s        r   rD   z$TestCustomSolvers.solve_example_socp_   s[    KKNKKMNN1%	**R[[3bffQl^DV$r   c                 R   t        j                  d      }t        j                         }t        j                  d      }t        j                  ||z         }t        j                  t        j                  |      t        j
                  ||      g      }|j                  |        y )Nra   Tr]   r1   rb   )r2   rY   rd   r_   rZ   r[   s         r   rK   z2TestCustomSolvers.solve_example_mixed_integer_socpg   sm    KKNKKMKK%NN1q5)	**R[[3bffQl^DV$r   )r   N)r   r	   r
   r.   r5   r;   rA   rE   rG   rM   rO   rQ   staticmethodr4   r:   rD   rK   r   r   r   r*   r*   %   s    7@N
N
BESQ
D % % % % % % % %r   r*   )unittestcvxpyr>   0cvxpy.reductions.solvers.conic_solvers.scs_conifr   -cvxpy.reductions.solvers.qp_solvers.osqp_qpifr   	Exceptionr   r   r   r"   r'   TestCaser*   r   r   r   <module>rm      sa      @ >	9 		i 	%T %( (d 
I%)) I%r   