Is it possible to model generator outages as state changes over time, as opposed to discrete, disconnected events? The associated profile might look like a timeseries with 0’s and 1’s to indicate OFF and ON states.
Hi @emmacooper,
Great question! This is a support request we’ve actually received before, although that was prior to the existence of this forum. Because we have received this request multiple times, we are considering adding support for this in the future. Currently there is no direct way to provide this input, but there is an indirect method that requires just a couple of additional steps.
Generator state Events (ON, OFF, and ONOFF) do not accept numeric values for their “Value” property. However, these can be configured to depend on the value of another property using the “Condition” and “Evaluation” properties of the Event.
We recommend using a “PREF” event to refer to the outage profile. A PREF Event in SAInt is a “passive” event that allows the user to define a value that can be referenced but does not affect the simulation. You can then define an OFF Event and either an ONOFF or ON Event that use the “Condition” of PREF = 1. See the example below where the OFF Event is used if PREF does not equal 1 and the ONOFF Event is used if PREF is equal to 1. This achieves the goal you are asking.
One quick note about ON versus ONOFF. An ON Event will force a generator to be on no matter what. An ONOFF event will specify that a generator is available but ultimately its ON or OFF status will be determined by the solver. This is the recommended behavior in most cases. Also note that for some object types, for example XGEN, PV, and WIND objects, it is not possible to define an ONOFF Event because these objects have no binary unit commitment variable associated with them.
Thanks @will ! I tried to implement this with a custom outage timeseries for one of the nuclear generators in ENET39. Here is my profile that I loaded in:
But the solution does not seem reflect the generator being offline during the specified outage times. In fact, the dispatch stack shows active generation during outage periods.
I’m wondering if I might’ve missed anything in my use of the PREF variable - please let me know if you notice anything incorrect! My other hypothesis is that my outage periods were too short - i.e. the nuclear generator didn’t have time to ramp down? However, the MaxRampDownRate was set to 1 MW/min. For a 650 MW unit, that means that it would take a little less than 11 hours to completely turn off from operating at full capacity. I believe that my outage duration was longer than 11 hours.
Thanks again!
Hi @emmacooper,
Thanks for sharing your information from trying to implement this!
It looks like you’ve configured the profile and the events correctly. Could you double check the time window for your generation data? In version 3.6 of SAInt, all of the dates are in the format “DD/MM/YYYY hh:mm:ss”. This means that the generation dispatch stack you shared goes from the 1 AM on the 1st of January to 12 AM on the 12th of January. Can you share what the generation dispatch for this generator is during one of the outages you specified?
Thanks!
I did format the dates incorrectly - thank you for catching that @will !
Hi Will,
Thank you for sharing the maintenance strategy. I’m currently working with a model that has around 146 FGEN units, each with its own maintenance schedule. Would you recommend creating 146 separate outage profiles and then defining PREF, OFF, and ONOFF events for each unit? While setting up the outage profiles is manageable, creating individual events for all 146 machines seems time consuming. Is there any workaround, such as uploading these events directly from Excel, similar to how load profiles can be imported?
Hi @aftabzmn1,
Yes, I would recommend doing exactly as you are describing. You will absolutely want to create Excel import files for the profiles and the events since you are dealing with a large number of objects.
Yes, there is an Excel import template for Events similar to profiles. You can find this described in the documentation here.
If you want to get fancy and automate things via the API to allow you to very easily define large amounts of profiles, events, objects, etc. in a programmatic way, you can use pySAInt.
Please let me know if you have any further questions!
Hi Will, Thanks for the template link. for test purpose I created Scenerio Event profile with 1 machine. Please see the attached picture. When I tried to import this profile, It gives me these errors:
2025-08-19 11:57:28 [EROR] Line 2: Scenario parameter OFF not found!
2025-08-19 11:57:28 [EROR] Line 3: Scenario parameter ONOFF not found!
2025-08-19 11:57:28 [EROR] Line 4: Scenario parameter PREF not found!
2025-08-19 11:57:28 [EROR] Failed to parse file: No lines were parsed
Hi @aftabzmn1,
Thanks for sharing your update.
The “Parameter” column should specify the full description of the property including which object each event will apply to. I assume these events are for the generator “BLCP_T1”. Each event would have the following “Parameter”, respectively:
FGEN.BLCP_T1.OFF
FGEN.BLCP_T1.ONOFF
FGEN.BLCP_T1.PREF
Thank you Will. It’s working