# How to treat a system of bilinear constraints

A model contains constraints of the following form

$$R(k) \leq X(k) G(k)$$

where $$X(k)$$ binary and $$G(k)$$, $$R(k)$$ non-negative variables.

The index $$k$$ runs from $$1$$ to $$50$$.

I linearise the equations as they are products of binary and continuous variables.

The question is, is there anything I can exploit to tighten the region these constraints define?

You want to enforce $$X(k) = 0 \implies R(k) = 0$$ and $$X(k) = 1 \implies R(k) \le G(k)$$. You can use indicator constraints for that.
Alternatively, a straightforward big-M formulation yields \begin{align} R(k) &\le M_1(k) X(k) \tag1 \\ R(k) - G(k) &\le M_2(k) (1 - X(k)) \tag2 \\ \end{align}
A natural choice for $$M_1(k)$$ is a small constant upper bound $$\bar{G}(k)$$ on $$G(k)$$, and a natural choice for $$M_2(k)$$ is $$\bar{G}(k) - 0$$. But notice that you can do better because $$M_2(k)$$ needs to be an upper bound on $$R(k)-G(k)$$ only when $$X(k)=0$$; in that case, $$(1)$$ forces $$R(k)=0$$, so you can take $$M_2(k)=0$$:
\begin{align} R(k) &\le \bar{G}(k) X(k) \tag1 \\ R(k) &\le G(k) \tag2 \\ \end{align}