Skip to main content

Part-load efficiency curve modelling in Gurobi

Comments

4 comments

  • Official comment
    Simranjit Kaur
    • Gurobi Staff Gurobi Staff
    This post is more than three years old. Some information may not be up to date. For current information, please check the Gurobi Documentation or Knowledge Base. If you need more help, please create a new post in the community forum. Or why not try our AI Gurobot?.
  • Charitha Buddhika Heendeniya
    • Gurobi-versary
    • Conversationalist
    • Curious

    UPDATE - Another try using table lookup method

    p_hp_cop = {0:1.5, 0.2:2.3, 0.4:3.4, 0.6:3.7, 0.8:3.85}  #Create a lookup table (dict) for different load levels (key) and efficiency (value)

    model.addConstrs(v_hp_cop[T] == max([v for (k,v) in p_hp_cop.items()  if k*v_installed_capacity<=v_hp_power[T]])  for T in Time)

    This also doesn't work and always returns the highest efficiency irrespective of what the load level is. Looking forward to some wise suggestions to implement part-load efficiency curves. 

     

    0
  • Eli Towle
    • Gurobi Staff Gurobi Staff

    Hi Buddi,

    Could you try adding the constraint load_level(T) * power(T) = installed_capacity for each time T? Gurobi 9.0 supports bilinear constraints like this. When doing this, be sure to set the NonConvex parameter to 2.

    Eli

    0
  • Charitha Buddhika Heendeniya
    • Gurobi-versary
    • Conversationalist
    • Curious

    Thank you Eli. So I added (with Gurobi 9.0);

    model.Params.NonConvex = 2

    model.addConstrs(v_hp_load_level[T]*v_hp_power[T] == v_installed_capacity for T in Time)

    There were some problems but after I uninstalled everything and reinstalled again, it started working. The challenge I have now is with the computational time. In that regard, especially because my model has a large number of time-steps, I would prefer a simpler table look-up kind of a method. Do you know how it can be implemented? 

    0

Post is closed for comments.