Déclaration d'une variable avec trois indices avec ilocplex
Fermé
sonya
-
Modifié le 12 avril 2017 à 20:22
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 - 13 avril 2017 à 10:49
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 - 13 avril 2017 à 10:49
A voir également:
- Déclaration d'une variable avec trois indices avec ilocplex
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Vba range avec variable ✓ - Forum VB / VBA
- Clémence souhaite faire calculer automatiquement les prix de 30 produits dans trois devises. elle a déjà saisi une formule de calcul pour le tarif du premier produit dans la première devise. corrigez sa formule afin que recopiée vers le bas puis vers la droite, elle remplisse correctement tout le tableau. - Forum Excel
- Processus déclaration tva rapport de stage ✓ - Forum compta / gestion
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
1 réponse
[Dal]
Messages postés
6057
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
17 mars 2023
1 043
12 avril 2017 à 17:57
12 avril 2017 à 17:57
Salut,
Je ne connais pas cplex, cependant, en C, un tableau de taille "nb_nodes" est accessible par des indices allant de 0 à nb_nodes - 1
Une boucle for sur un tel tableau devrait alors s'écrire :
Pour le reste ton code est très bizarre pour moi et ne ressemble guère syntaxiquement à du C.
Dal
Je ne connais pas cplex, cependant, en C, un tableau de taille "nb_nodes" est accessible par des indices allant de 0 à nb_nodes - 1
Une boucle for sur un tel tableau devrait alors s'écrire :
for(i=0; i< nb_nodes; i++) {
(...)
Pour le reste ton code est très bizarre pour moi et ne ressemble guère syntaxiquement à du C.
Dal
12 avril 2017 à 18:34
En fait, j'ai intégré le cplex avec visual studio et je cherche à écrire mon programme linéaire en utilisant l'ilocplex et le langage C.
Pour faire, il me faut déclarer une variable que je vais la manipuler avec trois indices. x[i][j][k]
Modifié le 12 avril 2017 à 19:18
si NumVar3Matrix était un type C définit avec typedef, et X un nom de variable, il ne me parait pas qu'il soit correct en C que la déclaration de cette variable soit suivie de paramètres entre parenthèses.
Cela ressemble plutôt à l'appel au constructeur d'un objet C++
en cherchant un peu sur le Net, on trouve cette doc d'IBM :
https://www.ibm.com/support/pages/node/397011
qui évoque un fichier d'exemple "facility.cpp example available in $CPLEXDIR\examples\src" qui est du C++ avec du code qui utilise les indices de tableaux correctement (c'est à dire en comptant à partir de 0), le C++ ne différant pas du C sur ce point.
Dal
12 avril 2017 à 19:24
Pourriez vous m'aider à declarer une variable de type prédefini NumVar3Matrix en C et la manipuler avec langage c aussi.
Merci d'avance.
Modifié le 12 avril 2017 à 20:01
Voir : https://www.ibm.com/support/knowledgecenter/SSSA5P_12.7.0/ilog.odms.studio.help/pdf/usrcplex.pdf (pages 60 et suivantes) mais la doc sur la façon d'utiliser l'API C est très spartiate.
En page 66, on confirme par ailleurs dans "Referencing ranges of objects" que "Consistent with standard C programming practices, in CPLEX an array containing k
items will contain these items in locations 0 (zero) through k-1".
Quand à "NumVar3Matrix" si c'est un type prédéfinit par cplex, il n'est pas mentionné dans cette doc... et cela n'en serait pas un, si on se fie à l'exemple dont j'ai posté le lien ci-dessus, qui le définit ainsi :
c'est à dire un type définit par l'utilisateur (donc une sorte d'alias) sur un template C++.
pourquoi ne le fais-tu pas en C++ cela a l'air bien mieux documenté ?
si je me fie à l'exemple, et sans connaître du tout cplex, ni être en mesure de tester quoi que ce soit, cela donnerait cela en corrigeant simplement les bornes des tableaux :
NumVar3Matrix X(env,nb_nodes); /* initialize this matrix */ for(i=0; i< nb_nodes; i++) { X[i] = NumVarMatrix(env, nb_nodes); for(j=0; j< nb_nodes; j++) { X[i][j] = IloNumVarArray(env, nb_commodities); for(k=0; k<nb_commodities; k++) { X[i][j][k] = IloNumVar(env, 0.0, 10000, ILOFLOAT); } } }Dal
12 avril 2017 à 20:17
J'ai déja consulté ce document et j'ai essayé de comprendre comment utiliser l'API c mais je n'arrive pas.
Il me faut travailler avec le langage c , c'est tout un projet de mémoire dont la base est codée en C.
Je vais essayer de changer les bornes et tester.