FP perc infeas allowed), the level of verbosity (VERBOSE ).
To solve problem (P 1) and the restriction of step 23, we use the NLP solver as a black-box. We use solvers directly providing an AMPL interface, which is anyway usually the case for the most common and efficient NLP solvers.
To solve problem (P 2), if use tabu list is 0, we use an MILP solver as a black-box. The interaction with the MILP solver is done in the same way of NLP solver for (P 1). When use tabu list is 1, we use an executable called “tabucplex” to solve problem (P 2). As antic- ipated in Section 2.2.2, we implemented this modification to a standard Branch-and-Bound method within the Ilog Cplex environment, exploiting the so-called callbacks. This file reads and stores data of an input file produced within the AMPL framework which contains the tabu list, i.e. the list of the “forbidden” solutions. Then the Branch-and-Bound starts: its execution is standard until an integer feasible solution is found. Every time an integer feasible solution is found, the specialized incumbent callback is called. The aim of this function is to check if the solution found is within those solutions in the tabu list, i.e. it was provided as problem (P 2) solution in one of the previous iterations. If this is the case, the solution is rejected, otherwise the solution is accepted. In any case, the execution of the Branch-and- Bound continues until the optimal solution, excluding the forbidden ones, is found or a time limit is reached.
Another tool we extensively used is a new solver/reformulator called Rose (Reformula- tion/Optimization Software Engine, see [85]), of which we exploited the following nice features: 1. Analyzing the model, i.e. getting information about non-linearity and convexity of the constraints and integrality requirements of the variables: necessary at step 1. These parameters are provided by Rose as AMPL suffixes.
2. Analyzing feasibility of the solution: necessary after steps 13, 23 and for step 35 to verify feasibility of the provided solutions. Also in this case parameters are provided by Rose as AMPL suffixes.
3. Generating the Outer Approximation cuts: necessary at step 29. Cuts are written in a file which is then included within the AMPL framework.
Actually some of these features were implemented within the context of this work. Note that information about the convexity of the constraints are hard to compute: in particular, Rose gives information about the “evidently convex”/“evidently concave” constraints using the expression tree, properties of convex/concave functions and basic expressions (see [85] for details). In practice, a non-convex constraint is always identified, a convex constraint can be treated as non-convex constraint, but the information provided is in any case “safe” for our purposes, i.e. we generate OA cuts only from constraints which are “certified” to be convex. An obvious modification of the algorithm proposed is considering the original objective function to improve the provided solution quality as done, for example, in [50] and [21].
2.4
Computational results
In this section preliminary computational results are presented on an Intel Xeon 2.4 GHz with 8 GB RAM running Linux. We stop the algorithm after the first MINLP feasible solution was found (or the time limit is reached). The parameters were set in the following way:
time limit = 2 hours; use tabu list = 1; use no good cuts = 0; use fix int vars = 1; perc time NLP = 0.05;
FP epsilon = 1e-6;
FP perc infeas allowed = 0.001;
The NLP solver used is Ipopt 3.5 trunk [123] and the problems solved are 243 instances taken from MINLPLib [32] (the ones used in [86] minus oil and oil2 because function log10 is not supported by Rose). Tabucplex uses the Callable library of Ilog Cplex 11.0.
We found an MINLP feasible solution for 200 instances (see Table 2.1). The average CPU time is 174.45 seconds. For 28 of these instances the solution found is also the best known
Table 2.1: Instances for which a feasible solution was found within the time limit
alan ex1223a fo7 ar2 1 m7 ar2 1 nuclearvb nvs22 sep1 st test6
batchdes ex1223b fo7 ar25 1 m7 ar25 1 nuclearvc nvs23 space25a st test8
batch ex1223 fo7 ar3 1 m7 ar3 1 nuclearvd nvs24 space25 st testgr1
contvar ex1224 fo7 ar4 1 m7 ar4 1 nuclearve o7 2 spectra2 st testgr3 csched1a ex1225 fo7 ar5 1 m7 ar5 1 nuclearvf o7 ar2 1 spring st testph4
csched1 ex1226 fo7 m7 nvs01 o7 ar25 1 st e13 synheat
csched2a ex1233 fo8 ar2 1 mbtd nvs02 o7 ar3 1 st e14 synthes1
csched2 ex1243 fo8 ar4 1 meanvarx nvs03 o7 ar4 1 st e15 synthes2
deb6 ex1244 fo8 ar5 1 minlphix nvs04 o7 ar5 1 st e27 synthes3
deb7 ex1263a fo8 no7 ar2 1 nvs05 o7 st e29 tln2
deb8 ex1263 fo9 ar3 1 no7 ar25 1 nvs06 o8 ar4 1 st e31 tln4
deb9 ex1264a fo9 ar4 1 no7 ar3 1 nvs07 o9 ar4 1 st e32 tln5
detf1 ex1264 fo9 ar5 1 no7 ar4 1 nvs08 oaer st e35 tln6
du-opt5 ex1265a fo9 no7 ar5 1 nvs09 ortez st e36 tln7
du-opt ex1265 fuel nous1 nvs10 parallel st e38 tloss
eg all s ex1266a gastrans nous2 nvs11 prob02 st miqp1 tls2
eg disc2 s ex1266 gbd nuclear14a nvs12 prob03 st miqp2 tls4
eg disc s ex3 gear2 nuclear14b nvs13 prob10 st miqp3 tls5
elf ex3pb gear3 nuclear14 nvs14 procsel st miqp4 tltr
eniplac ex4 gear4 nuclear24a nvs15 product st miqp5 uselinear
enpro48 fac1 gear nuclear24b nvs16 qap stockcycle util
enpro48pb fac2 gkocis nuclear24 nvs17 qapw st test1 var con10
enpro56 fac3 hmittelman nuclear25a nvs18 ravem st test2 var con5
enpro56pb feedtray2 johnall nuclear25b nvs19 ravempb st test3 water4
ex1221 feedtray m3 nuclear25 nvs20 risk2bpb st test4 waterx
ex1222 fo7 2 m6 nuclearva nvs21 saa 2 st test5 waterz