MIP minimisation too restrictive

Problems with modeling
Post Reply
Faustino
User
User
Posts: 3
Joined: 2 months ago

MIP minimisation too restrictive

Post by Faustino » 2 months ago

Hello,
I'm trying to generate a sports league schedule with GAMS. I want to minimise the distance travelled on certain match days (for example in winter) while also limiting the carry-over effect given from one team to another.

My problem is that my minimisation only returns a result if the solution is 0, otherwise it says the problem is integer infeasible. I don't understand why my model requires the solution of 0 for "dis". The way it is written, I thought it would model the pairings i,j with the lowest distance for k<3 and pairings with larger distance for k>=3 and then return a solution that is greater than 0.
If I modify the data in the table with to more 0s, so that all pairings with k<3 can be made with a distance of 0, the problem is solved and returns a usable schedule.
What can I change so it allows a solution greater than 0?
Attachments
League-Schedule.gms
(2.35 KiB) Downloaded 9 times

Faustino
User
User
Posts: 3
Joined: 2 months ago

Re: MIP minimisation too restrictive

Post by Faustino » 2 months ago

The variable in my Model that I would like to minimise is "dis" calculated as follows:

Code: Select all

Distance(i,j)$(ord(i) lt ord(j))..     dis =e= sum(k$(ord(k)<3), y(k, i, j)*d( i, j))
d(i,j) is a table that I put under Parameters and y(k,i,j) is a binary variable that is 1 if a game takes place and 0 if there is no game. There is no other interaction in the Model between y(k,i,j) and d(i,j) and as far as I can tell, the contents of d(i,j) influence wether the model is integer infeasible or not. If I construct the Table in a way that the sum of y(k,i,j)*(d,j) can be zero for the allowed k, I get the solution of zero, otherwise it is integer infeasible.

If I use a different minimisation that does not include a table (and uses a different solver, MINLP) the Model works. For reference, the other optimisation would be:

Code: Select all

Carryover..     coe =e= sum((i, j), ((sum((l, k), y(k, l, i)*y(k+1, l, j)))**2))
I have attached a more streamlined version of the model, with only the most basic restrictions.
Attachments
League4.gms
(1.49 KiB) Downloaded 7 times

Post Reply