Vincoli che coinvolgono in un programma lineare?


16

supporre

minAvec(U)subject to Ui,jmax{Ui,k,Uk,j},i,j,k=1,,n

dove U è una matrice simmetrica n×n e vec(U) rimodella U in un vettore monodimensionale con n2 voci.

La parte del programma sopra che mi dà problemi è max{,} . (Limitare le soluzioni alle matrici simmetriche non negative sembra essere semplice.)

Grazie in anticipo per qualsiasi aiuto o referenze!


qualche motivo per cui non è possibile aggiungere entrambi i vincoli?
Aron Ahmadia,

1
@AronAhmadia: non può aggiungere entrambi i vincoli perché sarebbe equivalente a Ui,jmin{Ui,k,Uk,j} per tutti i,j,k . Non penso che ci sia una riformulazione LP di questo problema, ma potrebbe esserci una riformulazione MILP, anche se questo probabilmente rende più costoso da risolvere.
Geoff Oxberry,

@ N21: quanto ti aspetti da n per i problemi che vuoi risolvere?
Geoff Oxberry,

@Geoff: grazie! Alla fine spero di avere n grande n, ma in questo momento sono più preoccupato di ottenere una soluzione preliminare con n minore di, diciamo 100, o anche 10.
N21

Grazie per aver chiarito @GeoffOxberry, non ci ho pensato fino in fondo prima di pubblicare.
Aron Ahmadia,

Risposte:


14

Modifica: proviamo di nuovo questa spiegazione, questa volta quando sono più sveglio.

Ci sono tre grandi problemi con la formulazione (in ordine di gravità):

  1. Non c'è ovvia riformulazione del problema che è ovviamente regolare, convesso o lineare.
  2. Non è liscio.
  3. 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 jmin k { U i k , U k j } U i jU i k ,maxmin

Uijmink{Uik,Ukj}
UijUik,k
min 2 n
UijUkj,k.
min2n

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 nmaxmaxn2max2n

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

Uijmaxk{Uik,Ukj}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 }Uijmaxk{Uik,Ukj}

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 jmin k { U i k , U k

    Uijmaxk{Uik,Ukj},i,j,k
    Uijmink{Uik,Ukj},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.


1
Geoff, roba buona; questo colpisce i punti chiave e offre molte intuizioni e suggerimenti costruttivi. L'ho votato. Ma sembra che tu stia trattando la non convessità come qualcosa di separato dal fatto che, come dici tu, "non esiste una riformulazione standard dei limiti massimi in un problema di minimizzazione che io conosca". In realtà, il primo è proprio il motivo per cui il secondo non è possibile. I vincoli non convessi non possono essere espressi nella programmazione lineare --- punto fermo! Questo è un problema non convesso e dovrà o essere riformulato come problema a numero intero misto o applicare qualche altra euristica.
Michael Grant,

@MichaelGrant: ho discusso questo argomento nelle revisioni 1 e 2 più di un anno fa, e poi sono entrato in un lungo thread di commenti sulla mia affermazione che il problema non è convesso. (Vedi la risposta di Tim in basso). All'epoca ricordo che Tim sostenne che una disuguaglianza con concavo non rende un insieme realizzabile non convesso. Non sono sicuro del perché, perché per definizione, un programma convesso deve poter essere espresso in modo tale che per convesso. Mi sono stancato di discutere con Tim a riguardo; Dovrei ripristinare alcune delle mie modifiche precedenti. g g ( x ) 0 gg(x)0gg(x)0g
Geoff Oxberry,

1
È vero che le funzioni di vincolo non convesse possono descrivere insiemi convessi (in effetti la nozione di quasiconvessità copre la maggior parte di questi casi). Ma il fatto è che descrive un insieme non convesso in . Quindi l'affermazione di Tim è irrilevante per questo particolare problema. È anche ipotizzabile che l'intersezione di insiemi non convessi finisca per essere convessa, ma è un evento improbabile. ( x , y , z )xmax{y,z}(x,y,z)
Michael Grant,

1
Sì, puoi provare quella particolare affermazione perché un tale set è l'ipografo di e l'insieme definito dall'ipografo di una funzione è convesso se la funzione è concava. max{y,z}
Geoff Oxberry,

3

La soluzione alla tua domanda è .

Lascia Poiché e i tuoi vincoli sono lineari in , qualsiasi multiplo positivo di soddisfa i vincoli. Pertanto, .Avec(U)Ut±UminV(Avec(V))mint(Avec(tU))=-

U=(1111).
Avec(U)Ut±UminV(Avec(V))mint(Avec(tU))=

Sicuramente una soluzione alla domanda come posta. La mia ipotesi è che l'OP porrà un vincolo di non negatività su , nel qual caso il valore della funzione obiettivo ottimale potrebbe non essere . - U
Geoff Oxberry,

@GeoffOxberry: True. Anche con vincoli di positività su la risposta è . La forma proposta implica che è davvero una domanda di ottimizzazione della matrice alla . U02tr(A^U)=A^U2A^2U2
Deathbreath,

2

Per formulare i vincoli , creiamo variabili binarie , , . Lascia che sia il limite della variabile , quindi dobbiamo solo aggiungere i seguenti vincoli:fmax{f1,f2,...,fn}n bi{0,1}1inMf

1)ffi+(1bi)M,i

2)ibi=1

Normalmente, impostare se possiamo stimare il valore di .f iM:=maxifiminififi


1

Non puoi introdurre una variabile debole? Quindi per riformulare il vincolo scrivilo come segue: Questo avrà una soluzione irrealizzabile rispetto al problema originale se scegli s = infinito. Ma sono abbastanza sicuro che puoi mostrare che se aggiungi un termine alla funzione obiettivo (cioè, vuoi avere come piccolo il più possibile, preferibilmente zero) sufficientemente grande, quindi otterrai una soluzione fattibile se il problema originale avesse soluzioni fattibili con valore oggettivo inferiore all'infinito.

