TomSym Production of Electricity: Difference between revisions

From TomWiki
Jump to navigationJump to search
(Created page with "{{Part Of Manual|title=the TomSym Manual|link=TomSym Manual}} ==Problem description== Power generators of four different types are available to satisfy the daily ele...")
 
No edit summary
Line 7: Line 7:
Daily electricity demands (in MW)
Daily electricity demands (in MW)


<pre>
+-------+-------+-------+--------+--------+-------+--------+---------+
+-------+-------+-------+--------+--------+-------+--------+---------+
|Period |0am-6am|6am-9am|9am-12pm|12pm-2pm|2pm-6pm|6pm-10pm|10pm-12am|
|Period |0am-6am|6am-9am|9am-12pm|12pm-2pm|2pm-6pm|6pm-10pm|10pm-12am|
Line 12: Line 13:
|Demand |  12000|  32000|  25000|  36000|  25000|  30000|    18000|
|Demand |  12000|  32000|  25000|  36000|  25000|  30000|    18000|
+-------+-------+-------+--------+--------+-------+--------+---------+
+-------+-------+-------+--------+--------+-------+--------+---------+
</pre>


The power generators of the same type have a maximum capacity and may be connected to the network starting from a certain minimal power output. They have a start-up cost, a fixed hourly cost for working at minimal power, and an hourly cost per additional megawatt for anything beyond the minimal output. These data are given in the following table.
The power generators of the same type have a maximum capacity and may be connected to the network starting from a certain minimal power output. They have a start-up cost, a fixed hourly cost for working at minimal power, and an hourly cost per additional megawatt for anything beyond the minimal output. These data are given in the following table.
Line 17: Line 19:
Description of power generators
Description of power generators


<pre>
+---------+-----------+------+--------+--------+------------+--------+
+---------+-----------+------+--------+--------+------------+--------+
|Available|Min. output|Max.  |capacity|Fix cost|Add. MW cost|Start-up|
|Available|Min. output|Max.  |capacity|Fix cost|Add. MW cost|Start-up|
Line 26: Line 29:
|Type 4  |  3      | 1800 |  3500  |  4800  |  3.8      | 1200  |
|Type 4  |  3      | 1800 |  3500  |  4800  |  3.8      | 1200  |
+---------+-----------+------+--------+--------+------------+--------+
+---------+-----------+------+--------+--------+------------+--------+
</pre>


A power generator can only be started or stopped at the beginning of a time period. As opposed to the start, stopping a power plant does not cost anything. At any moment, the working power generators must be able to cope with an increase by 20% of the demand forecast. Which power generators should be used in every period in order to minimize the total daily cost?
A power generator can only be started or stopped at the beginning of a time period. As opposed to the start, stopping a power plant does not cost anything. At any moment, the working power generators must be able to cope with an increase by 20% of the demand forecast. Which power generators should be used in every period in order to minimize the total daily cost?
Line 31: Line 35:
==Variables==
==Variables==


<pre>
demand              MW needed each period
demand              MW needed each period
available          Generators of each type available
available          Generators of each type available
Line 39: Line 44:
startcost          Cost for starting a generator
startcost          Cost for starting a generator
periodlengths      Hours in each period
periodlengths      Hours in each period
</pre>


==Reference==
==Reference==

Revision as of 17:25, 2 November 2011

Notice.png

This page is part of the TomSym Manual. See TomSym Manual.

Problem description

Power generators of four different types are available to satisfy the daily electricity demands (in megawatts) summarized in the following table. We consider a sliding time horizon: the period 10pm-12am of day d is followed by the period 0am-6am of day d + 1.

Daily electricity demands (in MW)

+-------+-------+-------+--------+--------+-------+--------+---------+
|Period |0am-6am|6am-9am|9am-12pm|12pm-2pm|2pm-6pm|6pm-10pm|10pm-12am|
+-------+-------+-------+--------+--------+-------+--------+---------+
|Demand |  12000|  32000|   25000|   36000|  25000|   30000|    18000|
+-------+-------+-------+--------+--------+-------+--------+---------+

