private IntegerVariable createFeatureVariable(Feature feature) { String id = feature.getId(); // an unbound feature has cardinality [0..1], // a selected feature has cardinality [1..1], // a deselected feature has cardinality [0..0] int minCardinality = (FeatureState.SELECTED.equals(feature.getConfigurationState())) ? 1 : 0; int maxCardinality = (FeatureState.DESELECTED.equals(feature.getConfigurationState())) ? 0 : 1; log.debug( "Create IntegerVariable for '" + id + "' [" + minCardinality + "," + maxCardinality + "]."); IntegerVariable intNodeVariable = Choco.makeIntVar(id, minCardinality, maxCardinality); getModel().addVariable(intNodeVariable); nodeVariables.put(id, intNodeVariable); return intNodeVariable; }