Вы находитесь на странице: 1из 1

import import import import import import import

static choco.Choco.*; choco.cp.model.CPModel; choco.kernel.model.Model; choco.kernel.model.variables.integer.IntegerVariable; choco.kernel.model.constraints.Constraint; choco.kernel.solver.Solver; choco.cp.solver.CPSolver;

public class Ordonnancement1 { public static void main(String [] args){ final int NOMBRE_DE_TACHES = 13; final int[] DUREE = {7,10,10,12,5,2,9,7,8,3,10,3,9}; int dureeTotale = 0; for(int i = 0;i<NOMBRE_DE_TACHES;i++){ dureeTotale += DUREE[i]; } final int BORNE_SUP = dureeTotale; final int[][] PRECEDENCE = {{},{},{},{0,1},{2},{1},{2},{1,5},{2, 4,5},{1,5,7},{0,3},{7,8,9},{6}}; //creation du modele Model m = new CPModel(); //creation et ajout au modele des variable //X[i] est la date de dbut de chaque taches IntegerVariable [] X = new IntegerVariable[NOMBRE_DE_TACHES]; for(int i = 0;i<13;i++){ X[i] = makeIntVar("X"+(((byte)('a'))+i),0,BORNE_SUP); } for(int i = 0; i< NOMBRE_DE_TACHES;i++){ for(int j = 0 ; j< PRECEDENCE[i].length;j++){ m.addConstraint(geq(X[i],plus(X[j],DUREE[j]))); } } //creation du solveur Solver s = new CPSolver(); //lecture du modele s.read(m); try{ s.propagate(); }catch(Exception e ){ e.printStackTrace(); } for(int i = 0 ; i< NOMBRE_DE_TACHES;i++){ System.out.println("tache #"+i+" :"+s.getVar(X[i]).getIn f()+" --> "+s.getVar(X[i]).getSup()); } } }

Вам также может понравиться