• 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

 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

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

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

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

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

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,

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

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