All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.chocosolver.solver.search.loop.move.MoveBinaryDDS Maven / Gradle / Ivy

The newest version!
/*
 * This file is part of choco-solver, http://choco-solver.org/
 *
 * Copyright (c) 2024, IMT Atlantique. All rights reserved.
 *
 * Licensed under the BSD 4-clause license.
 *
 * See LICENSE file in the project root for full license information.
 */
package org.chocosolver.solver.search.loop.move;

import org.chocosolver.memory.IEnvironment;
import org.chocosolver.solver.Solver;
import org.chocosolver.solver.search.strategy.decision.Decision;
import org.chocosolver.solver.search.strategy.strategy.AbstractStrategy;

/**
 * A move dedicated to run an Depth-bounded Discrepancy Search[1] (DDS) with binary decisions.
 * 

* [1]:T. Walsh, Depth-bounded Discrepancy Search, IJCAI-97. *

*

* Note that the depth is not maintained since it is useful only when max discrepancy is greater than max depth, * which should not happen. * Created by cprudhom on 07/10/15. * Project: choco. * @author Charles Prud'homme * @since 3.3.1 */ public class MoveBinaryDDS extends MoveBinaryLDS { /** * Create a DFS with binary decisions * * @param strategy how (binary) decisions are selected * @param discrepancy maximum discrepancy * @param environment backtracking environment */ public MoveBinaryDDS(AbstractStrategy strategy, int discrepancy, IEnvironment environment) { super(strategy, discrepancy, environment); } @Override public boolean extend(Solver solver) { boolean extended = false; Decision current = strategy.getDecision(); if (current != null) { // null means there is no more decision solver.getDecisionPath().pushDecision(current); solver.getEnvironment().worldPush(); if (dis.get() == 1) { solver.getDecisionPath().getLastDecision().buildNext(); } dis.add(-1); extended = true; } return extended; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy