# Production scheduling

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:

1. Total power available in time period t.
2. 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.
3. 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:

1. How can I formulate a constraint for the idling requirements in constraint 2, preferable without adding another binary variable?
2. 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.

There are some sources of confusion in your model. $$P_t$$ is never defined; I'm going to assume it is a constant. It's not clear what "$$\Delta t$$ is unit time period" means; I'm going to assume it represents an hour and that $$\Delta t = 1$$ (and can thus be ignored).
It's also unclear whether you mean that the plant can idle for up to four hours at a time or exactly four hours at a time. Assuming the former, you can enforce it with a set of constraints $$z_t + z_{t+1} + \dots + z_{t+4} \ge 1$$ for all relevant $$t$$, which says that the plant cannot be idling ($$z_t=0$$) in any block of five consecutive hours.
To ensure that revenue from production is zero when the plant is idling, you can remove $$z_t$$ from the objective and instead change the second constraint from $$R^p_t = \dots$$ to $$R^p_t \le \dots$$ and add a constraint $$R^p_t \le Mz_t$$ where $$M$$ is sum a priori upper bound on production revenue in any hour. If the plant is idle ($$z_t = 0$$), this will force $$R^p_t = 0.$$ If the plant is at full load ($$z_t = 1$$), the big-M constraint will be nonbinding and, because you are maximizing revenue, the second constraint will be maxed out (effectively an equality).