Package solver.variables

Examples of solver.variables.IntVar


        boolean instSupport = false;
        for (int value = val.getLB(); value <= val.getUB(); value = val.nextValue(value)) {
            int min = 0;
            int max = 0;
            for (int i = 0; i < n; i++) {
                IntVar v = vars[i];
                if (v.contains(value)) {
                    max++;
                    if (v.isInstantiated()) {
                        min++;
                    }
                }
            }
            if (card.getLB() <= max && card.getUB() >= min) {
View Full Code Here


            for (int i = 0; i < size; i++) {
                this.vars[i].duplicate(solver, identitymap);
                aVars[i] = (IntVar) identitymap.get(this.vars[i]);
            }
            this.vars[size - 1].duplicate(solver, identitymap);
            IntVar aVar1 = (IntVar) identitymap.get(this.vars[size - 1]);
            this.vars[size].duplicate(solver, identitymap);
            IntVar aVar2 = (IntVar) identitymap.get(this.vars[size]);
            identitymap.put(this, new PropCountVar(aVars, aVar2, aVar1));
        }
    }
View Full Code Here

    public void explain(Deduction d, Explanation e) {
        e.add(solver.getExplainer().getPropagatorActivation(this));
        e.add(this);
        if (d != null && d.getmType() == Deduction.Type.ValRem) {
            ValueRemoval vr = (ValueRemoval) d;
            IntVar var = (IntVar) vr.getVar();
            int val = vr.getVal();
            // 1. find the pos of var in vars
            boolean ispos;
            if (pos < (l / 2)) {
                int i;
                for (i = 0; i < pos && vars[i].getId() != var.getId(); i++) {
                }
                ispos = i < pos;
            } else {
                int i;
                for (i = pos; i < l && vars[i].getId() != var.getId(); i++) {
                }
                ispos = i == l;
            }

            if (val < var.getLB()) { // explain LB
                int i = 0;
                for (; i < pos; i++) { // first the positive coefficients
                    if (vars[i] != var) {
                        vars[i].explain(ispos ? VariableState.UB : VariableState.LB, e);
                    }
                }
                for (; i < l; i++) { // then the negative ones
                    if (vars[i] != var) {
                        vars[i].explain(ispos ? VariableState.LB : VariableState.UB, e);
                    }
                }
            } else if (val > var.getUB()) { // explain UB
                int i = 0;
                for (; i < pos; i++) { // first the positive coefficients
                    if (vars[i] != var) {
                        vars[i].explain(ispos ? VariableState.LB : VariableState.UB, e);
                    }
View Full Code Here

    }

    public void pruningPhase() throws ContradictionException {
        for (int i = 0; i < futureVars.size(); i++) {
            int vIdx = futureVars.get(i);
            IntVar v = vars[vIdx];
            DisposableValueIterator it3 = v.getValueIterator(true);
            int left = Integer.MIN_VALUE;
            int right = left;
            try {
                while (it3.hasNext()) {
                    int val = it3.next();
                    if (!gacValues[vIdx].get(val - offsets[vIdx])) {
                        if (val == right + 1) {
                            right = val;
                        } else {
                            v.removeInterval(left, right, this);
                            left = right = val;
                        }
                        //                        v.removeVal(val, this, false);
                    }
                }
                v.removeInterval(left, right, this);
            } finally {
                it3.dispose();
            }
        }
    }
View Full Code Here

  }

    public static Constraint[] reformulate(IntVar[] vars, IntVar[] card, Solver solver) {
        List<Constraint> cstrs = new ArrayList<Constraint>();
        for (int i = 0; i < card.length; i++) {
            IntVar cste = VF.fixed(i, solver);
            BoolVar[] bs = VF.boolArray("b_" + i, vars.length, solver);
            for (int j = 0; j < vars.length; j++) {
                Constraint cs = LCF.ifThenElse(bs[j], ICF.arithm(vars[j], "=", cste), ICF.arithm(vars[j], "!=", cste));
                cstrs.add(cs);
            }
View Full Code Here

        for (int i = 0; i < this.vars.length; i++) {
            idms[i] = this.vars[i].monitorDelta(this);
        }
        n = variables.length;
        map = new TIntIntHashMap();
        IntVar v;
        int ub;
        int idx = n;
        for (int i = 0; i < n; i++) {
            v = vars[i];
            ub = v.getUB();
            for (int j = v.getLB(); j <= ub; j = v.nextValue(j)) {
                if (!map.containsKey(j)) {
                    map.put(j, idx);
                    idx++;
                }
            }
View Full Code Here

            digraph.getSuccOf(i).clear();
            digraph.getPredOf(i).clear();
        }
        free.set(0, n2);
        int j, k, ub;
        IntVar v;
        for (int i = 0; i < n2 + 2; i++) {
            digraph.removeNode(i);
        }
        for (int i = 0; i < n; i++) {
            v = vars[i];
            ub = v.getUB();
            for (k = v.getLB(); k <= ub; k = v.nextValue(k)) {
                j = map.get(k);
                digraph.addArc(i, j);
            }
        }
    }
View Full Code Here

    }

    private void filter() throws ContradictionException {
        buildSCC();
        int j, ub;
        IntVar v;
        for (int i = 0; i < n; i++) {
            v = vars[i];
            ub = v.getUB();
            for (int k = v.getLB(); k <= ub; k = v.nextValue(k)) {
                j = map.get(k);
                if (nodeSCC[i] != nodeSCC[j]) {
                    if (digraph.getPredOf(i).getFirstElement() == j) {
                        v.instantiateTo(k, aCause);
                    } else {
                        v.removeValue(k, aCause);
                        digraph.removeArc(i, j);
                    }
                }
            }
            if (!v.hasEnumeratedDomain()) {
                ub = v.getUB();
                for (int k = v.getLB(); k <= ub; k = v.nextValue(k)) {
                    j = map.get(k);
                    if (digraph.arcExists(i, j) || digraph.arcExists(j, i)) {
                        break;
                    } else {
                        v.removeValue(k, aCause);
                    }
                }
                int lb = v.getLB();
                for (int k = ub; k >= lb; k = v.previousValue(k)) {
                    j = map.get(k);
                    if (digraph.arcExists(i, j) || digraph.arcExists(j, i)) {
                        break;
                    } else {
                        v.removeValue(k, aCause);
                    }
                }
            }
        }
    }
View Full Code Here

            for (int i = 0; i < size; i++) {
                this.vars[i].duplicate(solver, identitymap);
                aVars[i] = (IntVar) identitymap.get(this.vars[i]);
            }
            this.vars[size].duplicate(solver, identitymap);
            IntVar M = (IntVar) identitymap.get(this.vars[size]);
            identitymap.put(this, new PropMax(aVars, M));
        }
    }
View Full Code Here

    // to fix determinism in the construction, we iterate over the original array of variables
    int b = 0, e = map.size();
    IntVar[] tmpV = new IntVar[e];
    int[] tmpC = new int[e];
    for (int i = 0; i < vars.length; i++) {
      IntVar key = vars[i];
      int coeff = map.get(key);
      if (coeff > 0) {
        tmpV[b] = key;
        tmpC[b++] = coeff;
      } else if (coeff < 0) {
View Full Code Here

TOP

Related Classes of solver.variables.IntVar

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.