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

8

xRn

MaximizeaTxSubject toxminxxmax1Tx=1
xRnxa1Txxa

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!

Mohammad Fawaz
fonte

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 < 1aixiixi=1ixi,min>1ixi,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=xixi,minxi,maxxi,min.

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

MaximizeiciyiSubject to0yi1, for each iibiyi=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,maxxi,min)bi=(xi,maxxi,min)d=1ixi,mind0cibiiaixi,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=di=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=xixi,max<1

Mike Spivey
fonte
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(nlogn)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

Geoffrey Irving
fonte
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