2012-07-25 16 views
10

Sto utilizzando l'ottimizzatore cplex IBM per risolvere un problema di ottimizzazione e non voglio tutte le stampe del terminale eseguite dall'ottimizzatore. C'è un membro che lo disabilita nella classe IloCplex o IloModel? Queste sono le impronte su tagli e iterazioni. Le stampe sul terminale sono costose e il mio problema sarà alla fine dell'ordine di milioni di variabili e non voglio perdere tempo con queste uscite superflue. Grazie.Come rendere cplex non in uscita al terminale

+2

Mentre risolvere un modello MIP con milioni di variabili con cplex non è banale, non è affatto insolito e la registrazione predefinita non influirà in modo significativo sul tempo di soluzione. In media, più grande è l'istanza del problema, più il calcolo viene eseguito per riga del messaggio di registro. (Ci vuole lo stesso tempo per stampare una linea di circa 10 tagli in modo da stampare una riga di circa 1000 tagli, ma ci vuole molto più tempo per calcolare effettivamente i 1000 tagli). In effetti, per problemi più grandi, di solito imposterò la registrazione. –

+0

Grazie per il consiglio – DiegoNolan

risposta

14

Utilizzando CPLEX/concerto, è possibile disattivare completamente la registrazione di CPLEX alla console con

cpx.setOut(env.getNullStream()) 

Dove CPX è un oggetto IloCplex. È inoltre possibile utilizzare la funzione setOut per reindirizzare i registri su un file.

Esistono diversi parametri cplex per controllare ciò che viene registrato, ad esempio MIPInterval imposterà il numero di nodi MIP ricercati tra le righe. Ad esempio, se si imposta MIPDisplay su 0 si disattiva la visualizzazione dei tagli tranne quando vengono trovate nuove soluzioni, il cui MIPDisplay di 5 mostrerà informazioni dettagliate su ogni sottoproblema lp.

parametri di registrazione relativi includono MIPInterval MIPDisplay SimDisplay BarDisplay NetDisplay

di impostare i parametri con la funzione SetParam.

cpx.setParam(IloCplex::MIPInterval, 1000) 
+1

Grazie, molto utile – DiegoNolan