Suponha
onde é uma matriz n × simétrica e remodela em um vetor unidimensional com entradas.
A parte do programa acima que me causa problemas é o . (A restrição de soluções para matrizes simétricas não-negativas parece ser direta.)
Agradecemos antecipadamente por qualquer ajuda ou referências!
Respostas:
Edit: Vamos tentar esta explicação novamente, desta vez quando estou mais acordado.
Há três grandes problemas com a formulação (em ordem de gravidade):
Nenhuma reformulação suave / convexa / linear óbvia
Primeiro, não existe uma reformulação padrão e óbvia de cada restrição . A sugestão de Aron se aplica à restrição min mais comum , na qual uma restrição como U i j ≤ min k { U i k , U k j } é substituída pelas duas desigualdades equivalentes a seguir: U i j ≤ U i k ,max min
Wolfgang ressalta que pode ser possível (ele não inclui uma prova) reformular as restrições para que elas sejam lineares e suaves, adicionando variáveis de folga. Uma variável de folga precisa ser adicionada para cada restrição máxima na formulação original, o que significa que estamos adicionando n 2 restrições nessa reformulação. Além disso, toda restrição máxima é substituída por 2 n (mais ou menos) restrições lineares. O verdadeiro assassino é que a não suavidade é movida das restrições para o objetivo, de modo que a formulação de Wolfgang ainda produz um programa não linear não suave.max max n2 max 2n
Não há uma reformulação padrão das restrições em um problema de minimização que eu conheço, depois de verificar meu livro de programação linear e fazer uma pesquisa na literatura. Isso não significa que essa reformulação não exista; isso apenas significa que não me deparei com isso. Se eu tivesse que adivinhar, diria que não existe uma formulação de LP.max
Não suavidade
Nesse contexto, não suavidade significa que pelo menos uma das funções da formulação (o objetivo ou as restrições) não é duas vezes continuamente diferenciável. As funções não suaves nesta formulação são as funções .max
A não lisura é um grande problema porque:
Como as funções não são nem uma vez continuamente diferenciáveis, você não pode nem usar os métodos tradicionais de descida de gradiente sem dificuldade. Os algoritmos de programação não linear não suaves são mais lentos do que seus equivalentes suaves.max
Possível não convexidade
Seu problema pode ser não-convexo, porque na "forma padrão" para programas não lineares (ou seja, expressando todas as restrições na forma ), as restrições problemáticas em sua formulação sãog ( x )≤ 0
Essas funções são côncavas.
Prova: Nesse caso, as funções e max k { U i k , U k j } são ambas convexas. A soma das funções convexas é convexa, e multiplicar uma função convexa por -1 resulta em uma função côncava. (QED.)- Ueu j maxk{ Ueu k, Uk j}
Como Tim ressalta, apenas porque é não-convexo não significa que seu problema seja realmente não-convexo, mas se você estiver tentando resolver um problema de otimização para otimizar globalmente, poderá garantir apenas que um solucionador de otimização convexo retornará um ótimo global se o seu problema for convexo. Se você realmente deseja um ótimo global, caberia a você determinar se seu conjunto viável é convexo (ou não). Na ausência de tais informações, você deve assumir que seu problema pode não ser convexo e usar algoritmos que não dependem de informações de convexidade. Mesmo assim, a não suavidade e a falta de uma boa reformulação são questões muito maiores.g
Opções para resolver o problema
Aceite possivelmente encontrar uma solução viável. Nesse caso, faça o que Aron disse e substitua com U i j ≤ min k { U i k , U k j } ,
Tente sua sorte em sua formulação, como é o caso de um solucionador de pacotes para programas não suaves. Não tenho muita experiência com esses tipos de solucionadores. (Um colega meu os usa em sua pesquisa.) Provavelmente são lentos, pois não podem usar informações derivadas. (Eu acho que eles usam informações de gradiente generalizadas do subgradiente ou de Clarke.) Também é improvável que você consiga resolver grandes instâncias de problemas com um solucionador de pacotes.
fonte
A solução para sua pergunta é .−∞
Seja ComoA⋅v(U)e suas restrições são lineares emU, qualquer múltiplo positivotde±Usatisfaz as restrições. Portanto,minV(A⋅vec(V))≤mint(A⋅vec(tU))=-∞.
fonte
A fim de formular as restrições , criamos n variáveis binárias , b i ∈ { 0 , 1 } , 1 ≤ i ≤ n . Seja M o limite da variável f , basta adicionar as seguintes restrições:f≤max{f1,f2,...,fn} n bi∈{0,1} 1≤i≤n M f
1)f≤fi+(1−bi)M,∀i
2)∑ibi=1
Normalmente, defina se pudermos estimar o valor de f i .M:=maxifi−minifi fi
fonte
fonte
Não consigo encontrar o botão de comentário ...
Se for um conjunto convexo, você poderá realizar uma descida gradiente em sua função objetivo, usando algo como o_projection_algorithm de Dykstra para projetar de volta no espaço de restrições.
fonte
fonte