From e11bce7ad3e803e80883499fec0ad6e4540ffe43 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Tue, 30 Jun 2020 18:03:48 +0200 Subject: Add modified VIATRA-DSE version --- .../impl/NoRuleActivationsHardObjective.java | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/objectives/impl/NoRuleActivationsHardObjective.java (limited to 'Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/objectives/impl/NoRuleActivationsHardObjective.java') diff --git a/Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/objectives/impl/NoRuleActivationsHardObjective.java b/Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/objectives/impl/NoRuleActivationsHardObjective.java new file mode 100644 index 00000000..756d94ec --- /dev/null +++ b/Solvers/VIATRA-Solver/org.eclipse.viatra.dse/src/org/eclipse/viatra/dse/objectives/impl/NoRuleActivationsHardObjective.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright (c) 2010-2015, Andras Szabolcs Nagy and Daniel Varro + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-v20.html. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +package org.eclipse.viatra.dse.objectives.impl; + +import org.eclipse.viatra.dse.base.ThreadContext; +import org.eclipse.viatra.dse.objectives.IObjective; + +/** + * This hard objective is satisfied if there are no rule activations from the current state (returning 1 in this case). + * + * @author Andras Szabolcs Nagy + * + */ +public class NoRuleActivationsHardObjective extends BaseObjective { + + protected static final String DEFAULT_NAME = "NoMoreActivationHardObjective"; + private ThreadContext context; + + public NoRuleActivationsHardObjective(String name) { + super(name); + } + + public NoRuleActivationsHardObjective() { + this(DEFAULT_NAME); + } + + @Override + public Double getFitness(ThreadContext context) { + return 0d; + } + + @Override + public void init(ThreadContext context) { + super.init(context); + this.context = context; + } + + @Override + public IObjective createNew() { + return new NoRuleActivationsHardObjective(name); + } + + @Override + public boolean isHardObjective() { + return true; + } + + @Override + public boolean satisifiesHardObjective(Double fitness) { + return context.getConflictSet().getNextActivations().isEmpty(); + } + +} -- cgit v1.2.3-54-g00ecf