Package util.iterators

Examples of util.iterators.DisposableValueIterator


    }

    @Override
    public DisposableValueIterator getValueIterator() {
        if (_viterator == null || !_viterator.isReusable()) {
            _viterator = new DisposableValueIterator() {

                boolean next;

                @Override
                public void bottomUpInit() {
View Full Code Here


        return domain.cardinality();
    }

    public DisposableValueIterator getValueIterator() {
        if (_viterator == null || !_viterator.isReusable()) {
            _viterator = new DisposableValueIterator() {

                int value;

                @Override
                public void bottomUpInit() {
View Full Code Here

    @Override
    public String toString() {

        StringBuilder bf = new StringBuilder();
        bf.append("[");
        DisposableValueIterator it = getValueIterator();
        while (it.hasNext()) {
            bf.append(" ").append(it.next());
        }
        it.dispose();
        bf.append("]");
        return bf.toString();
    }
View Full Code Here

        return lbidx.get() + ubidx.get() + 2;
    }

    public DisposableValueIterator getValueIterator() {
        if (_viterator == null || !_viterator.isReusable()) {
            _viterator = new DisposableValueIterator() {

                int lbi;
                int clbi;
                int ubi;
                int cubi;
View Full Code Here

    @Override
    public String toString() {

        StringBuilder bf = new StringBuilder();
        bf.append("[");
        DisposableValueIterator it = getValueIterator();
        while (it.hasNext()) {
            bf.append(" ").append(it.next());
        }
        it.dispose();
        bf.append("]");
        return bf.toString();
    }
View Full Code Here

    /**
     * Iterate over removed values to explain the objective variable state
     */
    private void readAntiDomain() {
        AntiDomain adObj = mExplanationEngine.getRemovedValues(objective);
        DisposableValueIterator it = adObj.getValueIterator();
        clusters.add(0);
        // 2'. compute bounds to avoid explaining the whole domain
        boolean ismax = om.getPolicy() == ResolutionPolicy.MAXIMIZE;
        int far, near;
        if (ismax) {
            far = UB;
            near = objective.getValue() + 1;
            if (far == objective.getValue()) {
                return;
            }
        } else {
            far = LB;
            near = objective.getValue() - 1;
            if (far == objective.getValue()) {
                return;
            }
        }


        int value;
        if (ismax) {
            // explain why obj cannot take a smaller value: from far to near
            if (it.hasNext()) {
                do {
                    value = it.next();
                } while (it.hasNext() && (value < near || value > far)); // skip {LBs} and {UBs before init propag}
                do {
                    explainValue(value);
                } while (it.hasNext() && (value = it.next()) >= near);
            }
        } else {
            // explain why obj cannot take a smaller value: from far to near
            if (it.hasNext()) {
                do {
                    value = it.next();
                } while (it.hasNext() && value < far);// skip {LBs before init propag}
                do {
                    explainValue(value);
                } while (it.hasNext() && (value = it.next()) <= near);
            }
        }
        it.dispose();
    }
View Full Code Here

            assert vars[currentVar] == variable;
        }
        bests.clear();
        double bestImpact = 1.0;
        if (variable.hasEnumeratedDomain()) {
            DisposableValueIterator it = variable.getValueIterator(true);
            int o = offsets[currentVar];
            while (it.hasNext()) {
                int val = it.next();
                double impact = Ilabel[currentVar][val - o];
                if (impact < bestImpact) {
                    bests.clear();
                    bests.add(val);
                    bestImpact = impact;
                } else if (impact == bestImpact) {
                    bests.add(val);
                }
            }
            it.dispose();

            currentVal = bests.get(random.nextInt(bests.size()));
        } else {
            int lb = variable.getLB();
            int ub = variable.getUB();
View Full Code Here

                Ilabel[i] = new double[v.hasEnumeratedDomain() ? dsz : 1];
                offsets[i] = offset;

                if (v.hasEnumeratedDomain()) {
                    if (v.getDomainSize() < split) { // try each value
                        DisposableValueIterator it = v.getValueIterator(true);
                        while (it.hasNext()) {
                            if (System.currentTimeMillis() > tl) {
                                break loop;
                            }
                            int a = it.next();
                            double im = computeImpact(v, a, before);
                            Ilabel[i][a - offset] = im;
                        }
                        it.dispose();
                    } else { // estimate per subdomains
                        int step = 0;
                        int size = dsz / split;
                        DisposableValueIterator it = v.getValueIterator(true);
                        while (it.hasNext()) {
                            if (System.currentTimeMillis() > tl) {
                                break loop;
                            }
                            int a = it.next();
                            double im;
                            if (step % size == 0) {
                                im = computeImpact(v, a, before);
                            } else {
                                im = Ilabel[i][a - 1 - offset];
                            }
                            Ilabel[i][a - offset] = im;
                            step++;
                        }
                        it.dispose();
                    }
                } else {
                    if (System.currentTimeMillis() > tl) {
                        break;
                    }
View Full Code Here

     */
    protected double computeImpact(int idx) {
        IntVar var = vars[idx];
        if (var.hasEnumeratedDomain()) {
            int of = offsets[idx];
            DisposableValueIterator it = var.getValueIterator(true);
            double impact = 0.0;
            while (it.hasNext()) {
                int val = it.next();
                impact += Ilabel[idx][val - of];
            }
            it.dispose();
            return impact - var.getDomainSize();
        } else {
            return Ilabel[idx][0] - var.getDomainSize();
        }
    }
View Full Code Here

                int dsz = v.getDomainSize();
                if (!v.isInstantiated()) { // if the variable is not instantiated
                    int offset = v.getLB();
                    if (v.hasEnumeratedDomain()) {
                        if (v.getDomainSize() < split) { // try each value
                            DisposableValueIterator it = v.getValueIterator(true);
                            while (it.hasNext()) {
                                int a = it.next();
                                double im = computeImpact(v, a, before);
                                updateImpact(im, i, a);
                            }
                            it.dispose();
                        } else { // estimate per subdomains
                            int step = 0;
                            int size = dsz / split;
                            DisposableValueIterator it = v.getValueIterator(true);
                            while (it.hasNext()) {
                                int a = it.next();
                                double im;
                                if (step % size == 0) {
                                    im = computeImpact(v, a, before);
                                } else {
                                    im = Ilabel[i][a - 1 - offset];
                                }
                                updateImpact(im, i, a);
                                step++;
                            }
                            it.dispose();
                        }
                    } else {
                        // A. choose 3 values in the domain to have an estimation of the impact
                        double i1 = computeImpact(v, v.getLB(), before);
                        double i2 = computeImpact(v, v.getUB(), before);
View Full Code Here

TOP

Related Classes of util.iterators.DisposableValueIterator

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.