
org.xcsp.modeler.definitions.IObj Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xcsp3-tools Show documentation
Show all versions of xcsp3-tools Show documentation
Java Tools for parsing XCSP3 instances, compiling JvCSP3 models, and checking solutions. For more information about XCSP3, follow www.xcsp.org
The newest version!
package org.xcsp.modeler.definitions;
import static org.xcsp.modeler.definitions.IRootForCtrAndObj.map;
import java.util.AbstractMap.SimpleEntry;
import java.util.Map;
import org.xcsp.common.IVar;
import org.xcsp.common.Types.TypeObjective;
import org.xcsp.common.predicates.XNode;
public interface IObj extends IRootForCtrAndObj {
String MINIMIZE = "minimize";
String MAXIMIZE = "maximize";
String FUNCTION = ICtr.FUNCTION;
String TYPE = "type";
String LIST = ICtr.LIST;
String COEFFS = ICtr.COEFFS;
public interface IObjFunctional extends IObj {
public static IObjFunctional buildFrom(IVar[] scope, boolean minimize, XNode tree) {
return new IObjFunctional() {
@Override
public Map mapXCSP() {
return map(SCOPE, scope, MINIMIZE, minimize, FUNCTION, tree);
}
};
}
@Override
default DefXCSP defXCSP() {
Map map = mapXCSP();
DefXCSP def = def((Boolean) map.get(MINIMIZE) ? MINIMIZE : MAXIMIZE);
return def.add(FUNCTION);
}
}
public interface IObjSpecialized extends IObj {
public static IObjSpecialized buildFrom(IVar[] scope, boolean minimize, TypeObjective type, String list, String coeffs) {
return new IObjSpecialized() {
@Override
public Map mapXCSP() {
return map(SCOPE, scope, MINIMIZE, minimize, TYPE, type, LIST, list, COEFFS, coeffs);
}
};
}
@Override
default DefXCSP defXCSP() {
Map map = mapXCSP();
DefXCSP def = def((Boolean) map.get(MINIMIZE) ? MINIMIZE : MAXIMIZE);
if (map.containsKey(TYPE)) {
String t = ((TypeObjective) map.get(TYPE)).name().toLowerCase();
def.attributes.add(new SimpleEntry<>(TYPE, t.equals("nvalues") ? "nValues" : t));
}
return def.add(LIST, COEFFS);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy