I'm formulating a scheduling problem with the following decision variables:
$$X_t \space \text{is power sold to market in time period t} \\ Y_t \space \text{is power used for production in time period t} \\ z_t \space \text{is binary variable for full load production or idle mode}$$
I have to model three constraints:
- Total power available in time period t.
- Plant can remain in idle state(10MW) for exactly 4 hours at a time and immediately after that it should be in full load production(100MW) for at least 2 hours.
- Idle mode uses power but does not produce material, thus incurring cost.
I have available the cost of power, market price of power (for selling power to the market), material price of the market and a conversion efficiency of power to material.
My formulation is currently incomplete because I have to use a linear objective but currently I can manage only a bilinear one: $$ max \sum_{t}^{T} R_t^m + R_t^p \cdot z_t - C_t \\ s.t. R_t^m = X_t \cdot \Delta{t} \cdot \pi_t^m \\ R_t^p = \frac{Y_t \cdot \Delta{t} \cdot \pi_t^p}{\eta} \\ X_t + Y_t \leq P_t \\ C_t = (X_t + Y_t) \cdot \Delta{t} \cdot \pi_t^c \\ Y_t = 100 \cdot z_t + 10 \cdot (1-z_t) \\ X_t, Y_t \geq 0 ; z_t \in (0,1) $$ where : $$ R_t^m \text{ is the revenue earned by selling power on market with power price } \pi_t^m \\ R_t^p \text{ is the revenue earned by selling produced material with market price } \pi_t^p \\ P_t \text{ is the total power available for that period and is a parameter}\\ \eta \text{ is the power to material conversion efficiency of the plant} \\ C_t \text{ is the cost of power in time period t with unit cost } \pi_t^c \\ \Delta{t} \text{ is unit time period} $$
My questions are:
- How can I formulate a constraint for the idling requirements in constraint 2, preferable without adding another binary variable?
- Currently I multiply revenue earned by material production by the state of the plant to make sure revenue is calculated only when full load production takes place. However, that makes the term bilinear. How can I reformulate to have a linear objective?
I did think of using indicator constraints but I'd rather first ask whether there is a simpler way to reformulate. Thank you.
Thank you for suggesting the big-M edit for the revenue issue. That works for me.
– fikacoder Oct 12 '23 at 11:31