CLEMEL

From evsgl
Jump to: navigation, search


Contents

CLEMEL: Supply-and-Demand Matcher

Background

CLEMEL (written in Java) implements a clearing market for electricity. More precisely, the software can deal with an arbitrary number of generators and loads who submit bid-curves at regular times. The bids can be in quadratic form (for generators only), they can be piecewise linear cost functions or piecewise linear marginal curves. As for the loads, they are allowed to issue fixed demand bids, which means that they require power irrespective of the power price.

There is a market mechanism which finds a clearing price, where after commitments, costs, profits etc. are calculated for the generators and loads.

To allow this software to act as a web service, I/O can flow through an IP socket exposed through a unique URI:



   http://virtualsmartgrid.project.cwi.nl/CLEMEL_PHP/index.php


More specifically, by POST-ing an XML file with specifications (for more details, see below) to the above URL one will receive the corresponding output as response.

I/O Specifications

The original JAVA software handles an input-file in which the input data are organized as a table:


#quadGenStart. NOTE: a **** as Name means alternative a, b and
#  OptRat for the same generator.
//  Name       ID	     FCost	     a	         b        capL	  capU	          OptRat
   hour=0
   Gen1	 1	     56.90 	    14.0	0.005	  0.0	  122.22	   0.10
   ****	 1	     56.90	    10.0	0.003	  0.0	  110.10	   0.10
   ****	 1	     56.90	    13.0	0.004	  0.0	  110.10	   0.10
   Gen2	 2	      0.11	    15.0	0.006	  0.0	  125.00	   0.20
   Gen3	 3	   2267.53	    25.0	0.010	  0.0	  742.86	   0.30
   Gen4	 4	      5.19	    30.0	0.012	  0.0	  200.00	   0.00
   Gen5	 5	   1391.16	    10.0	0.007	  0.0	  600.00	   0.00
#quadGenEnd


To improve transparency for remote users, the JAVA software has been equipped with an input and output socket that accepts well-defined XML, of which the snippet below provides an example:

<clemel_input>
   <hour value="0">
       <generator id="1">
           <FCost> 56.90 </FCost>
           <a_coef> 14.0 </a_coef>
           <b_coef> 0.005 </b_coef>
           <CapL> 0.0 </CapL>
           <capU> 122.22 </CapU>
           <OptRat> 0.10 </OptRat>
       </generator>
       <generator id="1">
           <FCost> 56.90 </FCost>
           <a_coef> 15.0 </a_coef>
           <b_coef> 0.006 </b_coef>
           <CapL> 0.0 </CapL>
           <capU> 125.00 </CapU>
           <OptRat> 0.10 </OptRat>
       </generator>
       <generator id="1">
           ...
       </generator>
       <generator id="2">
           <FCost> 0.11 </FCost>
           <a_coef> 10.0 </a_coef>
           <b_coef> 0.003 </b_coef>
           <CapL> 0.0 </CapL>
           <capU> 110.10 </CapU>
           <OptRat> 0.20 </OptRat>
       </generator>
       ...
   </hour>
   <hour value = "1">
       ...
   </hour>
   ...
</clemel_input>

In order to inform the submitting party of the required input structure, a XML schema is published that formally describes what information the input file should contain and can be used to validate it. For the CLEMEL simulator this schema for the above snippet is specified as follows.

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
   targetNamespace="http://www.cwi.nl/sen4"   elementFormDefault="qualified">
   <xs:element name="clemel_input">
     <xs:complexType>
       <xs:annotation>
         <xs:documentation> The input to the CLEMEL simulator specifies for
         a period of 24hrs the production capacity of an arbitrary number of
         generators. Each generator is assigned a unique ID and might operate
         in different production modes (characterized by different operational
         parameters).  In the latter case the identifier will reflect this fact,
         e.g. Gen 1.a and Gen 1.b.
         The production characteristic of each generator is a quadratic function
         specifying unit cost as a function of supply and determined by the
         following parameters: FCost (fixed cost), a_coef (coef. of linear term),
         b_coef (coeff of quadratic term), CapL (lower limit for capacity), CapU
         (upper limit for capacity), OptRat (option ratio). 
         ...
         </xs:documentation>
       </xs:annotation>
       <xs:element name="hour">
         <xs:complexType>
           <xs:attribute name="value" type="xs:integer"  use="required"/>
           <xs:element name="generator">
             <xs:complexType>
               <xs:attribute name="id" type="xs:string"  use="required"/>
               <xs:element name="FCost"  type="xs:float"/>
               <xs:element name="a_coef"      type="xs:float"/>
               <xs:element name="b_coef"      type="xs:float"/>
               <xs:element name="CapL"   type="xs:float"/>
               <xs:element name="CapU"   type="xs:float"/>
               <xs:element name="OptRat" type="xs:float"/>
             </xs:complexType>
           </xs:element>
         </xs:complexType>
       </xs:element>
     </xs:complexType>
   </xs:element>
...
</xs:schema>


RESTful Interface

To facilitate interaction the following URI's are defined:

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox