2014-06-13 4 views
0

J'ai le problème d'optimisation contrained non linéaire suivant, que im am résolution en R à l'aide solnp:poids égaux contraintes

max F(w) 
w 
    s.t. 
w_i >= 0 for all i 
sum(w) = 1 

Cependant, je voudrais ajouter une contrainte supplémentaire, mais je ne suis pas sûr qu'il est même possible. Je voudrais que tous les w soient plus grands que 0 pour avoir des poids égaux. Quelque chose comme:

max F(w) 
w 
    s.t. 
w_i >= 0 for all i 
sum(w) = 1 
w_i=w_j for all i,j where w_i,w_j>0 

Est-ce que quelqu'un si c'est possible, et si oui, comment le faire?

Répondre

2

Je ne sais pas si c'est un problème d'optimisation forcément difficile étant donné que votre espace de recherche est complètement déterminé. Essentiellement, compte tenu du nombre fini de dimensions pour w_i, vous avez un nombre fini de points dans l'espace R^w que vous souhaitez rechercher. Ce sont:

c(1, 0, 0, ..., 0) 
c(0, 1, 0, ..., 0) 
... 
c(0, 0, ..., 1) 
c(1/2, 1/2, 0, ..., 0) 
c(1/2, 0, 1/2, ..., 0) 
... 
c(1/3, 1/3, 1/3, 0, ..., 0) 
... 
c(1/n, 1/n, ..., 1/n) 

ainsi de suite. Vous avez eu l'idée. Cela signifie que vous pouvez simplement évaluer votre fonction sur ces points et choisir la combinaison qui maximise F.

Est-ce que cela vous semble exact ou est-ce que j'ai manqué quelque chose de critique?

+0

Merci, vous avez tout à fait raison! Je pensais que le nombre de points serait infini, mais ils sont bien sûr fixés par les contraintes. – Mace

+0

Cependant, la taille totale de l'espace de recherche augmente assez rapidement dans 'n'. Il est égal à \ sum_ {a = 1}^n \ frac {n!} {A! (N-a)!}. Et avec 'n = 36' (comme je le pensais), cela équivaut à 68 719 476 735 possibilités :( – Mace

+0

@Mace: Vous avez raison de dire que la complexité est assez grande, mais je ne suis pas sûr que votre critère de contrainte corresponde à un paradigme d'optimisation approprié. – asb