Skip to main content

Gurobi in Java - How can I add two Expression?

Ongoing

Comments

9 comments

  • Jaromił Najman
    Gurobi Staff Gurobi Staff

    Hi,

    you could use the add() function as

    ObjExpr[count].add(LinObjExpr);
    ObjExpr[count].add(QuadObjExpr);

    Does this work for you?

    Best regards,
    Jaromił

    0
  • Fulya Terzi
    Gurobi-versary
    First Comment

    Hi Jaromil,

    How do you define ObjExpr in this code? I wrote the code and defined ObjExpr as GRBQuadExpr[ ] but gives error?

     

    Thank you in advance

    Best regards,

     

    Fulya

    0
  • Jaromił Najman
    Gurobi Staff Gurobi Staff

    Dear Fulya,

    What kind of error do you get?

    Here is an example code:

    GRBLinExpr l1 = new GRBLinExpr();
    l1.addTerm(1.0, x); // adding 1.0 * x to l1 where x is a GRBVar

    GRBQuadExpr q1 = new GRBQuadExpr();
    q1.addTerm(1.0, x, y); // adding 1.0 * x * y to q1 where x and y are GRBVar

    GRBQuadExpr obj = new GRBQuadExpr();
    obj.add(l1); // adding GRBLinExpr to obj
    obj.add(q1); // adding GRBQuadExpr to obj

    Does this help?

    Best regards,
    Jaromił

    0
  • Fulya Terzi
    Gurobi-versary
    First Comment

    Dear Jaromil,

    The error is NullPointerException. The error line is shown in 

    GRBQuadExpr[] objExpr = new GRBQuadExpr[sizeOfTerm];

    GRBQuadExpr Sum = new GRBQuadExpr(); // yeni Ekledim
    GRBLinExpr linearCoeff = new GRBLinExpr();
    GRBQuadExpr quadCoeff = new GRBQuadExpr();

    for (Entry<Integer, Map<String, HourlySegmentNewGurobi>> entry : hourlySegments.entrySet()) {
         period = entry.getKey();

         for (String segmentId : hourlySegments.get(period).keySet()) {

          linearCoeff = setLinearCoeffOfHourly(hourlySegments.get(period).get(segmentId),
            model, hourlyVars.get(segmentId));

          quadCoeff = setQuadraticCoeffOfHourly(hourlySegments.get(period).get(segmentId), model,
    hourlyVars.get(segmentId));

          objExpr[count].add(linearCoeff); // This line
          objExpr[count].add(quadCoeff);

          Sum.add(coeffsOfHourly[count]);
          count++;
    }
    }

     

    Best Regards,

    Thank you

    0
  • Jaromił Najman
    Gurobi Staff Gurobi Staff

    Dear Fulya,

    It seems like the \(\texttt{linearCoeff}\) object you calculate via your \(\texttt{setLinearCoeffOfHourly}\) function is a \(\texttt{NullPointer}\). You could check this by

    if (linearCoeff == null){
    System.out.println("Error: linearCoeff is a NullPointer");
    }

    Best regards,
    Jaromił

    0
  • Fulya Terzi
    Gurobi-versary
    First Comment

    Dear Jaromil,

    I wrote after this code

    linearCoeff = setLinearCoeffOfHourly(hourlySegments.get(period).get(segmentId),
            model, hourlyVars.get(segmentId));

    and checked it but the code do not give this error message.

    Best Regards,

    Fulya

     

    0
  • Jaromił Najman
    Gurobi Staff Gurobi Staff

    Dear Fulya,

    Could you post the whole \(\texttt{NullPointerException}\) error message you are getting?

    Best regards,
    Jaromił

    0
  • Fulya Terzi
    Gurobi-versary
    First Comment

    Dear Jaromil,

    The error message such that

    Exception in thread "main" java.lang.NullPointerException

    After that shows the places:

    at ....ObjectiveFunctionNewGurobi.setExprForHourly(ObjectiveFunctionNewGurobi.java:117)
    at ....ObjectiveFunctionNewGurobi.setQuadratic(ObjectiveFunctionNewGurobi.java:42)
    at ....SolverNewGurobi.setupModel(SolverNewGurobi.java:363)
    at ....SolverNewGurobi.<init>(SolverNewGurobi.java:76)
    at ....OptimizationEngineNewGurobi.solvePreProblem(OptimizationEngineNewGurobi.java:191)
    at ....OptimizationEngineNewGurobi.run(OptimizationEngineNewGurobi.java:131)
    at ....Main.runThroughFile(Main.java:265)
    at ....Main.main(Main.java:95)
    0
  • Jaromił Najman
    Gurobi Staff Gurobi Staff

    Dear Fulya,

    The error message indicates that the error comes from the \(\texttt{setExprForHourly}\) function found in file \(\texttt{ObjectiveFuncitonNewGurobi.java}\) at line 117. Please try to fix the code therein to avoid the NullPointerException.

    Best regards,
    Jaromił

    0

Please sign in to leave a comment.