Skip to main content

Model becomes infeasible after relaxation

Answered

Comments

13 comments

  • Michel Soares
    Gurobi-versary
    Thought Leader

    Hi Laaziz,

    I cannot see how that would be possible, I believe it would take a in-depth look to understand it.

    Can you share the logs and the LP file?

    0
  • Laaziz Lahlou
    Curious
    Conversationalist
    Gurobi-versary

    Hi Michel,

    Sure! The following file relax-RAPEC is recorded before calling the optimize() method. The next one is after calling the computeIIS() which means that the model was found being infeasible by Gurobi.

    \ Model relax-RAPEC
    \ LP format - for model browsing. Use MPS format to capture full model detail.
    Minimize

    Subject To
    C1[0]: 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k <= 62
    C1[1]: 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k <= 29
    C2[0]: 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k
    <= 9000
    C2[1]: 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k
    <= 4000
    C3[0]: 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k
    <= 4000
    C3[1]: 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k
    <= 8000
    C4[0,0]: x_i_j_k + x_i_j_k = 1
    C4[0,1]: x_i_j_k + x_i_j_k = 1
    C4[0,2]: x_i_j_k + x_i_j_k = 1
    C4[0,3]: x_i_j_k + x_i_j_k = 1
    C4[0,4]: x_i_j_k + x_i_j_k = 1
    C5[0]: x_i_j_k + x_i_j_k + x_i_j_k + x_i_j_k + x_i_j_k <= 5
    C5[1]: x_i_j_k + x_i_j_k + x_i_j_k + x_i_j_k + x_i_j_k <= 5
    C6[0,0,0]: x_i_j_k = 0
    C6[0,0,1]: x_i_j_k = 0
    C6[0,0,2]: = 0
    C6[0,0,3]: = 0
    C6[0,0,4]: x_i_j_k = 0
    C6[1,0,0]: = 0
    C6[1,0,1]: = 0
    C6[1,0,2]: - x_i_j_k = 0
    C6[1,0,3]: - x_i_j_k = 0
    C6[1,0,4]: = 0
    C7[1,0]: 303 w_i_k_l_a_b + 207 w_i_k_l_a_b + 275 w_i_k_l_a_b
    + 499 w_i_k_l_a_b + 388 w_i_k_l_a_b + 280 w_i_k_l_a_b <= 6328
    C7[0,1]: 303 w_i_k_l_a_b + 207 w_i_k_l_a_b + 275 w_i_k_l_a_b
    + 499 w_i_k_l_a_b + 388 w_i_k_l_a_b + 280 w_i_k_l_a_b <= 6328
    C8: 6 x_i_j_k + 6 x_i_j_k + 6 x_i_j_k + 6 x_i_j_k + 6 x_i_j_k + 5 x_i_j_k
    + 5 x_i_j_k + 5 x_i_j_k + 5 x_i_j_k + 5 x_i_j_k <= 1000
    C9[0,0,1,1,0]: w_i_k_l_a_b - x_i_j_k <= 0
    C9[0,0,1,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C9[0,0,2,1,0]: w_i_k_l_a_b - x_i_j_k <= 0
    C9[0,0,2,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C9[0,0,4,1,0]: w_i_k_l_a_b - x_i_j_k <= 0
    C9[0,0,4,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C9[0,1,3,1,0]: w_i_k_l_a_b - x_i_j_k <= 0
    C9[0,1,3,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C9[0,1,4,1,0]: w_i_k_l_a_b - x_i_j_k <= 0
    C9[0,1,4,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C9[0,2,3,1,0]: w_i_k_l_a_b - x_i_j_k <= 0
    C9[0,2,3,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C10[0,0,1,1,0]: w_i_k_l_a_b - x_i_j_k <= 0
    C10[0,0,1,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C10[0,0,2,1,0]: w_i_k_l_a_b - x_i_j_k <= 0
    C10[0,0,2,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C10[0,0,4,1,0]: w_i_k_l_a_b - x_i_j_k <= 0
    C10[0,0,4,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C10[0,1,3,1,0]: w_i_k_l_a_b - x_i_j_k <= 0
    C10[0,1,3,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C10[0,1,4,1,0]: w_i_k_l_a_b - x_i_j_k <= 0
    C10[0,1,4,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C10[0,2,3,1,0]: w_i_k_l_a_b - x_i_j_k <= 0
    C10[0,2,3,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C11[0,0,1,1,0]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    C11[0,0,1,0,1]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    C11[0,0,2,1,0]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    C11[0,0,2,0,1]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    C11[0,0,4,1,0]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    C11[0,0,4,0,1]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    C11[0,1,3,1,0]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    C11[0,1,3,0,1]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    C11[0,1,4,1,0]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    C11[0,1,4,0,1]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    C11[0,2,3,1,0]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    C11[0,2,3,0,1]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    C12: - 0.06 w_i_k_l_a_b + z_i_k_l_a_b >= -0.196
    C12: - 0.06 w_i_k_l_a_b + z_i_k_l_a_b >= -0.196
    C12: - 0.06 w_i_k_l_a_b + z_i_k_l_a_b >= -0.416
    C12: - 0.06 w_i_k_l_a_b + z_i_k_l_a_b >= -0.416
    C12: - 0.06 w_i_k_l_a_b + z_i_k_l_a_b >= -0.025
    C12: - 0.06 w_i_k_l_a_b + z_i_k_l_a_b >= -0.025
    C12: - 0.06 w_i_k_l_a_b + z_i_k_l_a_b >= -0.298
    C12: - 0.06 w_i_k_l_a_b + z_i_k_l_a_b >= -0.298
    C12: - 0.06 w_i_k_l_a_b + z_i_k_l_a_b >= -0.011
    C12: - 0.06 w_i_k_l_a_b + z_i_k_l_a_b >= -0.011
    C12: - 0.06 w_i_k_l_a_b + z_i_k_l_a_b >= -0.302
    C12: - 0.06 w_i_k_l_a_b + z_i_k_l_a_b >= -0.302
    Bounds
    w_i_k_l_a_b <= 1
    w_i_k_l_a_b <= 1
    w_i_k_l_a_b <= 1
    w_i_k_l_a_b <= 1
    w_i_k_l_a_b <= 1
    w_i_k_l_a_b <= 1
    w_i_k_l_a_b <= 1
    w_i_k_l_a_b <= 1
    w_i_k_l_a_b <= 1
    w_i_k_l_a_b <= 1
    w_i_k_l_a_b <= 1
    w_i_k_l_a_b <= 1
    x_i_j_k <= 1
    x_i_j_k <= 1
    x_i_j_k <= 1
    x_i_j_k <= 1
    x_i_j_k <= 1
    x_i_j_k <= 1
    x_i_j_k <= 1
    x_i_j_k <= 1
    x_i_j_k <= 1
    x_i_j_k <= 1
    End
    \ Model rel-RAPEC_copy
    \ LP format - for model browsing. Use MPS format to capture full model detail.
    Minimize

    Subject To
    C4[0,1]: x_i_j_k + x_i_j_k = 1
    C4[0,3]: x_i_j_k + x_i_j_k = 1
    C6[0,0,1]: x_i_j_k = 0
    C6[1,0,3]: - x_i_j_k = 0
    C9[0,1,3,0,1]: w_i_k_l_a_b - x_i_j_k <= 0
    C11[0,1,3,0,1]: w_i_k_l_a_b - x_i_j_k - x_i_j_k >= -1
    Bounds
    w_i_k_l_a_b free
    x_i_j_k free
    x_i_j_k free
    x_i_j_k free
    x_i_j_k free
    End

    These are the files related to the optimal solution. The first instance if before calling the optimize() methods wile the next one is after obtaining the optimal solution by Gurobi.

    \ Model RAPEC
    \ LP format - for model browsing. Use MPS format to capture full model detail.
    Minimize

    Subject To
    C1[0]: 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k <= 62
    C1[1]: 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k <= 29
    C2[0]: 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k
    <= 9000
    C2[1]: 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k
    <= 4000
    C3[0]: 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k
    <= 4000
    C3[1]: 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k
    <= 8000
    C4[0,0]: x_i_j_k + x_i_j_k = 1
    C4[0,1]: x_i_j_k + x_i_j_k = 1
    C4[0,2]: x_i_j_k + x_i_j_k = 1
    C4[0,3]: x_i_j_k + x_i_j_k = 1
    C4[0,4]: x_i_j_k + x_i_j_k = 1
    C5[0]: x_i_j_k + x_i_j_k + x_i_j_k + x_i_j_k + x_i_j_k <= 5
    C5[1]: x_i_j_k + x_i_j_k + x_i_j_k + x_i_j_k + x_i_j_k <= 5
    C6[0,0,0]: x_i_j_k = 0
    C6[0,0,1]: x_i_j_k = 0
    C6[0,0,2]: = 0
    C6[0,0,3]: = 0
    C6[0,0,4]: x_i_j_k = 0
    C6[1,0,0]: = 0
    C6[1,0,1]: = 0
    C6[1,0,2]: - x_i_j_k = 0
    C6[1,0,3]: - x_i_j_k = 0
    C6[1,0,4]: = 0
    C8: 6 x_i_j_k + 6 x_i_j_k + 6 x_i_j_k + 6 x_i_j_k + 6 x_i_j_k + 5 x_i_j_k
    + 5 x_i_j_k + 5 x_i_j_k + 5 x_i_j_k + 5 x_i_j_k <= 1000
    C7[1,0]: [ 303 x_i_j_k * x_i_j_k + 207 x_i_j_k * x_i_j_k
    + 499 x_i_j_k * x_i_j_k + 280 x_i_j_k * x_i_j_k + 275 x_i_j_k * x_i_j_k
    + 388 x_i_j_k * x_i_j_k ] <= 6328
    C7[0,1]: [ 303 x_i_j_k * x_i_j_k + 207 x_i_j_k * x_i_j_k
    + 275 x_i_j_k * x_i_j_k + 499 x_i_j_k * x_i_j_k + 388 x_i_j_k * x_i_j_k
    + 280 x_i_j_k * x_i_j_k ] <= 6328
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.196
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.196
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.416
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.416
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.025
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.025
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.298
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.298
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.011
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.011
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.302
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.302
    Bounds
    Binaries
    x_i_j_k x_i_j_k x_i_j_k x_i_j_k x_i_j_k x_i_j_k x_i_j_k x_i_j_k x_i_j_k
    x_i_j_k
    End

     

    \ Model RAPEC
    \ LP format - for model browsing. Use MPS format to capture full model detail.
    Minimize
    6 x_i_j_k + 6 x_i_j_k + 6 x_i_j_k + 6 x_i_j_k + 6 x_i_j_k + 5 x_i_j_k
    + 5 x_i_j_k + 5 x_i_j_k + 5 x_i_j_k + 5 x_i_j_k + 1.25 z_i_k_l_a_b
    + 1.25 z_i_k_l_a_b + 1.25 z_i_k_l_a_b + 1.25 z_i_k_l_a_b
    + 1.25 z_i_k_l_a_b + 1.25 z_i_k_l_a_b + 1.25 z_i_k_l_a_b
    + 1.25 z_i_k_l_a_b + 1.25 z_i_k_l_a_b + 1.25 z_i_k_l_a_b
    + 1.25 z_i_k_l_a_b + 1.25 z_i_k_l_a_b
    Subject To
    C1[0]: 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k <= 62
    C1[1]: 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k + 4 x_i_j_k <= 29
    C2[0]: 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k
    <= 9000
    C2[1]: 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k + 996 x_i_j_k
    <= 4000
    C3[0]: 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k
    <= 4000
    C3[1]: 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k + 85 x_i_j_k
    <= 8000
    C4[0,0]: x_i_j_k + x_i_j_k = 1
    C4[0,1]: x_i_j_k + x_i_j_k = 1
    C4[0,2]: x_i_j_k + x_i_j_k = 1
    C4[0,3]: x_i_j_k + x_i_j_k = 1
    C4[0,4]: x_i_j_k + x_i_j_k = 1
    C5[0]: x_i_j_k + x_i_j_k + x_i_j_k + x_i_j_k + x_i_j_k <= 5
    C5[1]: x_i_j_k + x_i_j_k + x_i_j_k + x_i_j_k + x_i_j_k <= 5
    C6[0,0,0]: x_i_j_k = 0
    C6[0,0,1]: x_i_j_k = 0
    C6[0,0,2]: = 0
    C6[0,0,3]: = 0
    C6[0,0,4]: x_i_j_k = 0
    C6[1,0,0]: = 0
    C6[1,0,1]: = 0
    C6[1,0,2]: - x_i_j_k = 0
    C6[1,0,3]: - x_i_j_k = 0
    C6[1,0,4]: = 0
    C8: 6 x_i_j_k + 6 x_i_j_k + 6 x_i_j_k + 6 x_i_j_k + 6 x_i_j_k + 5 x_i_j_k
    + 5 x_i_j_k + 5 x_i_j_k + 5 x_i_j_k + 5 x_i_j_k <= 1000
    C7[1,0]: [ 303 x_i_j_k * x_i_j_k + 207 x_i_j_k * x_i_j_k
    + 499 x_i_j_k * x_i_j_k + 280 x_i_j_k * x_i_j_k + 275 x_i_j_k * x_i_j_k
    + 388 x_i_j_k * x_i_j_k ] <= 6328
    C7[0,1]: [ 303 x_i_j_k * x_i_j_k + 207 x_i_j_k * x_i_j_k
    + 275 x_i_j_k * x_i_j_k + 499 x_i_j_k * x_i_j_k + 388 x_i_j_k * x_i_j_k
    + 280 x_i_j_k * x_i_j_k ] <= 6328
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.196
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.196
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.416
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.416
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.025
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.025
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.298
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.298
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.011
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.011
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.302
    C9: z_i_k_l_a_b + [ - 0.06 x_i_j_k * x_i_j_k ] >= -0.302
    Bounds
    Binaries
    x_i_j_k x_i_j_k x_i_j_k x_i_j_k x_i_j_k x_i_j_k x_i_j_k x_i_j_k x_i_j_k
    x_i_j_k
    End
    0
  • Riley Clement
    Gurobi Staff Gurobi Staff

    Hi Laaziz,

    I'll get a head start on Michel by pointing out these files are not going to be of any help due the variable names.  Each variable needs a unique variable name.  Currently the model produced by reading one of these files will have two variables only.

    >> m = gp.read("model.lp")
    >> len(m.getVars())
    2

    Note that the model files will be the same before and after optimization, so no need to post them twice.  They do not encode any solution values, and the model is not changed by an optimization.

    - Riley

    1
  • Laaziz Lahlou
    Curious
    Conversationalist
    Gurobi-versary

    Hi Riley,

    Got it !

    I fixed the issue finally as it was a mistake in the indices of one of the constraints of the model.

    However, I am not sure why Gurobi is saying that a solution for the relaxed model is feasible (GRB.Status.OPTIMAL == 2) while the returned solution is not feasible during the rounding and constraints checking phase. Is there any explanation to this ?
    Laaziz

    0
  • Riley Clement
    Gurobi Staff Gurobi Staff

    Hi Laaziz,

    Perhaps there are numerical issues, but I'm also not 100% clear on the situation.

    Any chance you could upload a model file and log file where it is accessible to Michel and I (such as Google Drive, Dropbox, Github).

    - Riley

    0
  • Laaziz Lahlou
    Curious
    Conversationalist
    Gurobi-versary

    Hi Riley,

    In which format do you want to the model ? Do you need access to the python code as well ?

    Laaziz

    0
  • Michel Soares
    Gurobi-versary
    Thought Leader

    Hi Laaziz,

    A .lp model should be fine. No need for the python code.

     

    0
  • Laaziz Lahlou
    Curious
    Conversationalist
    Gurobi-versary

    Hi Michel,

    Here is the link to the two .lp models which are distinctive by their names. I got from Gurobi the cost function value of the returned solution by the relaxed model which is later not feasible after rounding and checking the constraints. Yet, I have checked the status of the solution with Gurobi and it was 2.

    Thanks for your help.

    Laaziz

    0
  • Michel Soares
    Gurobi-versary
    Thought Leader

    Hi Laaziz,

    First make sure you are using Gurobi 11: there were a lot of changes for non-linear models and it seems to have an impact on your models.

    Your first model (opt-model9) is feasible for Gurobi 11. I also have deleted the lines from the .LP file that states the binaries files (opt-model9_michel), therefore "relaxing the binary variables", and it is also feasible:

    gurobi> m = read("opt-model9.lp")
    Read LP format model from file opt-model9.lp
    Reading time = 0.13 seconds
    : 906 rows, 59900 columns, 3253 nonzeros
    gurobi> m.optimize()
    Gurobi Optimizer version 11.0.0 build v11.0.0rc2 (win64 - Windows 11+.0 (22631.2))
    Optimize a model with 906 rows, 59900 columns and 3253 nonzeros
    Model fingerprint: 0xcd8d404b
    Model has 69300 quadratic constraints
    Variable types: 59400 continuous, 500 integer (500 binary)
    Coefficient statistics:
      Matrix range     [1e+00, 1e+03]
      QMatrix range    [1e-02, 4e+02]
      QLMatrix range   [1e+00, 1e+00]
      Objective range  [0e+00, 0e+00]
      Bounds range     [1e+00, 1e+00]
      RHS range        [1e+00, 9e+03]
      QRHS range       [2e-02, 1e+04]
    Presolve removed 882 rows and 51150 columns
    Presolve time: 0.13s
    Presolved: 10729 rows, 10839 columns, 21303 nonzeros
    Variable types: 0 continuous, 10839 integer (2589 binary)
    Found heuristic solution: objective 0.0000000

    Explored 1 nodes (0 simplex iterations) in 0.17 seconds (0.02 work units)
    Thread count was 8 (of 8 available processors)

    Solution count 1: 0

    Optimal solution found (tolerance 1.00e-04)
    Best objective 0.000000000000e+00, best bound 0.000000000000e+00, gap 0.0000%
    gurobi> m2 = read("opt-model9_michel.lp")
    Read LP format model from file opt-model9_michel.lp
    Reading time = 0.20 seconds
    : 906 rows, 59900 columns, 3253 nonzeros
    gurobi> m2.optimize()
    Gurobi Optimizer version 11.0.0 build v11.0.0rc2 (win64 - Windows 11+.0 (22631.2))

    Optimize a model with 906 rows, 59900 columns and 3253 nonzeros
    Model fingerprint: 0x59aa096b
    Model has 69300 quadratic constraints
    Coefficient statistics:
      Matrix range     [1e+00, 1e+03]
      QMatrix range    [1e-02, 4e+02]
      QLMatrix range   [1e+00, 1e+00]
      Objective range  [0e+00, 0e+00]
      Bounds range     [0e+00, 0e+00]
      RHS range        [1e+00, 9e+03]
      QRHS range       [2e-02, 1e+04]
    Presolve removed 874 rows and 58009 columns

    Continuous model is non-convex -- solving as a MIP

    Presolve removed 876 rows and 58009 columns
    Presolve time: 0.06s
    Presolved: 3328 rows, 1891 columns, 7139 nonzeros
    Presolved model has 1649 bilinear constraint(s)
    Variable types: 1891 continuous, 0 integer (0 binary)
    Found heuristic solution: objective 0.0000000

    Explored 1 nodes (0 simplex iterations) in 0.25 seconds (0.10 work units)
    Thread count was 8 (of 8 available processors)

    Solution count 1: 0

    Optimal solution found (tolerance 1.00e-04)
    Best objective 0.000000000000e+00, best bound 0.000000000000e+00, gap 0.0000%

     

    Your model called "relax-model9.lp" has the same previous problem, with the incorrect names.

    In these two tests I have not found the issue you mentioned, there may be a misunderstanding of the issue, a problem in your code or the way you relaxed, or some sort of problem with .lp file (there may be rounding issues in using .lp files, but from the numbers I have seen, I do not think it is the case).

    - Michel

    0
  • Riley Clement
    Gurobi Staff Gurobi Staff

    However, I am not sure why Gurobi is saying that a solution for the relaxed model is feasible (GRB.Status.OPTIMAL == 2) while the returned solution is not feasible during the rounding and constraints checking phase. Is there any explanation to this ?

    Are you expecting to take a solution from a LP relaxation, round the variables and arrive at a feasible solution for the MIP?

    0
  • Laaziz Lahlou
    Curious
    Conversationalist
    Gurobi-versary

    Hi Michel Soares,

    I apologize for not putting the right instance files. I updated the link with the files containing the models. This is the confguration with Gurobi 11.0.0

    Gurobi Optimizer version 11.0.0 build v11.0.0rc2 (win64 - Windows 10.0 (19045.2))

    Riley Clement, yes I am taking a solution from the LP relaxation, round the variables and arrive a feasible solution for the MIP. Am I wrong by considering that the LP relaxation should be feasible (sometimes infeasible) before rounding and arriving to a feasible solution here ? Am I missing something fundamental here ?

    -Laaziz

     

    0
  • Riley Clement
    Gurobi Staff Gurobi Staff

    Hi Laaziz,

    I'm afraid I think you are.  Consider the following 1 variable program.

    Max x
    s.t. x <= 0.6
    x binary

    The solution to the LP relaxation is x = 0.6 but rounding we have x = 1, which is does not satisfy the constraint.

    - Riley

    1
  • Laaziz Lahlou
    Curious
    Conversationalist
    Gurobi-versary

    Hi Riley Clement,

    Thanks for sheding light ! Got it now.

    - Laaziz

    0

Please sign in to leave a comment.