Page 2 of 3

Re: MIP Start with CPLEX from a file

Posted: Wed May 16, 2018 4:16 pm
by cladelpino
Hmm, we are now in the realm of official help, your question is valid. My guess is that this option was fully implemented in the newer GAMS versions. I will expect an answer with you :)

Re: MIP Start with CPLEX from a file

Posted: Thu May 17, 2018 1:56 pm
by Fred
Peter,

The reason you have no other options than mipstart=1 available is probably that you use an outdated GAMS system. Values >= 2 for CPLEX option mipstart were introduced in version 24.7.4 (release notes: https://www.gams.com/latest/docs/RN_247 ... 474_CPLEXD). You can download the latest version from https://www.gams.com/download/.

As already mentioned by Claudio, you might want to test whether your provided initial values actually allow for a feasible solution. An easy way to test that is to fix the variables instead of just setting the levels:

Code: Select all

x.fx(t, household) =  x_Initial(t, household);
y.fx(t, household) =  y_Initial(t, household);
Even if it turns out that x_Initial and y_Initial allow a feasible solution in general, there is still no guarantee that CPLEX accepts them as a MIP starting point. As you already mentioned, you provide only the levels for *some* of the variables. Hence, this is at best a partial solution. CPLEX spends limited resources on constructing a full solution for the entire problem but if it fails to find one quickly, Cplex might reject your MIP start.

I hope this helps!

Best,
Fred

Re: MIP Start with CPLEX from a file

Posted: Fri May 18, 2018 10:08 am
by PeterBe
Thanks Fred for your help, especially regarding how to test if a solution if feasible.

Now - even with the old GAMS version - I can start the problem with a feasible solution.

Is it also possible to start the model with several feasible solutions?

Re: MIP Start with CPLEX from a file

Posted: Tue May 22, 2018 9:59 am
by Fred
Hi Peter,

Currently, there is no way to provide multiple MIP starts to CPLEX via GAMS. If you think, being able to provide multiple MIP starts would be a significant benefit for you model, could you please provide the following to support@gams.com?

- The different solution points you want to use as MIP starting values stored in gdx files (e.g. created with option savepoint: https://www.gams.com/latest/docs/UG_Gam ... OSavePoint)
- The model (and all the files needed to run it) for which you want to use the mipstarts (e.g. saved in a dump file (run with command line parameter dumpopt=11 https://www.gams.com/latest/docs/UG_Gam ... SAODumpOpt))

Best,
Fred

Re: MIP Start with CPLEX from a file

Posted: Thu May 24, 2018 11:33 am
by PeterBe
Thanks Fred for your answer,

no, I do not think that multiple solutions would change the performance significantly. I justed wanted to know if that is possible or not. Anyways, thanks for your help :)

Re: MIP Start with CPLEX from a file

Posted: Mon Jun 04, 2018 10:29 am
by PeterBe
Hi,

it's me again having a question regarding a MIP start (sorry to bother you with my questions but I do not have that much experience with GAMS and I have no one to ask except this forum; I am really thankful for your help and appreciate it).

I have a solution which I think is feasible. To check the solution I entered - as suggested by Fred - the following lines:

Code: Select all

x.fx(t, household) =  x_Initial(t, household);
y.fx(t, household) =  y_Initial(t, household);
x and y are binary variables. However I get an error message: "Infeasible column 'temperature_level_bufferTank(4.household_4)'."

The problem is that the violation of this contrain is not understandable for me if you have a look at the variables x and y. In the results file you see that there are no values for all equations (except the equation for the objective function) and there are no entries for the variable except the variable that causes the infeasibility (according to CPLEX) "temperature_level_bufferTank". But for this variable only the inital value is correct (at 30) and then all other values are 0 which cannot be the case according to x and y. I use an updating equation for temperature_level_bufferTank which looks like this:

Code: Select all

eq_temperature_level_bufferTank(t, household) $(ord(t)>1)..
temperature_level_bufferTank(t, household)
=e=
temperature_level_bufferTank (t-1, household) + ((x(t, household) * electricalPower(household) * timeResolution *  cop_BufferTank(t, household) - demand_heating(t, household)* timeResolution  - standingLoss_BufferTank(household) * timeResolution) /((VolumeOfBufferTank(household)/1000) * DensityOfWater * SpecificHeatCapacityOfWater));
Unfortunately the values are not updated when fixing x(t, household). Could someone imaging a reason for this problem? The model itself is okay. When not fixing the values of the variable evertything is alright and both the equations and the variables are created and updated. Also the input parameters x_Initial(t, household), and y_Initial(t, household); are read correctly according to the result file.

Re: MIP Start with CPLEX from a file

Posted: Tue Jun 05, 2018 8:17 am
by Fred
Peter,

It seems there is no way to assign a value to variable temperature_level_bufferTank(4.household_4) such that the solution is feasible. That can have many reasons. For example your initial solution may force the level of temperature_level_bufferTank(4.household_4) to be outside the corresponding variable bounds or the values of different variables implied by your start "solution" are inconsistent because some constraints (like temperature_level_bufferTank) cannot be satisfied.

As mentioned before, there is little chance that users can tell you what is wrong with your model if you don't share your model. If you do not want to share your code, you can also generate a scalar model (https://support.gams.com/conversion_of_ ... ms_support).

If the infeasible "solution" you get back from CPLEX does not make sense to you (e.g. because infeasibilty was determined at an early stage), you may want to rerun with Cplex option feasopt (https://www.gams.com/latest/docs/S_CPLE ... LEXfeasopt). That way you should get a minimum-cost relaxation to make an infeasible model feasible and the infeasibilities should be reported in the lst file.

I hope this helps!

Best,
Fred

Re: MIP Start with CPLEX from a file

Posted: Wed Jun 06, 2018 5:20 pm
by PeterBe
Thanks Fred for your answer and your help,

now I got a feasible solution which I tested by

Code: Select all

x.fx(t, household) =  x_Initial(t, household);
y.fx(t, household) =  y_Initial(t, household);
So this solution is feasible and GAMS also accepts this solution. However when I want to do a MIP start with this solution I get the (previously mentioned) message from CPLEX:
Processing 1 MIP starts.
MIP start 'm1' defined no solution.
Warning: No solution found from 1 MIP starts.
I set the values of the variables with:

Code: Select all

x.L(t, household) =  x_Initial(t, household);
y.L(t, household) =  y_Initial(t, household);
I also tried each of the 6 mipstart levels of the CPLEX option file, but all yield the same result. Can anyone of you think about a reason why this is happening (the solution is doubtlessly feasible)?

Re: MIP Start with CPLEX from a file

Posted: Wed Jun 06, 2018 8:42 pm
by cladelpino
So, running with fixed variables finishes in "optimal solution" ? Are you initializing all variables in your problem ?

Remember that, because of your GAMS version you don't have full access to mipstart options.

I'm just rehashing this post by Fred, but you don't specify if it is a full solution, and if you have updated GAMS in your last one.
Fred wrote: 5 years ago The reason you have no other options than mipstart=1 available is probably that you use an outdated GAMS system. Values >= 2 for CPLEX option mipstart were introduced in version 24.7.4 (release notes: https://www.gams.com/latest/docs/RN_247 ... 474_CPLEXD). You can download the latest version from https://www.gams.com/download/.

Even if it turns out that x_Initial and y_Initial allow a feasible solution in general, there is still no guarantee that CPLEX accepts them as a MIP starting point. As you already mentioned, you provide only the levels for *some* of the variables. Hence, this is at best a partial solution. CPLEX spends limited resources on constructing a full solution for the entire problem but if it fails to find one quickly, Cplex might reject your MIP start.
Best
Claudio

Re: MIP Start with CPLEX from a file

Posted: Thu Jun 07, 2018 11:40 am
by PeterBe
Thanks cladelpino for your answer,
So, running with fixed variables finishes in "optimal solution" ? Are you initializing all variables in your problem ?
Well GAMS says that it is an optimal solution (but of course this is not an optimal solution; it is just a feasible solution that I generated using a heuristic approach). And I have not specified the values for all variables; only for my binary variables x(t, household) and y(t, household). Here is what GAMS reports when running the model with the fixed variables:

"Proven optimal solution.

MIP Solution: 609212.489503 (0 iterations, 0 nodes)
Final Solve: 609212.489503 (0 iterations)

Best possible: 609212.489503
Absolute gap: 0.000000
Relative gap: 0.000000"
Remember that, because of your GAMS version you don't have full access to mipstart options.

I'm just rehashing this post by Fred, but you don't specify if it is a full solution, and if you have updated GAMS in your last one.
It is not a full solution (see explanation above) and meanwhile I am using the latest GAMS and CPLEX version (and the new editor GAMS studio). So I tested every mipstart option of CPLEX. Some of them are supposed to cope with incomplete solution. However I always get the same error message telling me that m1 does not define a solution :?