RCPSP en CPLEX avec 3 types de contraintes de précédences
Fermé
nani93
Messages postés1Date d'inscriptionsamedi 26 mars 2016StatutMembreDernière intervention23 avril 2016
-
Modifié par KX le 23/04/2016 à 18:15
Bonjour à tous ,
j'essaye de faire un programme en cplex du problème rcpsp (gestion de projet sous contraintes de ressources )
sachant que j'ai trois types de contraintes de précédences (debutdebut,debutfin ,finfin )
voila mon programme !!!
le problème c'est que ça me donne tjrs "pas de solution "
aidez moi s'il vous plait :)
/*********************************************
* OPL 12.5 Model
* Author: W7
* Creation Date: 21 avr. 2016 at 20:37:13
*/
using CP;
int NbTasks = ...;
int NbRsrcs = ...;
range RsrcIds = 0..NbRsrcs-1;
int Capacity[r in RsrcIds] = ...;
tuple Task {
key int id;
int pt;
int dmds[RsrcIds];
{int} pred ;
int p_type;
}
{Task} Tasks = ...;
dvar interval itvs[t in Tasks]
size t.pt;
cumulFunction rsrcUsage[r in RsrcIds] =
sum (t in Tasks: t.dmds[r]>0)
pulse(itvs[t], t.dmds[r]);
execute {
cp.param.FailLimit = 10000;
} minimize max(t in Tasks) endOf(itvs[t]);
subject to {
forall (r in RsrcIds)
rsrcUsage[r] <= Capacity[r]; //capacité
forall (t1 in Tasks, t2id in t1.pred)
if (t1.p_type ==1)
endBeforeStart(itvs[t1], itvs[<t2id>]);
else if (t1.p_type ==2)
startAtStart (itvs[t1], itvs[<t2id>]);
else if (t1.p_type ==3)
endAtEnd (itvs[t1], itvs[<t2id>]);
}
execute {
for (var t in Tasks) {
writeln("Task " + t.id + " starts at " + itvs[t].start);
}
}
EDIT : Ajout des balises de code (la coloration syntaxique). Explications disponibles ici : ICI
Merci d'y penser dans tes prochains messages.
A voir également:
RCPSP en CPLEX avec 3 types de contraintes de précédences