<div dir="ltr">Hello,<div><br></div><div>Following program fails on line 440 at the instruction</div><div><br></div><div>ret = SCIPchgVarUb(scip, allvars[6], 500);<br></div><div><br></div><div>ret is SCIP_INVALIDDATA and on the output the following is shown:</div><div><br></div><div>[var.c:7410] ERROR: cannot change the bounds of a fixed variable<br>                  [var.c:7387] ERROR: Error <-9> in function call<br>                 [scip_var.c:4806] ERROR: Error <-9> in function call<br></div><div><br></div><div>Note that this program looks a bit uggly and strange. That is because it is generated C code from a layer in C# code so please don't look at its symantics and duplicate code.</div><div><br></div><div>Can you take a look at it? Thank you</div><div><br></div><div><br></div><div>#include <scip/scip.h><br>#include <scip/scipdefplugins.h><br><br>int main()<br>{<br>      {<br>             SCIP_RETCODE ret;<br>             SCIP *scip = nullptr;<br>         SCIP_VAR *var = nullptr;<br>              SCIP_EXPR *expr = nullptr;<br>            SCIP_CONS *cons = nullptr;<br>            SCIP_SOL *sol = nullptr;<br>              int nvars = 0;<br>                SCIP_VAR **allvars = nullptr;<br>         int ncons = 0;<br>                SCIP_CONS **allcons = nullptr;<br>                ret = SCIPcreate(&scip);<br>          ret = SCIPincludeDefaultPlugins(scip);<br>                ret = SCIPcreateProbBasic(scip, "scip");<br>            ret = SCIPenableReoptimization(scip, 1);<br>              ret = SCIPcreateVarBasic(scip, &var, "x_8083_15907", 0, 1E+20, 0, (SCIP_VARTYPE)3);<br>             if ((nvars % 100) == 0)<br>               {<br>                     if (nvars == 0)<br>                               allvars = (SCIP_VAR **)malloc(100 * sizeof(*allvars));<br>                        else<br>                          allvars = (SCIP_VAR **)realloc(allvars, (nvars + 100) * sizeof(*allvars));<br>            }<br>             allvars[nvars++] = var;<br>               ret = SCIPaddVar(scip, allvars[0]);<br>           ret = SCIPcreateVarBasic(scip, &var, "RC_8083_x_8885_15907", 0, 1E+20, 0, (SCIP_VARTYPE)3);<br>             if ((nvars % 100) == 0)<br>               {<br>                     if (nvars == 0)<br>                               allvars = (SCIP_VAR **)malloc(100 * sizeof(*allvars));<br>                        else<br>                          allvars = (SCIP_VAR **)realloc(allvars, (nvars + 100) * sizeof(*allvars));<br>            }<br>             allvars[nvars++] = var;<br>               ret = SCIPaddVar(scip, allvars[1]);<br>           ret = SCIPcreateVarBasic(scip, &var, "RC_8083_x_8885_22247", 0, 1E+20, 0, (SCIP_VARTYPE)3);<br>             if ((nvars % 100) == 0)<br>               {<br>                     if (nvars == 0)<br>                               allvars = (SCIP_VAR **)malloc(100 * sizeof(*allvars));<br>                        else<br>                          allvars = (SCIP_VAR **)realloc(allvars, (nvars + 100) * sizeof(*allvars));<br>            }<br>             allvars[nvars++] = var;<br>               ret = SCIPaddVar(scip, allvars[2]);<br>           ret = SCIPcreateVarBasic(scip, &var, "RC_8083_x_8885_16735", 0, 1E+20, 0, (SCIP_VARTYPE)3);<br>             if ((nvars % 100) == 0)<br>               {<br>                     if (nvars == 0)<br>                               allvars = (SCIP_VAR **)malloc(100 * sizeof(*allvars));<br>                        else<br>                          allvars = (SCIP_VAR **)realloc(allvars, (nvars + 100) * sizeof(*allvars));<br>            }<br>             allvars[nvars++] = var;<br>               ret = SCIPaddVar(scip, allvars[3]);<br>           {<br>                     double vals[3] =<br>                      {<br>                             0.891,<br>                                -0.009,<br>                               -0.009,<br>                       };<br>                    SCIP_VAR *vars[3] =<br>                   {<br>                             allvars[1],<br>                           allvars[2],<br>                           allvars[3],<br>                   };<br>                    ret = SCIPcreateConsBasicLinear(scip, &cons, "RC_8083_RC8885IngAmountRecipe15907Min", 3, vars, vals, 0, 1E+20);<br>         }<br>             if ((ncons % 100) == 0)<br>               {<br>                     if (ncons == 0)<br>                               allcons = (SCIP_CONS **)malloc(100 * sizeof(*allcons));<br>                       else<br>                          allcons = (SCIP_CONS **)realloc(allcons, (ncons + 100) * sizeof(*allcons));<br>           }<br>             allcons[ncons++] = cons;<br>              ret = SCIPaddCons(scip, allcons[0]);<br>          {<br>                     double vals[3] =<br>                      {<br>                             0.09,<br>                         -0.81,<br>                                -0.81,<br>                        };<br>                    SCIP_VAR *vars[3] =<br>                   {<br>                             allvars[1],<br>                           allvars[2],<br>                           allvars[3],<br>                   };<br>                    ret = SCIPcreateConsBasicLinear(scip, &cons, "RC_8083_RC8885IngAmountRecipe15907Max", 3, vars, vals, -1E+20, 0);<br>                }<br>             if ((ncons % 100) == 0)<br>               {<br>                     if (ncons == 0)<br>                               allcons = (SCIP_CONS **)malloc(100 * sizeof(*allcons));<br>                       else<br>                          allcons = (SCIP_CONS **)realloc(allcons, (ncons + 100) * sizeof(*allcons));<br>           }<br>             allcons[ncons++] = cons;<br>              ret = SCIPaddCons(scip, allcons[1]);<br>          {<br>                     double vals[3] =<br>                      {<br>                             0.054,<br>                                -0.846,<br>                               -0.846,<br>                       };<br>                    SCIP_VAR *vars[3] =<br>                   {<br>                             allvars[2],<br>                           allvars[1],<br>                           allvars[3],<br>                   };<br>                    ret = SCIPcreateConsBasicLinear(scip, &cons, "RC_8083_RC8885IngAmountRecipe22247Max", 3, vars, vals, -1E+20, 0);<br>                }<br>             if ((ncons % 100) == 0)<br>               {<br>                     if (ncons == 0)<br>                               allcons = (SCIP_CONS **)malloc(100 * sizeof(*allcons));<br>                       else<br>                          allcons = (SCIP_CONS **)realloc(allcons, (ncons + 100) * sizeof(*allcons));<br>           }<br>             allcons[ncons++] = cons;<br>              ret = SCIPaddCons(scip, allcons[2]);<br>          {<br>                     double vals[3] =<br>                      {<br>                             0.0891000000000001,<br>                           -0.8109,<br>                              -0.8109,<br>                      };<br>                    SCIP_VAR *vars[3] =<br>                   {<br>                             allvars[3],<br>                           allvars[1],<br>                           allvars[2],<br>                   };<br>                    ret = SCIPcreateConsBasicLinear(scip, &cons, "RC_8083_RC8885IngAmountRecipe16735Max", 3, vars, vals, -1E+20, 0);<br>                }<br>             if ((ncons % 100) == 0)<br>               {<br>                     if (ncons == 0)<br>                               allcons = (SCIP_CONS **)malloc(100 * sizeof(*allcons));<br>                       else<br>                          allcons = (SCIP_CONS **)realloc(allcons, (ncons + 100) * sizeof(*allcons));<br>           }<br>             allcons[ncons++] = cons;<br>              ret = SCIPaddCons(scip, allcons[3]);<br>          {<br>                     double vals[3] =<br>                      {<br>                             -0.0099,<br>                              -0.0099,<br>                              -0.0099,<br>                      };<br>                    SCIP_VAR *vars[3] =<br>                   {<br>                             allvars[1],<br>                           allvars[2],<br>                           allvars[3],<br>                   };<br>                    ret = SCIPcreateConsBasicLinear(scip, &cons, "RC_8083_RC8885InternalMainSumAbsolute1Max", 3, vars, vals, -1E+20, 0);<br>            }<br>             if ((ncons % 100) == 0)<br>               {<br>                     if (ncons == 0)<br>                               allcons = (SCIP_CONS **)malloc(100 * sizeof(*allcons));<br>                       else<br>                          allcons = (SCIP_CONS **)realloc(allcons, (ncons + 100) * sizeof(*allcons));<br>           }<br>             allcons[ncons++] = cons;<br>              ret = SCIPaddCons(scip, allcons[4]);<br>          {<br>                     double vals[3] =<br>                      {<br>                             -0.29,<br>                                -0.127,<br>                               -0.354,<br>                       };<br>                    SCIP_VAR *vars[3] =<br>                   {<br>                             allvars[1],<br>                           allvars[2],<br>                           allvars[3],<br>                   };<br>                    ret = SCIPcreateConsBasicLinear(scip, &cons, "RC_8083_RC8885NutrOnProduct751Max", 3, vars, vals, -1E+20, 0);<br>            }<br>             if ((ncons % 100) == 0)<br>               {<br>                     if (ncons == 0)<br>                               allcons = (SCIP_CONS **)malloc(100 * sizeof(*allcons));<br>                       else<br>                          allcons = (SCIP_CONS **)realloc(allcons, (ncons + 100) * sizeof(*allcons));<br>           }<br>             allcons[ncons++] = cons;<br>              ret = SCIPaddCons(scip, allcons[5]);<br>          {<br>                     double vals[4] =<br>                      {<br>                             3.64963503649635,<br>                             3.64963503649635,<br>                             1.66666666666667,<br>                             1.53846153846154,<br>                     };<br>                    SCIP_VAR *vars[4] =<br>                   {<br>                             allvars[0],<br>                           allvars[1],<br>                           allvars[2],<br>                           allvars[3],<br>                   };<br>                    ret = SCIPcreateConsBasicLinear(scip, &cons, "RC8083NutrOnProduct304", 4, vars, vals, 0.001, 99);<br>               }<br>             if ((ncons % 100) == 0)<br>               {<br>                     if (ncons == 0)<br>                               allcons = (SCIP_CONS **)malloc(100 * sizeof(*allcons));<br>                       else<br>                          allcons = (SCIP_CONS **)realloc(allcons, (ncons + 100) * sizeof(*allcons));<br>           }<br>             allcons[ncons++] = cons;<br>              ret = SCIPaddCons(scip, allcons[6]);<br>          {<br>                     double vals[4] =<br>                      {<br>                             0.045,<br>                                0.045,<br>                                0.125,<br>                                0.021,<br>                        };<br>                    SCIP_VAR *vars[4] =<br>                   {<br>                             allvars[0],<br>                           allvars[1],<br>                           allvars[2],<br>                           allvars[3],<br>                   };<br>                    ret = SCIPcreateConsBasicLinear(scip, &cons, "RC8083NutrOnProduct517", 4, vars, vals, -1E+20, 0.99);<br>            }<br>             if ((ncons % 100) == 0)<br>               {<br>                     if (ncons == 0)<br>                               allcons = (SCIP_CONS **)malloc(100 * sizeof(*allcons));<br>                       else<br>                          allcons = (SCIP_CONS **)realloc(allcons, (ncons + 100) * sizeof(*allcons));<br>           }<br>             allcons[ncons++] = cons;<br>              ret = SCIPaddCons(scip, allcons[7]);<br>          {<br>                     double vals[4] =<br>                      {<br>                             1,<br>                            0.9,<br>                          0.9,<br>                          0.9,<br>                  };<br>                    SCIP_VAR *vars[4] =<br>                   {<br>                             allvars[0],<br>                           allvars[1],<br>                           allvars[2],<br>                           allvars[3],<br>                   };<br>                    ret = SCIPcreateConsBasicLinear(scip, &cons, "RC8083Total", 4, vars, vals, 1, 1);<br>               }<br>             if ((ncons % 100) == 0)<br>               {<br>                     if (ncons == 0)<br>                               allcons = (SCIP_CONS **)malloc(100 * sizeof(*allcons));<br>                       else<br>                          allcons = (SCIP_CONS **)realloc(allcons, (ncons + 100) * sizeof(*allcons));<br>           }<br>             allcons[ncons++] = cons;<br>              ret = SCIPaddCons(scip, allcons[8]);<br>          ret = SCIPcreateVarBasic(scip, &var, "Consumption_Site_11_x_15907", 0, 1E+20, 0, (SCIP_VARTYPE)3);<br>              if ((nvars % 100) == 0)<br>               {<br>                     if (nvars == 0)<br>                               allvars = (SCIP_VAR **)malloc(100 * sizeof(*allvars));<br>                        else<br>                          allvars = (SCIP_VAR **)realloc(allvars, (nvars + 100) * sizeof(*allvars));<br>            }<br>             allvars[nvars++] = var;<br>               ret = SCIPaddVar(scip, allvars[4]);<br>           ret = SCIPchgVarLb(scip, allvars[4], 0);<br>              ret = SCIPchgVarUb(scip, allvars[4], 1E+20);<br>          {<br>                     double vals[2] =<br>                      {<br>                             -1,<br>                           100000,<br>                       };<br>                    SCIP_VAR *vars[2] =<br>                   {<br>                             allvars[4],<br>                           allvars[0],<br>                   };<br>                    ret = SCIPcreateConsBasicLinear(scip, &cons, "Consumption1_Site_11_x_15907", 2, vars, vals, 0, 0);<br>              }<br>             if ((ncons % 100) == 0)<br>               {<br>                     if (ncons == 0)<br>                               allcons = (SCIP_CONS **)malloc(100 * sizeof(*allcons));<br>                       else<br>                          allcons = (SCIP_CONS **)realloc(allcons, (ncons + 100) * sizeof(*allcons));<br>           }<br>             allcons[ncons++] = cons;<br>              ret = SCIPaddCons(scip, allcons[9]);<br>          ret = SCIPcreateVarBasic(scip, &var, "Market_Site_11_x_15907", 0, 1E+20, 0, (SCIP_VARTYPE)3);<br>           if ((nvars % 100) == 0)<br>               {<br>                     if (nvars == 0)<br>                               allvars = (SCIP_VAR **)malloc(100 * sizeof(*allvars));<br>                        else<br>                          allvars = (SCIP_VAR **)realloc(allvars, (nvars + 100) * sizeof(*allvars));<br>            }<br>             allvars[nvars++] = var;<br>               ret = SCIPaddVar(scip, allvars[5]);<br>           ret = SCIPchgVarLb(scip, allvars[5], 0);<br>              ret = SCIPchgVarUb(scip, allvars[5], 1E+20);<br>          ret = SCIPcreateVarBasic(scip, &var, "Stock_Site_11_x_15907", 0, 1E+20, 0, (SCIP_VARTYPE)3);<br>            if ((nvars % 100) == 0)<br>               {<br>                     if (nvars == 0)<br>                               allvars = (SCIP_VAR **)malloc(100 * sizeof(*allvars));<br>                        else<br>                          allvars = (SCIP_VAR **)realloc(allvars, (nvars + 100) * sizeof(*allvars));<br>            }<br>             allvars[nvars++] = var;<br>               ret = SCIPaddVar(scip, allvars[6]);<br>           ret = SCIPchgVarLb(scip, allvars[6], 0);<br>              ret = SCIPchgVarUb(scip, allvars[6], 0);<br>              {<br>                     double vals[3] =<br>                      {<br>                             -1,<br>                           -1,<br>                           1,<br>                    };<br>                    SCIP_VAR *vars[3] =<br>                   {<br>                             allvars[5],<br>                           allvars[6],<br>                           allvars[4],<br>                   };<br>                    ret = SCIPcreateConsBasicLinear(scip, &cons, "Consumption2_Site_11_x_15907", 3, vars, vals, 0, 0);<br>              }<br>             if ((ncons % 100) == 0)<br>               {<br>                     if (ncons == 0)<br>                               allcons = (SCIP_CONS **)malloc(100 * sizeof(*allcons));<br>                       else<br>                          allcons = (SCIP_CONS **)realloc(allcons, (ncons + 100) * sizeof(*allcons));<br>           }<br>             allcons[ncons++] = cons;<br>              ret = SCIPaddCons(scip, allcons[10]);<br>         ret = SCIPchgVarObj(scip, allvars[1], 681744.31);<br>             ret = SCIPchgVarObj(scip, allvars[2], 36305.91);<br>              ret = SCIPchgVarObj(scip, allvars[3], 26220935);<br>              ret = SCIPchgVarObj(scip, allvars[6], 6.050985);<br>              ret = SCIPchgVarObj(scip, allvars[5], 6.8174431);<br>             ret = SCIPsetObjsense(scip, (SCIP_OBJSENSE)1);<br>                ret = SCIPsolve(scip);<br>                {<br>                     SCIP_STATUS status = SCIPgetStatus(scip);<br>                     status = status;<br>              }<br>             sol = SCIPgetBestSol(scip);<br>           {<br>                     double x = SCIPgetSolVal(scip, sol, allvars[0]);<br>                      x = x;<br>                }<br>             {<br>                     double x = SCIPgetSolVal(scip, sol, allvars[1]);<br>                      x = x;<br>                }<br>             {<br>                     double x = SCIPgetSolVal(scip, sol, allvars[2]);<br>                      x = x;<br>                }<br>             {<br>                     double x = SCIPgetSolVal(scip, sol, allvars[3]);<br>                      x = x;<br>                }<br>             {<br>                     double obj = SCIPgetDualbound(scip);<br>                  obj = obj;<br>            }<br>             ret = SCIPfreeReoptSolve(scip);<br>               ret = SCIPcreateVarBasic(scip, &var, "Objective", 0, 1E+20, 0, (SCIP_VARTYPE)3);<br>                if ((nvars % 100) == 0)<br>               {<br>                     if (nvars == 0)<br>                               allvars = (SCIP_VAR **)malloc(100 * sizeof(*allvars));<br>                        else<br>                          allvars = (SCIP_VAR **)realloc(allvars, (nvars + 100) * sizeof(*allvars));<br>            }<br>             allvars[nvars++] = var;<br>               ret = SCIPaddVar(scip, allvars[7]);<br>           {<br>                     double vals[6] =<br>                      {<br>                             681744.31,<br>                            36305.91,<br>                             26220935,<br>                             6.050985,<br>                             6.8174431,<br>                            -1,<br>                   };<br>                    SCIP_VAR *vars[6] =<br>                   {<br>                             allvars[1],<br>                           allvars[2],<br>                           allvars[3],<br>                           allvars[6],<br>                           allvars[5],<br>                           allvars[7],<br>                   };<br>                    ret = SCIPcreateConsBasicLinear(scip, &cons, "Objective", 6, vars, vals, 0, 0);<br>         }<br>             if ((ncons % 100) == 0)<br>               {<br>                     if (ncons == 0)<br>                               allcons = (SCIP_CONS **)malloc(100 * sizeof(*allcons));<br>                       else<br>                          allcons = (SCIP_CONS **)realloc(allcons, (ncons + 100) * sizeof(*allcons));<br>           }<br>             allcons[ncons++] = cons;<br>              ret = SCIPaddCons(scip, allcons[11]);<br>         ret = SCIPchgVarLb(scip, allvars[6], 0);<br><br>            ret = SCIPchgVarUb(scip, allvars[6], 500);<br>            if (ret != SCIP_OKAY)<br>         {<br>                     // ret becomes SCIP_INVALIDDATA<br>                       /*<br>                            [var.c:7410] ERROR: cannot change the bounds of a fixed variable<br>                              [var.c:7387] ERROR: Error <-9> in function call<br>                         [scip_var.c:4806] ERROR: Error <-9> in function call<br>                    */<br><br>                  printf("oops\n");<br>           }<br><br>           ret = SCIPreleaseVar(scip, &allvars[0]);<br>          ret = SCIPreleaseVar(scip, &allvars[1]);<br>          ret = SCIPreleaseVar(scip, &allvars[2]);<br>          ret = SCIPreleaseVar(scip, &allvars[3]);<br>          ret = SCIPreleaseVar(scip, &allvars[4]);<br>          ret = SCIPreleaseVar(scip, &allvars[5]);<br>          ret = SCIPreleaseVar(scip, &allvars[6]);<br>          ret = SCIPreleaseVar(scip, &allvars[7]);<br>          ret = SCIPreleaseCons(scip, &allcons[0]);<br>         ret = SCIPreleaseCons(scip, &allcons[1]);<br>         ret = SCIPreleaseCons(scip, &allcons[2]);<br>         ret = SCIPreleaseCons(scip, &allcons[3]);<br>         ret = SCIPreleaseCons(scip, &allcons[4]);<br>         ret = SCIPreleaseCons(scip, &allcons[5]);<br>         ret = SCIPreleaseCons(scip, &allcons[6]);<br>         ret = SCIPreleaseCons(scip, &allcons[7]);<br>         ret = SCIPreleaseCons(scip, &allcons[8]);<br>         ret = SCIPreleaseCons(scip, &allcons[9]);<br>         ret = SCIPreleaseCons(scip, &allcons[10]);<br>                ret = SCIPreleaseCons(scip, &allcons[11]);<br>                ret = SCIPfree(&scip);<br>            if (allvars != NULL) free(allvars);<br>           if (allcons != NULL) free(allcons);<br>   }<br><br>   return 0;<br>}<br></div></div>