Solved

Very long execution time with BARON solver

  • 22 September 2020
  • 4 replies
  • 189 views

Hello,

I am solving small MINLP problem using BARON solver to find the ‘optimal’ solution. But for such a small system, 8 hours passed and I have not got the solution yet. My question is: why this solver cannot find the solution after such a long time? Is this because of the way I implemented the model? (If so, I am attaching my code here to let you know how I did it). I would appreciate it if you could help me solve this problem. Thank you!

Regards

icon

Best answer by Marcel Hunting 28 September 2020, 18:08

Hi @HosseinMehdipour. Your model contains 750 constraints and 650 variables. More than 200 of these constraints contain bilinear terms in which two continuous variables are multiplied. From global optimization point of view, a problem that contains more than 200 constraints with bilinear terms is considered to be very hard.

(Note that if one of the variables in the bilinear term would be binary then that would make life much easier because in that case the bilinear term can be linearized.)

I am afraid that it will be impossible to find a global solution for your problem. I would settle for a good local solution by using, e.g., a local solver combined with a multi-start algorithm.

View original

4 replies

Thank you @Marcel Hunting for your response. I have changed the code based on your explanation. But the problem still exists and BARON does not give me a solution. So, I sent an email to AIMMS support to send me the new AIMMS-BARON interface DLL, so that I can have local optimum for these kinds of problems.

Userlevel 3

Hi @HosseinMehdipour. BARON actually finds a solution (probably a local optimum) but it is not passed to AIMMS due to a bug in the AIMMS-BARON interface DLL. We have fixed this bug which we will release in one of the upcoming AIMMS releases. If you send an email to our support then I can send you the new AIMMS-BARON interface DLL.

The definition of the variable Bff(l,ll) is:

((1/x(l))*u(l))|(l=ll)

This implies means that Bff(l,ll) equals 0 if l <> ll. In that case it is better to use Bff(l) by removing 'll’ from the index domain (you then have to update the definition of the variable Bf accordingly).

The variable x(l) is only used inside the definition of this constraint and in no other part of the model. You can just remove the definition of the variable Bff, and calculate x(l) after the solve using the solution values of Bff(l) and u(l). You should then update the range of Bff(l) to [0,10000].

This will change the model into a non-convex MIQCP. However, the model probably remains very hard to solve.

Thank you @Marcel Hunting for your response. I understand a problem with more than 200 constraints with bilinear terms is very hard to solve. Then my question would be:

  1. why BARON solver does not give us at least “local optimum” solution at the reasonable time?
  1. Could you please tell me how I can change my formulation so that it can work with BARON solver?

Thank you

Userlevel 3

Hi @HosseinMehdipour. Your model contains 750 constraints and 650 variables. More than 200 of these constraints contain bilinear terms in which two continuous variables are multiplied. From global optimization point of view, a problem that contains more than 200 constraints with bilinear terms is considered to be very hard.

(Note that if one of the variables in the bilinear term would be binary then that would make life much easier because in that case the bilinear term can be linearized.)

I am afraid that it will be impossible to find a global solution for your problem. I would settle for a good local solution by using, e.g., a local solver combined with a multi-start algorithm.

Reply


Didn't find what you were looking for? Try searching on our documentation pages:

AIMMS Developer & PRO | AIMMS How-To | AIMMS SC Navigator