Unit Commitment Problem

Power System
Author

Wangkun Xu

Published

June 13, 2024

Modified

June 19, 2024

In the previous post Power System Operation: AC and DC Power Flow Model, we discuss how to model the power system in the steady-state for both AC and DC formats. In this post, unit commitment (UC) problem and econimic dispatch (ED) will be formulated. The UC problem is usually solved in day-ahead manner to decide the on/off conditions and the set-points of the generator. It includes 1). the simplest UC problem without binary variables, 2). the UC problem with binary variables. Both problem considers the network constraints and reserve requirements. The ED problem focuses more on ‘real-time’ balance of the load and generation and meet the physical constraints and safety requirements.

Note that the UC and ED can be formulated in different ways, including stochastic, robust, and chance-constrained formats. In this post, we will focus on the deterministic formulation.

The main reference is Conejo’s lecture notes.

Unit Commitment Without Binary Variables

The UC without binary varibales can be formulated as linear programming (LP) problem as follows:

\[ \begin{aligned} \min_{P_g, \theta, P_{ls}, P_{sc}, P_{wc}} & \sum_{t=1}^T c_{gv}^TP_g(t) + c_{ls}^TP_{ls}(t) + c_{sc}^TP_{sc}(t) + c_{wc}^TP_{wc}(t) \\ \text{s.t.} & P_g^{\text{min}} \leq P_g(t) \leq P_g^{\text{max}} \\ & -R_{\text{down}} \leq P_g(t) - P_g(t-1) \leq R_{\text{up}} \\ & -P_f^{\text{max}} \leq B_f\theta(t) + P_{f,\text{shift}} \leq P_f^{\text{max}} \\ & C_gP_g(t) + C_s(P_s(t) - P_{sc}(t)) + C_w(P_w(t) - P_{wc}(t)) - C_l(P_l(t) - P_{ls}(t)) \\ & \qquad = B_{\text{bus}}\theta(t) + P_{\text{bus,shift}} \\ & \theta_{\text{ref}}(t) = \theta_0, \quad \forall t=1,2,\ldots,T \\ & \sum P_g^{\text{max}} \geq \sum_{i=1}^TP_g(t) + r(t) \\ & 0 \leq P_{ls}(t) \leq P_l(t), \quad \forall t=1,2,\ldots,T \\ & 0 \leq P_{sc}(t) \leq P_s(t), \quad \forall t=1,2,\ldots,T \\ & 0 \leq P_{wc}(t) \leq P_w(t), \quad \forall t=1,2,\ldots,T \\ \end{aligned} \]

The decision variables include

  • Generator output \(P_g(t)\)
  • Load shedding \(P_{ls}(t)\)
  • Solar energy curtailment \(P_{sc}(t)\)
  • Wind energy curtailment \(P_{wc}(t)\)
  • Bus voltage angle \(\theta(t)\)

All the decision variables are vectors and from \(t=1\) to \(T\). The objective function is to minimize the total cost, which includes the generator cost, load shedding cost, solar curtailment cost, and wind curtailment cost. The constraints include the generator output limits, ramping limits, line flow limits, power balance, bus voltage angle reference, and reserve requirements. Meanwhile, the parameters include

  • Load \(P_l(t)\)
  • Solar generation \(P_s(t)\)
  • Wind generation \(P_w(t)\)
  • Reserve requirement \(r(t)\) which are assumed to be known.

The initial condition, e.g., \(P_g(0)\) should also be given.

The definition of the bus and branch admittance matrix \(B_{\text{bus}}\) and \(B_f\) are the same as the previous post Power System Operation: AC and DC Power Flow Model.

Unit Commitment With Binary Variables

The UC with binary variables can be formulated as mixed-integer linear programming (MILP) problem as follows. Apart from the decision variables in the previous section, the binary variables \(u(t)\) are introduced to decide the on/off status of the generator.

