• No results found

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