2017-05-13 1 views
0

J'essaye d'écrire un code en Java avec CPLEX mais j'ai un problème. Je suis nouveau à CPLEX et Java aussi.Je suis nouveau sur java et CPLEX. Lutter avec des sommations et des tableaux

J'ai étudié pendant quelques jours et j'ai pu comprendre des exemples très simples de CPLEX mais je dois faire face à quelque chose de beaucoup plus difficile maintenant.

J'essayais d'écrire des expressions comme 1000*(k-Sigma y^k(k from 1)) mais je ne pouvais pas le faire fonctionner alors j'ai cherché sur Google pour ce sujet, mais je ne pouvais pas trouver un moyen de comprendre cela.

Ce que je compris à ce jour est que je besoin d'un tableau comme celui-ci

IloNumVar[] y = cplex.numVarArray(?, ?, Double.MAX_VALUE?); 

J'ai lu le manuel sur le site Web d'IBM, mais je ne comprends toujours pas quelles sont les variables que je devrais mettre entre parenthèses l'intérieur.

Et je besoin d'une boucle pour la somme alors j'ai écrit comme

for(int k = 1; k <= bus; k++) { 
    objective.addTerm(1000, k-y[k]); 
} 

Bien sûr, il ne fonctionne pas. Je suppose que quelque chose ne va pas avec 'k' mais je ne sais pas comment résoudre ce problème.

+0

Totalement inconnu avec cplex, mais peut-être 'objective = objectif.addTerm (...);'? (Lorsque addTerm crée un nouvel objet au lieu de se modifier lui-même.) –

+0

Merci .. mais je suis désolé j'ai juste abandonné sur ce – limetree

+0

Ne jamais abandonner :) –

Répondre

0

S'il vous plaît jeter un oeil à la page suivante:

CPLEX Java API

Vous pouvez voir l'en-tête de méthode suivante:

IloNumVar[] numVarArray(int n, double lb, double ub) 

où les params sont:

n - number of variables 
lb - lower bound 
ub - upper bound 

Si vous l'utilisez comme ceci:

IloNumVar[] y = cplex.numVarArray(5, 0, Double.MAX_VALUE); 

vous allez créer un tableau de 5 éléments (variables). Chacun d'eux doit être un nombre non négatif.

Veuillez préciser plus clairement la 2ème partie de votre question.