xi<=max(ai1,ai2,...,ain)
xi<=si
si>=ai1
si>=ai2
...
si>=ain
cmax(simax(ai),0)
simax(ai)c

(Una prova andrebbe sulla falsariga di mostrare che se e se , allora la soluzione è impossibile; in altre parole, è una misura di fattibilità il problema originale. Se il problema è stabile, dovrebbe esserci un miglioramento finito nel valore della funzione oggettiva per una violazione finita della fattibilità. Se si sceglie c per essere maggiore del rapporto tra variazione del valore obiettivo e violazione della fattibilità, la modifica funzione obiettivo sarebbe crescere per i problemi che vanno nella regione fattibile.)si>=max(ai)xi=sisimax(ai)


È una buona idea. Supponendo che la tua prova sia passata, il problema diventa quindi spostare la non linearità e la non scorrevolezza dai vincoli all'obiettivo, entrambi i quali sono ancora qualità indesiderabili in una formulazione.
Geoff Oxberry,

Temo che non funzionerà. Se le quantità sono variabili, non costanti, il vincolo originale non è un insieme convesso in . Il tuo insieme riformulato di vincoli, d'altra parte, è un insieme convesso in . Le due serie di vincoli non possono essere equivalenti. aij(xi,ai1,ai2,...,ain)(xi,si,ai1,ai2,...,ain)
Michael Grant,

1

Non riesco a trovare il pulsante di commento ...

Come ha sottolineato Geoff, è una funzione di vincolo concava. Tuttavia, non importa se la funzione stessa è concava o meno. Le funzioni concave sotto vincoli lineari possono essere insiemi convessi (ad es. ).log(x)<5

Se si tratta di un insieme convesso, è possibile eseguire una discesa gradiente sulla funzione obiettivo, usando qualcosa come l' algoritmo di proiezione di Dykstra per proiettare nuovamente nello spazio dei vincoli.


È stato votato per il commento sulle funzioni concave; Avrei dovuto pensare di più alla mia spiegazione. Proiettare sul set fattibile è una possibilità, anche se non sono sicuro che potrei applicare quegli algoritmi con vincoli non regolari.
Geoff Oxberry,

Non sono sicuro se si applicano a vincoli non uniformi. Inoltre, i problemi non convessi sono NP-difficili solo se hanno un numero NP di possibili soluzioni. Se il numero di possibili soluzioni è in P, la forza bruta risolve esattamente un'attività di ottimizzazione non convessa. Infine, il metodo non può essere formato come LP, ma ciò non ha nulla a che fare con la natura concava del vincolo. È perché il vincolo è una funzione non lineare che crea anche uno spazio di vincolo non lineare (convesso o meno). Esistono molti vincoli convessi che non possono essere risolti utilizzando gli LP. ad es.x2+y2<5
Tim

"I problemi non convessi sono solo NP difficili se hanno un numero NP di possibili soluzioni." NP sta per "polinomio non deterministico". Sono completamente perso di ciò di cui stai parlando. In secondo luogo, ho menzionato la concavità perché le funzioni lineari sono concave e convesse; la funzione non è convessa. Solo perché la funzione è non uniforme e lineare a tratti non esclude immediatamente la possibilità che esista una riformulazione LP.
Geoff Oxberry,

Ad esempio, è "non lineare" e può essere riformulato come una coppia di vincoli lineari, quindi ammette una riformulazione LP. Infine, hai ragione, ci sono molti vincoli che non possono essere riformulati come vincoli lineari, come i vincoli non lineari regolari. Uijmink{Uik,Ukj}
Geoff Oxberry,

Mi dispiace, ho dovuto abbreviare il commento, quindi ho usato NP per non polinomiale e P per polinonomo. Il punto era che l'ottimizzazione non convessa non è sempre NP-difficile. È NP-difficile solo se il numero di soluzioni possibili è PEGGIORE rispetto al polinomiale. Scusate la confusione :) Hai ragione sul riformulare come lineare. Sembravi dire "Di conseguenza, non c'è modo di riformulare il tuo programma come programma lineare", a causa della non convessità, stavo solo notando che non era legato alla convessità ma alla linearità.
Tim

0

Vi sono più vincoli di disuguaglianza che non vengono menzionati? Come detto, il problema è minimizzare una funzione lineare su un cono, quindi il valore ottimale è sempre o .0

Anche con il vincolo , il problema si riduce a un problema di decisione discreta. Pensa alla funzione lineare come corrispondente ai pesi positivi / negativi dei bordi del grafico completo su vertici. Se esiste un grafico del diametro 2 che collega tutti i vertici con la somma dei suoi pesi strettamente negativa, il valore ottimale è , altrimenti il ​​valore ottimale è .U0An0

Un breve schizzo su come dimostrarlo. Prima nota che se , allora implica . Quindi le disuguaglianze implicano che per ogni tripla , deve essere vera una delle seguenti condizioni:abccmax(a,b)b=ci,j,k

  1. Uij<Ujk=Uik
  2. Uik<Ujk=Uij
  3. Ujk<Uik=Uij
  4. Uij=Ujk=Uik

Quindi, se si fissa una soglia e si forma un grafico con un bordo ovunque , allora ogni 3 vertici deve avere esattamente 0,2 o 3 bordi che li collegano. Quindi, se , allora per ogni altro vertice , dobbiamo disporre di o . Quindi, se il grafico ha degli spigoli, deve essere di diametro 2.G ( t ) U i j = t U i j = U j k = t U j = t U i = U k = t G ( t )tG(t)Uij=tUij=Ujk=tUj=tUi=Uk=tG(t)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.