2016-12-28 1 views
0

Je reçois cette erreur, "CPLEX (par défaut) ne peut pas extraire l'expression", mais lorsque je supprime la fonction de journal dans la fonction objet, l'erreur est résolue. Mon code est le suivant:Ressource t Emplacement t Type d'emplacement CPLEX (par défaut) impossible d'extraire l'expression

range k=1..4; 
range n=1..4; 
//inputs 
float p[n][k]=...; 
float M=...; 
float B=...; 


//variables 
dvar boolean w[n]; 
//objective 



maximize (sum(k in k) log(sum(n in n)(w[n]*exp((-1*p[n][k]))))) ; 

//constraints 
subject to 
{ 
    sum (n in n) w[n]<= 2 ; 
} 

Il est déroutant; Je ne sais pas quel est le problème. Est-ce que quelqu'un connaît la solution?

+0

CPLEX est limité aux expressions linéaires, plus quelques expressions non linéaires sélectionnées, telles que les quadratiques. Je ne pense pas que 'log' soit supporté. – TimChippingtonDerrick

Répondre

0

En effet, le journal n'est pas supporté par CPLEX mais le CP peut gérer cela. Pouvez-vous ajouter

using CP; 

au début de votre modèle? salutations

0

vous devriez avoir un nom différent pour la boucle, par exemple sum(k in k) devrait remplacer le premier k par un autre nom parce que vous avez déjà déclaré le second k comme une plage. par exemple: sum(l in k)