I have been dealing with a problem for sometime and although tried different things and asked some questions before, I think the problem might be somewhere that we didn't look before.

Variables $0\le x< 1$, $y,z\ge 0$ and we have a constraint $$y=(z+c)\frac{x^2}{1-x},$$ where constant $c>0$.

We partitioned $x$ into $n$ intervals of equal length and defined a new variable $\phi_i=1$ for $i=1,\ldots,n$ iff $x\in(r_i-1,r_i]$ (we set $x=r_i$) and zero otherwise.

So we reformulated the constraint above and also added these constraints $$\sum_{i=1}^nr_{i-1}\phi_i\le x\le \sum_{i=1}^nr_{i}\phi_i, \qquad \sum_{i=1}^n\phi_i=1$$

But the problem is that $x$ itself is a function of an allocation vector $\mathbf{a}$ and depending on data, sometimes $f(\mathbf{a})>1$.

So we want to have $x=\min\{f(\mathbf{a}),1-\epsilon\}$ but I think the above two constraints don't satisfy this condition and the model becomes infeasible.

How should I change the partitioning constraints so for any vector $\mathbf{a}$ that makes $f(\mathbf{a})>1$, it forces $x$ to remain equal to $1-\epsilon$? Is it even possible?


There was a typo in the question.

The additional constraints that we added are $$\sum_{i=1}^nr_{i-1}\phi_i\le f(\mathbf{a})\le \sum_{i=1}^nr_{i}\phi_i, \qquad \sum_{i=1}^n\phi_i=1$$


1 Answer 1


Start with the constraints $$x \le f(\mathbf{a})$$ and $$x \le 1-\epsilon.$$ If the nature of the problem is that larger values of $x$ are always preferable in objective terms to smaller values of $x$, that's all you need. If that condition is not met (or you are not sure that it is), you will also need a binary variable $y$ together with the constraints $$ x \ge f(\mathbf{a}) - My$$ and $$x \ge 1-\epsilon -M(1-y)$$ for some suitably large $M.$ The latter two constraints ensure that $x$ actually equals either $1-\epsilon$ or $f(\mathbf{a})$ (whichever is smaller).

  • $\begingroup$ Thank you. I made a mistake in the question. The additional constraints that we included in the model make it infeasible because sometimes $f(\mathbf{a})>1$ and the partitioning approach does not work (we cannot find a proper interval) $\endgroup$
    – user9659
    May 6, 2022 at 6:38
  • 1
    $\begingroup$ My answer will make $x=\min \lbrace f(\mathbf{a}), 1-\epsilon \rbrace.$ Is that not what you want? The edited question still indicates that it is. $\endgroup$
    – prubin
    May 6, 2022 at 15:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.