Tatjana,

You are asking some good questions here, questions that get to the foundations of what an MCP model really is. Fundamentally, MCP is not about equations and inequalities. It is about function-variable pairs, and the relationships dictated by those pairs. I could say a lot here, but it wouldn’t be as carefully or well done as the GAMS docs on this subject:

https://www.gams.com/latest/docs/UG_ModelSolve.html#UG_ModelSolve_ModelClassificationOfModels_MCP

The GAMS equations are merely a vehicle used to define an MCP. This MCP is then solved and its solution is returned, again using the GAMS equation symbols as the vehicle.

As I write this, I am reminded of the move from the geocentric theory of the solar system (where the sun, moon, stars, and planets revolve around the earth in circular orbits) to the heliocentric system of planetary motion (where the planets revolve around the sun in elliptical orbits). To adequately describe what is really going on with planetary motion, it is necessary to embrace the latter system. Similarly, to understand what is really happening with MCP, one must embrace and use the ideas of functions and function-variable pairs.

When seen through this lens, your question is:

How do you know if you should write F(x) perp-to x free or -F(x) perp-to x free ?

Often, it does not matter which you use: the set of points that solve the MCP are the same in either case, and MCP solvers are often not sensitive to the choice. But in some cases, the PATH solver **is** sensitive to the sign used on the equation F. What to do in such a case? I advise to use the sign of F that allows the pair F.x to make sense when bounds are added to the variable x.

An example helps here. Suppose x is the activity level for production, and F(x) is the marginal revenue for a given activity level, and that marginal revenue is decreasing. Usually, we want zero marginal revenue, i.e. F(x) = 0. But what if we have a lower bound on the activity level (say, we signed a contract requiring at least L units to be produced)? If x > L, we want F(x) = 0. If x = L, then a zero marginal revenue is also OK. If marginal revenue is positive at L, we should produce more: it will increase our overall revenue. If marginal revenue is negative at L, we would like to produce less than L, since this would increase overall revenue. But the contract precludes this. To capture this case in MCP, we would write this as -F(x) perp-to x >= L. I would do this by using an =N= equation matched to a free variable. With this, I can easily add the lower bound x >= L (say, if a contract is signed) and or a bound x <= U (say, due to a technical or regulatory limit) and the model is doing the correct thing. There is also some computational evidence and “tribal knowledge” that suggests this way of orienting the function/equation F will be best computationally.

HTH,

-Steve