Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

GenOpt/EnergyPlus-Best Algorithm for peak load reduction (load-shift)

asked 2015-12-07 04:17:50 -0600

samks123's avatar

updated 2015-12-07 12:32:34 -0600

I am actually trying to develop an algorithm to shift the load demand during on-peak hours using GenOpt. I have had a quick trial testing the example file HookJeeves Algorithm, however I have some doubts in order to achieve my target.

I would like to start with something very simple such as:

$\min_{J} : C(t) dt$


$C(t) = [P_{HP} + P_{DHW} +...] * TimeOfUse (t) $

  • $C(t)$ : Cost function

  • $TimeOf Use(t)$ : on-peak hour tariff prices and off-peak hour tariff prices

  • $P_{HP}$: Power associated to a Heat Pump

  • $P_{DHW}$ : Power associated to the Domestic Hot Water


  • 18C <= Temperature indoor<= 21C

  • 45C <= Temperature Domestic Hot Water<= 55C

Therefore, I am not too sure if HookJeeves is the best algorithm to use for this case, and if it is, how can I set the time of use parameter and constraint the temperatures.

edit retag flag offensive close merge delete


I'm pretty sure your question isn't actually about which algorithm to use (we don't care here...) but how to define your own cost function.

Julien Marrec's avatar Julien Marrec  ( 2015-12-07 04:52:05 -0600 )edit

@Julien. Yes indeed. Thanks again

samks123's avatar samks123  ( 2015-12-07 05:43:37 -0600 )edit

Could you rephrase the question and the title. Like "GenOpt/EnergyPlus-How to write your own cost function" or something

Julien Marrec's avatar Julien Marrec  ( 2015-12-07 06:14:53 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2015-12-07 06:20:19 -0600

updated 2015-12-07 06:20:50 -0600

You need to define your own cost function. I've personally done it in Python when needed, because that's my language of choice and because there exists some examples of how to do this.

Specifically, here are my recommendations:

  • Download and play with ExcalibBEM, which is a Graphical User Interface (GUI) for GenOpt developed by Hydro Quebec. It simplifies the setup quite a lot and comes with an example or two where a custom cost function is defined in Python. It's pretty easy to write your own function.

  • For the constraints, one simple way is to set the value of the cost function to infinite (= a very large value) when the constraints aren't satisfied (penalization).

edit flag offensive delete link more



Adding a penalty or Barrier function is the only way to handle constraints in GenOpt

GilbertLM's avatar GilbertLM  ( 2015-12-07 07:52:24 -0600 )edit

@Julien, and @GilbertLM thanks very much.Will give a try to ExcalibBEM

samks123's avatar samks123  ( 2015-12-08 03:29:11 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2015-12-07 04:17:50 -0600

Seen: 434 times

Last updated: Dec 07 '15