Máximo de uma combinação convexa sobre um casco convexo de variáveis ​​reais


8

x∈Rn

MaximizeaTxSubject toxmin≤x≤xmax1Tx=1
x∈Rnxa1Txxa

Estou procurando uma maneira rápida de resolver o problema acima sem usar um solucionador de LP. Existe um procedimento rápido a seguir? (além do Simplex).

Obrigado!

Respostas:


5

A solução ideal é a seguinte: Defina todas as variáveis ​​iguais aos seus mínimos. Em seguida, começando do maior para o menor, iterativamente, defina o correspondente o maior possível, até que você pressione . Se ou , o problema é inviável. Eu acredito que esta é a mesma solução que o algoritmo de Geoffrey Irving produz.x i Σ i x i = 1 Σ i x i , m i n > 1 Σ i x i , m um x < 1aixi∑ixi=1∑ixi,min>1∑ixi,max<1

A razão pela qual isso funciona é que você pode transformar seu problema no relaxamento de LP do problema da mochila 0-1 via

yi=xi−xi,minxi,max−xi,min.

No espaço variável em , o problema se torna Maximizar Σ i c i y i Sujeito a 0 ≤ y i ≤ 1 ,  para cada  iy

Maximize∑iciyiSubject to0≤yi≤1, for each i∑ibiyi=d,

onde , , e . Se o problema original for possível, . Os e 'não são negativos, então temos o relaxamento de LP de 0-1 mochila. (A expressão aparece tecnicamente no objetivo, mas como é uma constante, podemos eliminá-lo.)b i = ( x i , m a x - x i , m i n ) d = 1 - ∑ i x i , m i n d ≥ 0 c i b i ∑ i a ici=ai(xi,max−xi,min)bi=(xi,max−xi,min)d=1−∑ixi,mind≥0cibi∑iaixi,min

Supondo que as variáveis ​​sejam classificadas pela razão do maior para o menor, a solução ótima conhecida é a ambiciosa: Defina para o maior possível , defina e defina . Transformar essa solução novamente no espaço do problema com variável fornece a solução que acabei de descrever.y1=y2=⋯=yk=1kyk+1=d-∑ k i = 1 biyk+2=⋯=yn=0xcibi=aiy1=y2=⋯=yk=1kyk+1=d−∑i=1kbiyk+2=⋯=yn=0x

Além disso, a mochila 0-1 possui uma restrição vez de uma restrição . Se você puder ajustar todos os itens da mochila com espaço sobrando, o problema original da variável é inviável porque .= x ∑ i x i , m a x < 1≤=x∑ixi,max<1


7

O algoritmo ganancioso funciona: comece com uma solução que atenda às suas restrições e aumente iterativamente o com o maior que não esteja em e o com o menor que não esteja em o mais longe possível. Pare quando nenhum movimento de par adicional for possível. Isso leva para classificar e tempo para o resto.a i x max x j a j x min O ( n log n ) a O ( n )xiaixmaxxjajxminO(nlog⁡n)aO(n)

Quando o algoritmo for concluído, haverá um conjunto de preso em (aqueles com grande ), um conjunto de preso em (aqueles com pequeno ) e em mais um com e . Uma mudança diferencial em iniciada a partir dessa posição não pode aumentar o objetivo, pois quaisquer ganhos devido ao aumento de ou seriam mais do que compensados ​​por perdas devido à diminuição de ou .x max a i x j x min a j x k x min < x k < x max a i > a k > a j x x j x k x i x kxixmaxaixjxminajxkxmin<xk<xmaxai>ak>ajxxjxkxixk


Por favor, faça isso mais preciso. Seu método atual altera apenas dois componentes de , se considerados literalmente, portanto, não está correto. Também seria bom argumentar por que o resultado final é ideal. x
— Arnold Neumaier 6/12/12

Obrigado pela sua resposta. A abordagem parece interessante, mas eu apóio o pedido de @ArnoldNeumaier de fornecer um argumento.
— Mohammad Fawaz

Ele altera dois componentes por iteração, então não tenho certeza do que você quer dizer com não está correto se considerado literalmente. Vou adicionar uma breve explicação.
— Geoffrey Irving

Bem, o com o maior é o mesmo em cada iteração, etc. Portanto, você tenta alterar os mesmos dois componentes repetidamente. Sua nova versão é irritante como os rótulos índice coisas aparentemente médias diferentes nos dois parágrafos. i i jxiiij
— Arnold Neumaier 6/12/12

Ah, você está certo sobre o mesmo em cada iteração. Deve ser corrigido agora.
— Geoffrey Irving
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.