Volevo aggiungere come risolvere trasformando i vincoli in una forma utilizzabile per la programmazione quadratica, in quanto non è così semplice come pensavo. Non è possibile trovare una vera matrice tale che .A A w ≤ s ↔ ∑ | w io | ≤ s∑|wi|≤sAAw≤s↔∑|wi|≤s
L'approccio che ho usato è stato quello di dividere gli elementi del vettore in e , in modo che . Se , hai e , altrimenti haie . O in termini più matematici, eSia che sono numeri non negativi. L'idea alla base di dividere i numeri è che ora hai wwiw w - i w i = w + i - w - i w i ≥ 0 w + i = w i w - i = 0 w - i = | w io |w+iw−iwi=w+i−w−iwi≥0w+i=wiw−i=0w−i=|wi|w + i = | w io | + w iw+i=0 w - i =| wio| -wiow+i=|wi|+wi2w - i w + i | wio| =w + i +w - iw−i=|wi|−wi2.w−iw+i|wi|=w+i+w−i, eliminando efficacemente i valori assoluti.
La funzione da ottimizzare si trasforma in: , soggetto a
w + i + w - i ≤ s ,12(w+−w−)TQ(w+−w−)+cT(w+−w−)w+i+w−i≤s,w+i,w−i≥0
Dove e sono indicati come indicato sopra da Glen_bcQc
Questo deve essere trasformato in una forma utilizzabile, cioè abbiamo bisogno di un vettore. Questo viene fatto nel modo seguente:
12[w+w−]T[Q−Q−QQ][w+w−]+[cT−cT][w+w−]
soggetto a
[ID−I2DID][w+w−]≤[sD02D]
Dove è la matrice unitaria dimensionale, un -dimensionale vettore costituito esclusivamente dal valore e un -dimensionale vettore nullo. Il primo tempo assicura , il secondo Ora è in una forma utilizzabile usare la programmazione quadratica per cercare e , dato . Fatto ciò, il parametro ottimale rispetto a è . D s D D s 0 D 2 ∗ D | w io | = w + i + w - i ≤ s w + i , w - i ≥ 0 w + w - s s w = w + - w -IDDsDDs0D2∗D|wi|=w+i+w−i≤sw+i,w−i≥0w+w−ssw=w+−w−
Sorgente e ulteriori letture: risoluzione del problema di programmazione quadratica con vincoli lineari contenenti valori assoluti