Manual set lower bound

627 views
Skip to first unread message

Luuk

unread,
Aug 26, 2011, 4:58:56 AM8/26/11
to AIMMS - The Modeling System
Hi,

I'm trying to solve a MIP using Cplex in Aimms. However, although the
best intermediate solution already seems quite ok after a few minutes,
the LP bound is still very far off (upto 30-50%), after an hour or so.
I am thinking this is because not many branches are cut off in my
model when the solver is using branch and bound. I was therefore
wondering whether it would be possible to manually insert a lowerbound
in Aimms beforehand to speed up the solver initially?

Marcel Hunting

unread,
Aug 26, 2011, 7:29:32 AM8/26/11
to AIMMS - The Modeling System
Hi,

I assume you are talking about a minimization problem. If you think
that intermediate solution is ok but the MIP gap is still large then
this indicates that the LP relaxation is weak.

I am not sure whether it would be a good idea to specify a lower
bound. The value of the lower bound should be smaller than the
objective value of the intermediate solution found before (otherwise
that intermediate solution would be cut off) and the branch-and-bound
tree would not become smaller as all LP values of the nodes would
still be smaller than the objective value of the intermediate solution
(and therefore cannot be fathomed). Even worse, CPLEX might take the
wrong branching decisions (because all nodes have the same LP value)
resulting in a much longer time before CPLEX finds a good intermediate
solution.

If you still want to try it, you cannot directly specify a lower bound
but you can add a constraint with definition

Obj >= lower_bound

where Obj is the objective variable.

Better would be to install an incumbent callback procedure in which
you can check whether the intermediate solution found is ok for you,
and then let the callback procedure interrupt the solve.

Marcel Hunting
AIMMS Software Developer

Gustavo Simão

unread,
Sep 15, 2011, 8:43:37 PM9/15/11
to AIMMS - The Modeling System
Marcel,

I have a similar problem. How can I install this callback procedure??

Thanks,

Gustavo.

On Aug 26, 8:29 am, Marcel Hunting <Marcel.Hunt...@aimms.com> wrote:
> Hi,
>
> I assume you are talking about a minimization problem. If you think
> that intermediate solution is ok but the MIP gap is still large then
> this indicates that theLPrelaxation is weak.
>
> I am not sure whether it would be a good idea to specify a lowerbound. The value of the lowerboundshould be smaller than the
> objective value of the intermediate solution found before (otherwise
> that intermediate solution would be cut off) and the branch-and-bound
> tree would not become smaller as allLPvalues of the nodes would
> still be smaller than the objective value of the intermediate solution
> (and therefore cannot be fathomed). Even worse, CPLEX might take the
> wrong branching decisions (because all nodes have the sameLPvalue)
> resulting in a much longer time before CPLEX finds a good intermediate
> solution.
>
> If you still want to try it, you cannot directly specify a lowerbound
> but you can add a constraint with definition
>
>         Obj >= lower_bound
>
> where Obj is the objective variable.
>
> Better would be to install an incumbent callback procedure in which
> you can check whether the intermediate solution found is ok for you,
> and then let the callback procedure interrupt the solve.
>
> Marcel Hunting
> AIMMS Software Developer
>
> On Aug 26, 10:58 am, Luuk <luuk.de.b...@gmail.com> wrote:
>
>
>
>
>
>
>
> > Hi,
>
> > I'm trying to solve a MIP using Cplex in Aimms. However, although the
> > best intermediate solution already seems quite ok after a few minutes,
> > theLPboundis still very far off (upto 30-50%), after an hour or so.
> > I am thinking this is because not many branches are cut off in my
> > model when the solver is using branch andbound. I was therefore

Deanne Zhang

unread,
Sep 16, 2011, 11:22:19 PM9/16/11
to ai...@googlegroups.com
Hi Gustavo,

The callback procedures can be specified in the related suffix of the
MP. For example, FlowShopModel is a MIP, then executing

...
FlowShopModel.CallbackNewIncumbent := 'MyNewIncumbentCallback';
Solve FlowShopModel;
...

will make procedure MyNewIncumbentCallback be called whenever a new
best solution of FlowShopModel is found during the solve.

This piece code is from the "Flow Shop" example. Example "Cutting
Stock" and "Nested Solve" show the usage of other callback functions
as well. More details can be found in section "Suffices and callbacks"
in AIMMS Language Reference.

Best,
Deanne Zhang

2011/9/15 Gustavo Simão <gustav...@uol.com.br>:

> --
> You received this message because you are subscribed to the Google Groups "AIMMS - The Modeling System" group.
> To post to this group, send email to ai...@googlegroups.com.
> To unsubscribe from this group, send email to aimms+un...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/aimms?hl=en.
>
>

Reply all
Reply to author
Forward
0 new messages