Menu

How to set up the congestion object

2016-04-19
2016-04-27
  • Rafik Fainti

    Rafik Fainti - 2016-04-19

    Dear all,

    I am trying to set up the congestion object in order to reproduce some of the outcomes presented in the paper entitled "Analysis of Residential Demand Response and Double-Auction Markets (http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=6039827&tag=1)". I followed the instructions given in the "Market User Guide", so I set up the auction object as follows:

    object auction {
        name Market_pool;
        unit MW;
        period 900;
    
        capacity_reference_object substation_transformer;
        capacity_reference_property power_out_real;
        max_capacity_reference_bid_quantity 5; 
    
        init_price 0.10;
        init_stdev 0.03;    
        warmup 0;
        object multi_recorder {
            property current_market.clearing_price,current_market.buyer_total_quantity;
            file "Market_pool.csv";
            interval 900;
            limit 10000;
        };
    }
    

    In my configuration I also used stub-bidders to play the role of sellers as you can see below:

    object stub_bidder {
     name seller_1;
     role SELLER;
     bid_period 900;
     market Market_pool;
     price 0.3;
     quantity 1;
     count 10000;
    }
    
    object stub_bidder {
     name seller_2;
     role SELLER;
     bid_period 900;
     market Market_pool;
     price 0.11;
     quantity 1;
     count 10000;
    }
    
    object stub_bidder {
     name seller_3;
     role SELLER;
     bid_period 900;
     market Market_pool;
     price 0.25;
     quantity 1;
     count 10000;
    }
    
    object stub_bidder {
     name seller_4;
     role SELLER;
     bid_period 900;
     market Market_pool;
     price 0.15;
     quantity 1;
     count 10000;
    }
    

    I also included 1306 residencies configured, more or less, as:

    object house {
         parent tmA104671;
         name hou104AtmA104671;
         floor_area 2252;
         schedule_skew -502;
         heating_system_type GAS;
         cooling_system_type ELECTRIC;
    
         object controller {
         name ac104AtmA104671;
           heating_setpoint heating5*1;
               schedule_skew -502;
               market Market_pool;
               bid_mode ON;
               control_mode RAMP;
               slider_setting 0.500;
               base_setpoint cooling8*1;
               period 900;
               average_target current_price_mean_24h;
               standard_deviation_target current_price_stdev_24h;
               target air_temperature;
               setpoint cooling_setpoint;
               demand last_cooling_load;
               total hvac_load;
               load hvac_load;
               state power_state;
               range_high 5;
               range_low -3;
           };
    
         thermal_integrity_level 5;
         air_temperature 70;
         mass_temperature 70;
         cooling_COP 3.1;
    
         object ZIPload {
               name bl104AtmA104671;
               base_power LIGHTS*1.15;
               schedule_skew -502;
               heatgain_fraction 0.9;
               power_pf 1.000;
               current_pf 1.000;
               impedance_pf 1.000;
               impedance_fraction 0.300000;
               current_fraction 0.300000;
               power_fraction 0.400000;
         };
         object waterheater {
         name wh104AtmA104671;
              schedule_skew -502;
              tank_volume 50;
              heating_element_capacity 4.4 kW;
              tank_setpoint 122.4;
              temperature 135;
              thermostat_deadband 4.6;
              location INSIDE;
              tank_UA 3.9;
              demand water11*1;
    
          object controller {
                schedule_skew  -502;
                name WH104AtmA104671;
                market Market_pool;
                bid_mode ON;
                control_mode RAMP;
                resolve_mode DEADBAND;
                period 900;
                average_target current_price_mean_24h;
                standard_deviation_target current_price_stdev_24h;  
                target inlet_water_temperature;
                setpoint tank_setpoint;
                demand actual_load;
                deadband thermostat_deadband;
                total actual_load;
                load actual_load;
           };
        };
    }
    

    I run the glm file with and without the congestion object. First of all I took this warning: "totalunknown is 0 -> some controllers are not providing their states with their bids". Secondly, I was expecting to observe higher prices in the case where the congestion object was included. Instead I observed zero prices in the most of the cases and some very low prices in a very few snapshots.

    Is there any problem with my configuration?

    Let me also ask something more. Can I use the same notation ("capacity_reference_object", "capacity_reference_property", "max_capacity_reference_bid_quantity") to define congestion limits in different objects and if yes in what detail? Can I use this notation on a line's phase in order to avoid line overloading for example?

    Sincerely,

     

    Last edit: David P. Chassin 2016-04-19
  • David P. Chassin

    Unfortunately, Jason is out of the office for a few days and he has the source code to the models used in that paper. I'm also about to take off for a week, so I don't have time to delve into it today. Hopefully somebody else will see something obvious before we get back into the office and get a chance to look at it. Sorry about the possible delay in responding.

     
  • Rafik Fainti

    Rafik Fainti - 2016-04-19

    Thank you very much. I will be waiting.

     
  • Jason Fuller

    Jason Fuller - 2016-04-20

    You are missing a bid price for the congestion. This is presented to the auction as two bid price, quantity pairs, one on the buyer side as an estimate of the "unknown/uncontrolled load" {price cap, estimated load} and one on the supplier side for the capacity constraint, which is usually bid at the wholesale price {wholesale price, capacity constraint}. This is usually done like this:

         object player {
            property capacity_reference_bid_price;
            file LMP.player;
            loop 1;
         };
    
     
  • Rafik Fainti

    Rafik Fainti - 2016-04-20

    Thank you very much. I thought that automatically bids on the LMP and I don't have to define it. I will try it.

    Regarding the second part of my question. Can I use this notation in every object I want? On a line's phase for example?

    Thanks in advance

     
  • Rafik Fainti

    Rafik Fainti - 2016-04-20

    First of all thank you very much for your response.

    I have another question. Is there any criterion in order to define the prices in the LMP.file or I can define them arbitrarily?

     
  • Jason Fuller

    Jason Fuller - 2016-04-20

    I'm not sure what you mean by using this in every object you want. This variable / set of variables is only available in auction. The congestion limit is not a physical limit - it's an imposed limit on the market to try to address physical congestion by aggregating the response of a number of loads. If you have multiple congestion points, then the markets/auctions need to align with the topology. In other words, for each congested line, you need to aggregate all of the load/resources below that line. The auction will accept any link object as its bidder for congestion limits.

    As for the LMP file, you can define them arbitrarily. The market operates on avg+std of prices, not absolute prices, which is why it requires 24+ hours to stabilize the system.

     
  • Rafik Fainti

    Rafik Fainti - 2016-04-20

    Thank you very much for your immediate response.

    That is what I meant. To use it for a specific distribution line in order to constrain power below a certain limit. For example:

    "capacity_reference_object 645-646"

    Do you think something like this can be done?

    Is it possible to define something like the example above in a greater detail? To take a phase of the line 645-646 separately for instance?

     
  • Jason Fuller

    Jason Fuller - 2016-04-22

    Yes, sort of, but you will need to sub-divide the problem. An auction that is covering the entire circuit cannot address constraints within it, only at a location where all of the devices can make an impact on the flows. In other words, all of the devices in that particular market need to be "below" the constraint.

    Now, if you want to layer multiple markets, that is not something we have done, and it would require some additional development.

     
    • Rafik Fainti

      Rafik Fainti - 2016-04-27

      I am sorry for the delay.

      Thank you very much for your response. You were very helpful.

       

Log in to post a comment.

MongoDB Logo MongoDB