Eu queria adicionar como resolver transformando as restrições uma forma utilizável para programação quadrática, pois não é tão direta quanto eu pensava. Não é possível encontrar uma matriz real A tal que A w ≤ s ↔ ∑ | w i | ≤ s .∑|wi|≤sAAw≤s↔∑|wi|≤s
A abordagem que usei foi dividir os elementos do vetor em e , de modo que . Se , você tem e , caso contrário, você teme . Ou, em termos mais matemáticos, eAmbos e são números não negativos. A idéia por trás da divisão dos números é que agora você tem w w +wiw w - i wi=w + i -w - i wi≥0w + i =wiw - i =0w - i =| wi| w + i =0w + i =| wi| +wiw+iw−iwi=w+i−w−iwi≥0w+i=wiw−i=0w−i=|wi|w+i=0 w - i =| wi| -wiw+i=|wi|+wi2w - i w + i | wi| =w + i +w - iw−i=|wi|−wi2.w−iw+i|wi|=w+i+w−i, eliminando efetivamente os valores absolutos.
A função para otimizar se transforma em: , assunto para
w +12(w+−w−)TQ(w+−w−)+cT(w+−w−)w+i+w−i≤s,w+i,w−i≥0
Onde e são dados como indicado acima por Glen_bcQc
Isso precisa ser transformado em uma forma utilizável, ou seja, precisamos de um vetor. Isso é feito da seguinte maneira:
12[w+w−]T[Q−Q−QQ][w+w−]+[cT−cT][w+w−]
sujeito a
[ID−I2DID][w+w−]≤[sD02D]
Onde é o matriz unidade -dimensional, um -dimensional vector contendo apenas o valor de e um -dimensional vector zero. A primeira metade garante , o segundo Agora está em uma forma utilizável usar a programação quadrática para procurar e , dados . Feito isso, seu parâmetro ideal em relação a é . D s D D s 0 D 2 * D | w i | = 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−
Fonte e leituras adicionais: Solucionando problemas de programação quadrática com restrições lineares contendo valores absolutos