• Non ci sono risultati.

Cplex API Tutorial

N/A
N/A
Protected

Academic year: 2021

Condividi "Cplex API Tutorial"

Copied!
12
0
0

Testo completo

(1)

Cplex API Tutorial

Domenico Salvagnin

(2)

Dalla teoria alla pratica...

Solver LP/MIP sono molto usati in pratica: perchè?

Successo del paradigma LP/MIP dovuto alla disponibilità di solver molto efficaci da vari punti di vista:

efficienza

stabilità numerica

facilità d’uso/embedding

(3)

Evoluzione recente

Negli ultimi 15 anni (circa):

hardware speedup: 1000x

miglioramenti simplesso: 1000x

miglioramenti branch-and-cut: 1000x

1.000.000.000 x

(meglio della legge di Moore!)

(4)

(Mixed) Integer Programming

min c

T

x s.t. Ax ∼ b

l ≤ x ≤ u x

j

∈ Z, j ∈ J

∼∈ {≤, ≥, =}

alcuni bound +/-!

(5)

Cutting planes

Aggiungo vincoli lineari validi per tutti i punti interi ma non per tutti quelli del rilassamento

Tali vincoli si dicono tagli Il processo di generazione dei tagli si dice separazione

(6)

Branch-and-Bound (1)

Approccio divide & conquer

Se il problema è troppo difficile (soluzione frazionaria) lo

divido in 2 sottoproblemi (branching)

Li risolvo (applicando

ricorsivamente il metodo)

Prendo la soluzione migliore trovata

(7)

Branch-and-bound (2)

Struttura ad albero

Branching si esegue su una variabile frazionaria

(ragionamento per casi) Molto migliore di una

enumerazione esplicita. Non devo effettuare branching se:

sottoproblema infeasible soluzione intera

rilassamento peggiore della migliore soluzione (bounding)

(8)

Branch-and-bound (3)

Branch-and-bound ha sempre due bound a disposizione:

bound primale: valore della migliore soluzione feasible corrente (incumbent)

bound duale: valore del miglior rilassamento dei nodi non ancora processati

La differenza tra i due si dice optimality gap

Tali bound convergono durante l’esecuzione dell’algoritmo (alla fine gap = 0)

L’efficienza dell’algoritmo dipende dalla velocità con cui convergono!

(9)

IBM ILOG Cplex

uno dei primi soft ware MIP stabili ed efficienti miglior solver sul mercato da quasi 20 anni

(ultimamente a parimerito...)

Numerose modalità di interazione:

prompt interattivo

librerie C (Callable Library)

librerie C++ (Concert Technology)

librerie wrapper Python/Java/.Net plugin Matlab/Excel

(10)

Cplex Callable Library

API C per l’uso degli algoritmi LP/QP/MIP/MIQP

basata su due oggetti opachi: environment & problem environment: gestore licenza/parametri/callback

problem: contiene dati del problema (variabili,vincoli,etc...)

CPX(C)ENVptr CPXopenCPLEX/CPXcloseCPLEX

CPX(C)LPptr CPXcreateprob/CPXfreeprob

(11)

Cplex Callable Library II

i due oggetti opachi possono essere modificati/letti con delle funzioni apposite (API vera e propria)

99% delle funzioni della Callable Library seguono la stessa convenzione d’uso:

int CPXnomefunzione(environment[,problem],...);

codice di errore (0=ok) CPXgeterrorstring ritorna

descrizione problema

oggetti opachi parametri

(12)

Cplex Callable Library III

come molte librerie C, i tipi di dato supportato sono:

scalari (passati per valore o puntatore): double/int vettori (passati come array C): double*/int*

stringhe: char, char*

per le matrici si usa una struttura dati sparsa:

int* beg

int* idx

double* val

Riferimenti

Documenti correlati

Rimanendo a Mapià qualche altro giorno, potei visitare la “farmacia”: Medicina della Foresta, la casa dove si producono tutti i medicinali e anche i cosmetici, che sono venduti

Further, after nucleic acid extraction (Real Kit, Durviz), RT-PCR assays were performed using species-specific and genus-specific primer sets to investigate the presence of

We used the eCPS to assess role preferences, and their determinants, in Italian and German people with multiple sclerosis (MS).. Methods: New cartoons were produced, based on MS

Vista la necessità di avviare le procedure di gara per l’individuazione del nuovo contraente affidatario del servizio di manutenzione programmata e straordinaria degli

Ma da questo dovrebbe seguire che, conoscendo ora a, b, c con i loro rispettivi tratti interni (gli oggetti, che secondo la prop. 4.03, sono «espressioni vecchie», non possono

 ciascuna vista architetturale ha lo scopo di descrivere un insieme di elementi del sistema e di relazioni tra di essi che sono rilevanti rispetto a un certo interesse (o insieme di

Le colonie di api, insetti sociali, dipendono dalle prestazioni collettive di molte operaie; anche se le concentrazioni di pesticidi nei campi possono avere effetti subdoli,

Al termine delle proiezioni sarà possibile cenare equo e solidale e tipico Si ringrazia l’ ARCHIVIO IMMIGRAZIONE per la preziosa collaborazione e per la foto Per info : 328-2713073