The power generators of the same type have a maximum capacity and may be connected to the network starting from a certain minimal power output. They have a start-up cost, a fixed hourly cost for working at minimal power, and an hourly cost per additional megawatt for anything beyond the minimal output. These data are given in the following table.

Description of power generators

+---------+-----------+------+--------+--------+------------+--------+
|Available|Min. output|Max.  |capacity|Fix cost|Add. MW cost|Start-up|
|number   |in MW      |in MW |$/h     |        |$/h         |cost    |
+---------+-----------+------+--------+--------+------------+--------+
|Type 1   |  10       |  750 |  1750  |  2250  |  2.7       | 5000   |
|Type 2   |   4       | 1000 |  1500  |  1800  |  2.2       | 1600   |
|Type 3   |   8       | 1200 |  2000  |  3750  |  1.8       | 2400   |
|Type 4   |   3       | 1800 |  3500  |  4800  |  3.8       | 1200   |
+---------+-----------+------+--------+--------+------------+--------+

A power generator can only be started or stopped at the beginning of a time period. As opposed to the start, stopping a power plant does not cost anything. At any moment, the working power generators must be able to cope with an increase by 20% of the demand forecast. Which power generators should be used in every period in order to minimize the total daily cost?

Variables

demand              MW needed each period
available           Generators of each type available
mincap              Minimal output of generator
maxcap              Maximal output of generator
fixcost             Fix cost per hour
runningcost         Cost per hour and MW above mincap
startcost           Cost for starting a generator
periodlengths       Hours in each period

Reference

Applications of optimization... Gueret, Prins, Seveaux

% Marcus Edvall, Tomlab Optimization Inc, E-mail: tomlab@tomopt.com
% Copyright (c) 2005-2009 by Tomlab Optimization Inc., $Release: 7.2.0$
% Written Oct 7, 2005.   Last modified Apr 8, 2009.

Problem setup

demand      = [12;32;25;36;25;30;18]*1000;
available   = [10;4;8;3];
mincap      = [750;1000;1200;1800];
maxcap      = [1750;1500;2000;3500];
fixcost     = [2250;1800;3750;4800];
runningcost = [2.7;2.2;1.8;3.8];
startcost   = [5000;1600;2400;1200];
periodlengths = [6;3;3;2;4;4;2];

n1 = length(demand);
n2 = length(available);

start = tom('start',n1,n2,'int');
wrk  = tom('wrk',n1,n2,'int');
padd  = tom('padd',n1,n2);

