Part-load efficiency curve modelling in Gurobi

Comments

3 comments

  • Charitha Buddhika Heendeniya

    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
    Comment actions Permalink
  • Eli Towle

    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
    Comment actions Permalink
  • Charitha Buddhika Heendeniya

    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
    Comment actions Permalink

Please sign in to leave a comment.

Powered by Zendesk