The optimization problem can be formulated as \[ \begin{aligned} \min_{u_g, y_g, z_g, P_g, \theta, P_{ls}, P_{sc}, P_{wc}} & \quad \sum_{t=1}^T c_{gf}^Tu_g(t) + c_{gv}^TP_g(t) + c_{gsu}^Ty_g(t) + c_{gsd}^Tz_g(t) + c_{ls}^TP_{ls}(t) + c_{sc}^TP_{sc}(t) + c_{wc}^TP_{wc}(t) \\ \text{s.t.} & \quad y_g(t) - z_g(t) = u_g(t) - u_g(t-1) \\ & \quad y_g(t) + z_g(t) \leq 1 \\ & \quad u_g(t)\circ P_g^{\text{min}} \leq P_g(t) \leq u_g(t)\circ P_g^{\text{max}} \\ & \quad P_g(t) - P_g(t-1) \leq R_{gu}u_g(t-1) + R_{gsu} y_g(t)\\ & \quad P_g(t-1) - P_g(t) \leq R_{du}u_g(t) + R_{gsd} z_g(t)\\ & \quad -P_f^{\text{max}} \leq B_f\theta(t) + P_{f,\text{shift}} \leq P_f^{\text{max}} \\ & \quad C_gP_g(t) + C_s(P_s(t) - P_{sc}(t)) + C_w(P_w(t) - P_{wc}(t)) - C_l(P_l(t) - P_{ls}(t)) \\ & \quad \qquad = B_{\text{bus}}\theta(t) + P_{\text{bus,shift}} \\ & \quad \theta_{\text{ref}}(t) = \theta_0, \quad \forall t=1,2,\ldots,T \\ & \quad \sum u_g(t) \circ P_g^{\text{max}} \geq \sum_{i=1}^TP_g(t) + r(t) \\ & \quad 0 \leq P_{ls}(t) \leq P_l(t), \quad \forall t=1,2,\ldots,T \\ & \quad 0 \leq P_{sc}(t) \leq P_s(t), \quad \forall t=1,2,\ldots,T \\ & \quad 0 \leq P_{wc}(t) \leq P_w(t), \quad \forall t=1,2,\ldots,T \\ & \quad u_g(t) \in \{0,1\}, \quad y_g(t) \in \{0,1\}, \quad z_g(t) \in \{0,1\} \end{aligned} \] where \(\circ\) denotes the element-wise product.

Apart from the decision variables in the previous section, the following binary variables are introduced:

  • Generator on/off status \(u(t)\) with cost \(c_{gf}\)
  • Generator start-up status \(y(t)\) with cost \(c_{gsu}\)
  • Generator shut-down status \(z(t)\) with cost \(c_{gsd}\)

The objective function is to minimize the total cost, which includes the generator fixed (on) cost, generator variable cost, generator start-up cost, generator shut-down cost, load shedding cost, solar curtailment cost, and wind curtailment cost.

The first two constraints denote the relationship between the on-off status and the start-up and shut-down status, which can be formulated as the following table:

The relationship between the on-off status and the start-up and shut-down status
\(u_g(t-1)\) \(u_g(t)\) \(y_g(t)\) \(z_g(t)\) Explain
0 0 0 0 Keep off
0 1 1 0 Start-up
1 0 0 1 Shut-down
1 1 0 0 Keep on

The ramp-up constraint is also modified where \(R_{gu}\) is the ramp-up limit as the previous section and \(R_{gsu}\) is the start-up ramp-up limit. The ramp-up status only has three states

The relationship between the on-off status and the start-up status
\(u_g(t-1)\) \(y_g(t)\) Explain
0 0 Keep off
0 1 Start-up
1 0 Shut-down or Keep on

The ramp-down constraint is also modified where \(R_{du}\) is the ramp-down limit as the previous section and \(R_{gsd}\) is the shut-down ramp-down limit.

Similarly, the ramp-down constraint is modified where \(R_{du}\) is the ramp-down limit as the previous section and \(R_{gsd}\) is the shut-down ramp-down limit. The ramp-down status only has three states as well

The relationship between the on-off status and the shut-down status
\(u_g(t)\) \(z_g(t)\) Explain
0 0 Keep off
0 1 Shut down
1 0 Keep on or Start up
Note

The initial conditions \(u_g(0), y_g(0), z_g(0), P_g(0)\) need to be given.