% Bounds
bnds1 = {[start;padd] >= 0};
bnds2 = {wrk <= repmat(available',n1,1)};

% Relationship between work and padd
addcap = repmat((maxcap-mincap)',n1,1);
con1 = {padd <= addcap.*wrk};

% Demand in each period constraint
con2 = {sum(repmat(mincap',n1,1).*wrk+padd,2) >= demand};

% 20% additional production possible
con3 = {sum(repmat(maxcap',n1,1).*wrk,2) >= 1.2*demand};

% Relationship between start_pt and work_pt
con4 = {start(1,:) >= wrk(1,:) - wrk(end,:)};
con5 = {start(2:end,:) >= wrk(2:end,:) - wrk(1:end-1,:)};

% Objective
objective = sum(sum(repmat(startcost',n1,1).*start + ...
    repmat(periodlengths,1,n2).*(repmat(fixcost',n1,1).*wrk + ...
    repmat(runningcost',n1,1).*padd)));

constraints = {bnds1, bnds2, con1, con2, con3, con4, con5};
options = struct;
options.solver = 'cplex';
options.name   = 'Production of Electricity';
sol = ezsolve(objective,constraints,[],options);

PriLev = 1;
if PriLev > 0
    intervals = ['00-06';'06-09';'09-12';'12-14';'14-18';'18-22';'22-24'];
    starts    = sol.start;
    running   = sol.wrk;
    extra     = sol.padd;
    [reacs, tim] = size(starts);
    for time = 1:tim,
        disp([' At ' intervals(time,:) '...'])
        for reac = 1:reacs,
            if running(reac,time) > 0,
                disp([   '   there are ' num2str(running(reac,time))  ...
                    ' reactors of type ' num2str(reac) ' running' ])
                if starts(reac,time) > 0,
                    disp(['      (we started ' num2str( starts(reac,time))...
                        ' additional reactors)'])
                end
                if extra(reac,time) > 0,
                    disp(['      (we also produce ' num2str(  extra(reac,time))...
                        ' MW more than the minimal level)'])
                end
            end
        end
    end
end

% MODIFICATION LOG
%
% 051010 med   Created.
% 060109 per   Added documentation.
% 060125 per   Moved disp to end
% 090308 med   Converted to tomSym
Problem type appears to be: mip
Time for symbolic processing: 0.049173 seconds
Starting numeric solver
===== * * * =================================================================== * * *
TOMLAB - TOMLAB Development license  999007. Valid to 2011-12-31
=====================================================================================
Problem: ---  1: Production of Electricity      f_k 1465810.000000000000000000
                                              f(x_0)      0.000000000000000000

Solver: CPLEX.  EXIT=0.  INFORM=102.
CPLEX Branch-and-Cut MIP solver
Optimal sol. within epgap or epagap tolerance found

FuncEv  126 Iter   14 
CPU time: 0.109201 sec. Elapsed time: 0.046000 sec. 
 At 00-06...
   there are 3 reactors of type 1 running
   there are 4 reactors of type 2 running
      (we started 1 additional reactors)
      (we also produce 1600 MW more than the minimal level)
   there are 4 reactors of type 3 running
   there are 7 reactors of type 4 running
      (we started 3 additional reactors)
      (we also produce 3350 MW more than the minimal level)
   there are 3 reactors of type 5 running
   there are 3 reactors of type 6 running
      (we also produce 350 MW more than the minimal level)
   there are 3 reactors of type 7 running
 At 06-09...
   there are 4 reactors of type 1 running
      (we also produce 1750 MW more than the minimal level)
   there are 4 reactors of type 2 running
      (we also produce 2000 MW more than the minimal level)
   there are 4 reactors of type 3 running
      (we also produce 200 MW more than the minimal level)
   there are 4 reactors of type 4 running
      (we also produce 2000 MW more than the minimal level)
   there are 4 reactors of type 5 running
      (we also produce 950 MW more than the minimal level)
   there are 4 reactors of type 6 running
      (we also produce 2000 MW more than the minimal level)
   there are 4 reactors of type 7 running
      (we also produce 1950 MW more than the minimal level)
 At 09-12...
   there are 2 reactors of type 1 running
      (we also produce 1600 MW more than the minimal level)
   there are 8 reactors of type 2 running
      (we started 6 additional reactors)
      (we also produce 6400 MW more than the minimal level)
   there are 8 reactors of type 3 running
      (we also produce 6400 MW more than the minimal level)
   there are 8 reactors of type 4 running
      (we also produce 6400 MW more than the minimal level)
   there are 8 reactors of type 5 running
      (we also produce 6400 MW more than the minimal level)
   there are 8 reactors of type 6 running
      (we also produce 6400 MW more than the minimal level)
   there are 4 reactors of type 7 running
      (we also produce 3200 MW more than the minimal level)
 At 12-14...
   there are 3 reactors of type 2 running
      (we started 3 additional reactors)
   there are 1 reactors of type 3 running
   there are 3 reactors of type 4 running
      (we started 2 additional reactors)
   there are 1 reactors of type 5 running
   there are 3 reactors of type 6 running
      (we started 2 additional reactors)
   there are 1 reactors of type 7 running