Adding a new offer to the vSPD input data

  • 1.1K Views
  • Last post 3 days ago
Tuong Nguyen posted this 29 May 2019

Hi all,

We were recently asked how to add a new offer to vSPD for testing purposes. To be clear, this question pertains to the standalone version of vSPD, and not vSPD-online.

Currently, we can easily modify the existing offer in vSPD but it is not straightforward to add a new (undeclared) offer into vSPD. In this topic, I will present some sample code that can be used to add a new offer ("ABC2201 XYZ0" ) to an existing location/pnode (e.g. HAM2201). I would recomend that this code snippet be inserted between code sections 4 and 5 of the vSPDSolve.gms file as follows:

*=====================================================================================

* 4. Input data overrides - declare and apply (include vSPDoverrides.gms)

*=====================================================================================

 $ontext

 - At this point, vSPDoverrides.gms is included into vSPDsolve.gms if an override file defined by the $setglobal vSPDinputOvrdData in vSPDSetting.inc exists.

 - All override data symbols have the characters 'Ovrd' appended to the original symbol name. After declaring the override symbols, the override data is installed and the original symbols are overwritten.

 - Note that the Excel interface permits a limited number of input data symbols to be overridden. The EMI interface will create a GDX file of override values for all data inputs to be overridden. If operating in standalone mode, overrides can be installed by any means the user prefers - GDX file, $include file, hard-coding, etc. But it probably makes sense to mimic the GDX file as used by EMI.

$offtext

 

$if exist "%ovrdPath%%vSPDinputOvrdData%.gdx"  $include vSPDoverrides.gms

*--------- adding a new generation offer ---------------------------------------------

$onmulti

*1. Declare a new offer (Ex: "ABC2201 XYZ0")

set      i_Offer       'Adding generation offer'   / 'ABC2201 XYZ0' / ;

$offmulti

 

*2. Map the new offer to an existing pnode (Ex: "HAM2201")

i_tradePeriodOfferNode(tp, 'ABC2201 XYZ0', 'HAM2201') = yes ;

 

*3. Map the new offer to an existing trader (Ex: "38486") . You can use any trader in the i_trader list

i_tradePeriodOfferTrader(tp,'ABC2201 XYZ0','38486')  = yes ;

 

*4. Adding offer paremeter data

i_tradePeriodOfferParameter(tp,'ABC2201 XYZ0','i_initialMW')  = 0;

i_tradePeriodOfferParameter(tp,'ABC2201 XYZ0','i_reserveGenerationMaximum')  = 10000;

i_tradePeriodOfferParameter(tp,'ABC2201 XYZ0','i_windOffer')  = 0;

i_tradePeriodOfferParameter(tp,'ABC2201 XYZ0','i_FKbandMW') = 0;

i_tradePeriodOfferParameter(tp,'ABC2201 XYZ0','i_rampUpRate') = 9999;

i_tradePeriodOfferParameter(tp,'ABC2201 XYZ0','i_rampDnRate') = 9999;

i_tradePeriodRiskGenerator(tp,'ABC2201 XYZ0') = no ;

 

*5. Adding offer quantity and price

i_tradePeriodEnergyOffer(tp,'ABC2201 XYZ0','t1','i_generationMWoffer') = 100 ;

i_tradePeriodEnergyOffer(tp,'ABC2201 XYZ0','t1','i_generationMWofferPrice') = 0.01;

i_tradePeriodEnergyOffer(tp,'ABC2201 XYZ0','t2','i_generationMWoffer') = 100 ;

i_tradePeriodEnergyOffer(tp,'ABC2201 XYZ0','t2','i_generationMWofferPrice') = 1000;

 

*=====================================================================================

* 5. Initialise constraint violation penalties (CVPs)

*=====================================================================================

Please post any related questions below, new questions in a new discussion, or drop us an email via the emi email address.

Hope this helps,

Tuong Nguyen.

Order by: Standard | Newest | Votes
Kaka posted this 2 weeks ago

Hi Tuong

Thanks for sharing this sample code. The code was obviously written for earlier versions of vSPD (pre real-time pricing). Can you please provide code that will work for the latest version of vSPD (v5.0.2)? Can you also indicate: 

  • How the code should vary between intermittent (e.g. wind, solar) and non-intermittent (e.g. geothermal) generation offers
  • How to add offers that change as the trading period changes

Cheers

SolarP posted this 4 days ago

Hi Tuong,

We are a solar farm developer and need to urgently run market-based grid studies on our projects to confirm our project feasibility including any potential risk of constraints etc. Please confirm what the process and timing would be to provide the code for vSPD (v5.0.2) to allow us to run different new generation offers (intermittent and non-intermittent) on vSPD?

Your prompt assitance would be grealtly appreciated.

Thanks

Phil Bishop posted this 3 days ago

Our limited functionality vSPD-online tool is no longer available. It is unclear at this time when or even if we will have the time and resources to create a version of it that works with data post real-time pricing.  

The vSPD model itself, however, is available - as explained on the EMI vSPD page:

  • vSPD v3.1.0 works for all days up to 31 October 2022 - see the grey panel at the bottom of the EMI vSPD page for links to the relevant vSPD codes and GDX files.
  • vSPD v5.0.2 works for all days from 1 November 2022 (the start of real-time pricing) - see the EMI vSPD page for links to the relevant vSPD codes and GDX files.
  • Alternatively, and as explained on the vSPD EMI page, go directly to our vSPD GitHub page for the codes and to EMI datasets for the GDX files.
  • You will need the GAMS software and a GAMS license to run vSPD.

The vSPD model codes and data files are provided to assist decision making within the sector on a self-help basis. The Authority is not resourced to provide support beyond pointing you in the right direction.

Thanks

Phil