Search in sources :

Example 21 with Model

use of org.chocosolver.solver.Model in project scheduler by btrplace.

the class CSync method inject.

@Override
public boolean inject(Parameters ps, ReconfigurationProblem rp) throws SchedulerException {
    Model csp = rp.getModel();
    // Get all migrations involved
    for (VM vm : sec.getInvolvedVMs()) {
        VMTransition vt = rp.getVMAction(vm);
        if (vt instanceof RelocatableVM) {
            migrationList.add((RelocatableVM) vt);
        }
    }
    for (int i = 0; i < migrationList.size(); i++) {
        for (int j = i + 1; j < migrationList.size(); j++) {
            RelocatableVM vm1 = migrationList.get(i);
            RelocatableVM vm2 = migrationList.get(j);
            // Sync the start or end depending of the migration algorithm
            // TODO: support VMs that are not necessarily moving
            IntVar firstMigSync = vm1.usesPostCopy() ? vm1.getStart() : vm1.getEnd();
            IntVar secondMigSync = vm2.usesPostCopy() ? vm2.getStart() : vm2.getEnd();
            csp.post(csp.arithm(firstMigSync, "=", secondMigSync));
        }
    }
    return true;
}
Also used : RelocatableVM(org.btrplace.scheduler.choco.transition.RelocatableVM) VM(org.btrplace.model.VM) Model(org.chocosolver.solver.Model) VMTransition(org.btrplace.scheduler.choco.transition.VMTransition) RelocatableVM(org.btrplace.scheduler.choco.transition.RelocatableVM) IntVar(org.chocosolver.solver.variables.IntVar) ChocoConstraint(org.btrplace.scheduler.choco.constraint.ChocoConstraint)

Example 22 with Model

use of org.chocosolver.solver.Model in project scheduler by btrplace.

the class DisjointTest method disjointMultipleTest.

@Test
public void disjointMultipleTest() {
    IntVar[][] groups = new IntVar[3][3];
    Model s = new Model();
    for (int g = 0; g < groups.length; g++) {
        for (int i = 0; i < groups[g].length; i++) {
            groups[g][i] = s.intVar("G" + g + "-" + i, 0, 2, false);
        }
    }
    s.post(new DisjointMultiple(groups, 3));
    for (int g = 1; g < groups.length; g++) {
        s.post(s.arithm(groups[g - 1][2], "<=", groups[g][2]));
    }
    // SMF.log(s, true, true);
    // SMF.logContradiction(s);
    s.getSolver().findAllSolutions();
}
Also used : Model(org.chocosolver.solver.Model) IntVar(org.chocosolver.solver.variables.IntVar) Test(org.testng.annotations.Test)

Example 23 with Model

use of org.chocosolver.solver.Model in project scheduler by btrplace.

the class FastIFFEqTest method test2.

@Test
public void test2() {
    Model csp = new Model();
    BoolVar b = csp.boolVar("b");
    IntVar x = csp.intVar("x", 0, 3, false);
    int c = 2;
    csp.post(new FastIFFEq(b, x, c));
    Assert.assertEquals(4, csp.getSolver().findAllSolutions().size());
}
Also used : Model(org.chocosolver.solver.Model) IntVar(org.chocosolver.solver.variables.IntVar) BoolVar(org.chocosolver.solver.variables.BoolVar) Test(org.testng.annotations.Test)

Example 24 with Model

use of org.chocosolver.solver.Model in project scheduler by btrplace.

the class FastIFFEqTest method test6.

@Test
public void test6() {
    Model csp = new Model();
    BoolVar b = csp.boolVar(false);
    IntVar x = csp.intVar("x", 0, 3, true);
    int c = 2;
    csp.post(new FastIFFEq(b, x, c));
    Assert.assertEquals(3, csp.getSolver().findAllSolutions().size());
}
Also used : Model(org.chocosolver.solver.Model) IntVar(org.chocosolver.solver.variables.IntVar) BoolVar(org.chocosolver.solver.variables.BoolVar) Test(org.testng.annotations.Test)

Example 25 with Model

use of org.chocosolver.solver.Model in project scheduler by btrplace.

the class FastIFFEqTest method test3.

@Test
public void test3() {
    Model csp = new Model();
    BoolVar b = csp.boolVar("b");
    IntVar x = csp.intVar("x", 0, 2, true);
    int c = 3;
    csp.post(new FastIFFEq(b, x, c));
    Assert.assertEquals(3, csp.getSolver().findAllSolutions().size());
}
Also used : Model(org.chocosolver.solver.Model) IntVar(org.chocosolver.solver.variables.IntVar) BoolVar(org.chocosolver.solver.variables.BoolVar) Test(org.testng.annotations.Test)

Aggregations

Model (org.chocosolver.solver.Model)38 IntVar (org.chocosolver.solver.variables.IntVar)32 Test (org.testng.annotations.Test)20 BoolVar (org.chocosolver.solver.variables.BoolVar)17 Node (org.btrplace.model.Node)7 VM (org.btrplace.model.VM)7 ArrayList (java.util.ArrayList)6 VMTransition (org.btrplace.scheduler.choco.transition.VMTransition)4 TIntArrayList (gnu.trove.list.array.TIntArrayList)3 RelocatableVM (org.btrplace.scheduler.choco.transition.RelocatableVM)3 HashSet (java.util.HashSet)2 SchedulerModelingException (org.btrplace.scheduler.SchedulerModelingException)2 Task (org.chocosolver.solver.variables.Task)2 Collection (java.util.Collection)1 Collections (java.util.Collections)1 List (java.util.List)1 Objects (java.util.Objects)1 Among (org.btrplace.model.constraint.Among)1 SplitAmong (org.btrplace.model.constraint.SplitAmong)1 Parameters (org.btrplace.scheduler.choco.Parameters)1