
    bi                         d Z 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  ej                   ee      dkD  d       G d de             Zy)a6  
Copyright 2013 Steven Diamond, Eric Chu

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
    N)INSTALLED_MI_SOLVERS)BaseTestz%No mixed-integer solver is installed.c                   @    e Zd ZdZd	dZd	dZd	dZd	dZd	dZd	dZ	y)
TestMIPVariablez. Unit tests for the expressions/shape module. Nc                     t        j                  d      | _        t        j                  d      | _        t        j                  dd      | _        t        j                  dd      | _        t        | _        y )NT)boolean)integer)      )r   r
   )cpVariablex_booly_intA_boolB_intMIP_SOLVERSsolvers)selfs    T/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/cvxpy/tests/test_mip_vars.pysetUpzTestMIPVariable.setUp   sM    kk$/[[.
kk&$7[[6
"    c                 |   | j                   D ]  }| j                  |       |t        j                  k7  r| j	                  |       |t        j
                  t        j                  t        j                  t        j                  fv sy|t        j                  k7  r| j                  |       | j                  |        y )N)r   	bool_probr   SCIPYint_probCPLEXGUROBIMOSEKXPRESS	bool_socpint_socp)r   solvers     r   test_all_solversz TestMIPVariable.test_all_solvers&   s~    ll 	&FNN6"!f%"((BIIrxxCCRYY&NN6*f%	&r   c           	         t        j                  t        j                  | j                  dz
              }t        j                  |g       }|j                  |      }| j                  |d       | j                  | j                  j                  d       t        j                         }t        j                  |      }t        j                  |t        j                  | j                        |k  g      }|j                  |      }| j                  |d       | j                  | j                  j                  dd       t        j                  g dg dg      j                  }t        j                  t        j                  t        j                  | j                  |z
                    }t        j                  |g       }|j                  |      }| j                  |d       | j                  | j                  j                  |d       t        j                         }t        j                  |      }t        j                  |t        j                  t        j                  | j                  |z
              |k  g      }|j                  |      }| j                  |d       | j                  | j                  j                  |d       y )N皙?r"   r      )places)r      r   )r)   r)   r)   )r   Minimizeabsr   ProblemsolveassertAlmostEqualvaluer   nparrayTsumr   assertItemsAlmostEqual)r   r"   objpresulttCs          r   r   zTestMIPVariable.bool_prob0   s   kk"&&s!234JJsB'vs+t{{00!4 KKMkk!nJJsRVVDKK0A567'vq)t{{00!A> HHi+,..kk"&&a!89:JJsB'vq)##DKK$5$5q#C KKMkk!nJJsRVVBFF4;;?$;<ABC'vq)##DKK$5$5q#Cr   c                 L   t        j                  t        j                  | j                  dz
              }t        j                  |g       }|j                  |      }| j                  |d       | j                  | j                  j                  d       t        j                         }t        j                  |      }t        j                  || j                  dk(  |dk\  g      }|j                  |      }| j                  |j                  t        j                  v d       y )Nr%   r&   r   g      ?T)r   r*   r+   r   r,   r-   r.   r/   r   assertEqualstatuss
INF_OR_UNB)r   r"   r5   r6   r7   r8   s         r   r   zTestMIPVariable.int_probT   s    kk"&&c!123JJsB'vs+tzz//3 KKMkk!nJJsTZZ3.Q78'Q\\148r   c                 ^   t        j                         }t        j                  |      }t        j                  |t        j                  | j
                  dz
        |k  g      }|j                  |      }| j                  |d       | j                  | j
                  j                  d       y Nr%   r&   g{Gz?r   )	r   r   r*   r,   squarer   r-   r.   r/   r   r"   r8   r5   r6   r7   s         r   r!   zTestMIPVariable.int_socpd   s~    KKMkk!nJJsRYYtzzC'78A=>?'vt,tzz//3r   c                 ^   t        j                         }t        j                  |      }t        j                  |t        j                  | j
                  dz
        |k  g      }|j                  |      }| j                  |d       | j                  | j
                  j                  d       y r@   )	r   r   r*   r,   rA   r   r-   r.   r/   rB   s         r   r    zTestMIPVariable.bool_socpn   s~    KKMkk!nJJsRYYt{{S'89Q>?@'vt,t{{00!4r   )returnN)
__name__
__module____qualname____doc__r   r#   r   r   r!   r     r   r   r   r      s%    8#&"DH9 45r   r   )rH   unittestnumpyr0   cvxpyr   cvxpy.settingssettingsr=    cvxpy.reductions.solvers.definesr   r   cvxpy.tests.base_testr   
skipUnlesslenr   rI   r   r   <module>rS      sW        P * S%)+RS[5h [5 T[5r   