I want to add constraints that if my elements matrix is less or equal to 0.01 then set it as 0 otherwise leave as it is.How to add such conditions.
That is called a semicontinuous variable, which can be handled by introducing a binary variable for each element of the matrix.
variable W(m,n) variable B(m,n) binary % Let U be matrix of upper bounds for corresponding elements of W 0.01*vec(B) <= vec(W) <= vec(U).*vec(B)
Thank you ,
I want to implement this constraint ,where below A_hat is 10 by 10 matrix
> A_hat == A_hat .* (abs(A_hat) >= 0.01)
Can you please confirm if below lines will work:
variable A_hat (m,n) variable A_hat_b (m,n) binary % Let U be matrix of upper bounds for corresponding elements of W 0.01*vec(A_hat_b ) <= vec(abs(A_hat )) <= vec(A_hat ).*vec(A_hat_b )
No, I answered the question you originally asked. If elements of A can be negative, then your adaptation of my solution is incorrect, because it doesn’t allow elements to be <= -0.01 .
You ought to be able to adapt the disjunctive inequalities treatment, for instance for x1, in https://optimization.mccormick.northwestern.edu/index.php/Disjunctive_inequalities to your situation. I will leave you to do so, so that you gain some facility.