Modifica: proviamo di nuovo questa spiegazione, questa volta quando sono più sveglio.
Ci sono tre grandi problemi con la formulazione (in ordine di gravità):
- Non c'è ovvia riformulazione del problema che è ovviamente regolare, convesso o lineare.
- Non è liscio.
- Non è necessariamente convesso.
Nessuna ovvia riformulazione liscia / convessa / lineare
Prima di tutto, non esiste una riformulazione standard, ovvia di ogni vincolo . Il suggerimento di Aron si applica al vincolo più comune , in cui un vincolo come è sostituito dalle seguenti due disuguaglianze equivalenti:La riformulazione non è l'ideale, ogni vincolo è stato sostituito da vincoli lineari, ma converte un programma non lineare non liscio in un programma lineare, che è più veloce da risolvere per ordini di grandezza.min U i j ≤ min k { U i k , U k j } U i j ≤ U i k ,maxmin
Uij≤mink{Uik,Ukj}
Uij≤Uik,∀k
min 2 nUio j≤ Uk j,∀ k .
min2 n
Wolfgang sottolinea che potrebbe essere possibile (non include una prova) riformulare i vincoli modo che siano lineari e fluidi aggiungendo variabili allentate. È necessario aggiungere una variabile allentata per ogni vincolo nella formulazione originale, il che significa che stiamo aggiungendo vincoli in questa riformulazione. Inoltre, ogni vincolo è sostituito da (circa) vincoli lineari. Il vero assassino è che la non scorrevolezza viene spostata dai vincoli all'obiettivo, quindi la formulazione di Wolfgang produce ancora un programma non lineare non liscio.max n 2 max 2 nmaxmaxn2max2 n
Non esiste una riformulazione standard dei vincoli in un problema di minimizzazione che conosco, dopo aver controllato il mio manuale di programmazione lineare e aver fatto una ricerca in letteratura. Ciò non significa che una tale riformulazione non esiste; significa solo che non l'ho trovato. Se dovessi indovinare, direi che non esiste una formulazione LP.max
Nonsmoothness
In questo contesto, la non scorrevolezza significa che almeno una delle funzioni nella formulazione (l'obiettivo o i vincoli) non è due volte continuamente differenziabile. Le funzioni non fluide in questa formulazione sono le funzioni .max
La non scorrevolezza è un grosso problema perché:
- rende immediatamente il tuo problema non lineare
- la maggior parte dei solutori di programmazione non lineari assume due volte funzioni di differenziazione continua
Poiché le funzioni non sono nemmeno una volta continuamente differenziabili, non è nemmeno possibile utilizzare i tradizionali metodi di discesa gradiente senza difficoltà. Gli algoritmi di programmazione non lineare non lineare sono più lenti rispetto alle loro controparti regolari.max
Possibile non convessità
Il tuo problema potrebbe essere non convesso, perché in "forma standard" per i programmi non lineari (ovvero, esprimendo tutti i vincoli nella forma ), i fastidiosi vincoli nella tua la formulazione èg ( x ) ≤ 0
Uio j- maxK{ Ui k, Uk j} ≤ 0 ,∀ i , j , k .
Queste funzioni sono concava.
Prova: in questo caso, le funzioni e sono entrambe convesse. La somma delle funzioni convesse è convessa e moltiplicando una funzione convessa per -1 si ottiene una funzione concava. (QED). max k { U i k , U k j }- Uio jmaxK{ Ui k, Uk j}
Come sottolinea Tim, solo perché è convesso non significa che il tuo problema sia in realtà non convesso, ma se stai cercando di risolvere un problema di ottimizzazione con l'ottimalità globale, puoi solo garantire che un risolutore di ottimizzazione convessa lo farà restituisce un ottimo globale se il tuo problema è convesso. Se vuoi davvero un ottimo globale, ti stupirebbe determinare se il tuo set fattibile è convesso (o meno). In assenza di tali informazioni, si deve presumere che il problema potrebbe essere non convesso e utilizzare algoritmi che non si basano su informazioni di convessità. Anche allora, la non scorrevolezza e la mancanza di una buona riformulazione sono questioni molto più grandi.g
Opzioni per risolvere il problema
Accontentati di trovare una soluzione possibile. In questo caso, fai quello che ha detto Aron e sostituisci con che possono quindi essere riespressi come due disuguaglianze separate usando una riformulazione LP standard. Il problema risultante sarà una restrizione LP del problema che si desidera risolvere; dovrebbe risolversi rapidamente in relazione al problema originale e, se ha una soluzione, tale soluzione sarà fattibile per il problema originale e il suo valore di funzione obiettivo sarà un limite inferiore al valore di funzione obiettivo ottimale del problema originale.U i j ≤ min k { U i k , U k
Uio j≤ maxK{ Ui k, Uk j} ,∀ i , j , k
Uio j≤ minK{ Ui k, Uk j} ,∀ i , j , k ,
Tenta la fortuna con la tua formulazione, così come con un risolutore di bundle per programmi non fluidi. Non ho molta esperienza con questi tipi di solutori. (Un mio collega li usa nelle sue ricerche.) Probabilmente sono lenti, poiché non possono usare le informazioni derivate. (Penso che utilizzino invece le informazioni sul gradiente generalizzato del subgradiente o di Clarke.) È anche improbabile che tu sia in grado di risolvere grandi problemi con un risolutore di bundle.