diff --git a/org.fortiss.af3.exploration.alg/trunk/model/moea.ecore b/org.fortiss.af3.exploration.alg/trunk/model/moea.ecore
index 09a56b93615a69a1a3730dc99e887822fc34ffbc..deaa938beee729e071e2e604add78b6a0cdb0ef6 100644
--- a/org.fortiss.af3.exploration.alg/trunk/model/moea.ecore
+++ b/org.fortiss.af3.exploration.alg/trunk/model/moea.ecore
@@ -368,5 +368,10 @@
         </eTypeArguments>
       </eGenericSuperTypes>
     </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="NoEmptyPartitionConstraint">
+      <eGenericSuperTypes eClassifier="ecore:EClass platform:/resource/org.fortiss.af3.exploration/model/exploration.ecore#//ExplorationConstraint">
+        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
+      </eGenericSuperTypes>
+    </eClassifiers>
   </eSubpackages>
 </ecore:EPackage>
diff --git a/org.fortiss.af3.exploration.alg/trunk/model/moea.genmodel b/org.fortiss.af3.exploration.alg/trunk/model/moea.genmodel
index 713399b3761f1bf97252b09b7bf47fa925558b4d..e7b653e7fd63aaec8d2fbe82b88323277751dc3a 100644
--- a/org.fortiss.af3.exploration.alg/trunk/model/moea.genmodel
+++ b/org.fortiss.af3.exploration.alg/trunk/model/moea.genmodel
@@ -118,6 +118,7 @@
       <genClasses ecoreClass="moea.ecore#//predefined/SafetyComparison">
         <genTypeParameters ecoreTypeParameter="moea.ecore#//predefined/SafetyComparison/T"/>
       </genClasses>
+      <genClasses ecoreClass="moea.ecore#//predefined/NoEmptyPartitionConstraint"/>
     </nestedGenPackages>
   </genPackages>
 </genmodel:GenModel>
diff --git a/org.fortiss.af3.exploration.alg/trunk/plugin.xml b/org.fortiss.af3.exploration.alg/trunk/plugin.xml
index 1aa145dc7f7cc1505d3bb2b7f61ba4f11eb04008..37eedf75e878ff238a6674438b802e9201975f3f 100644
--- a/org.fortiss.af3.exploration.alg/trunk/plugin.xml
+++ b/org.fortiss.af3.exploration.alg/trunk/plugin.xml
@@ -264,6 +264,12 @@
                modelElementClass="org.fortiss.af3.exploration.moea.model.predefined.EnergyMinObjective">
          </modelElementClass>
       </evaluator>
+      <evaluator
+            module="org.fortiss.af3.exploration.alg.dse.evaluator.constraint.NoEmptyPartitionConstraintEvaluator">
+         <modelElementClass
+               modelElementClass="org.fortiss.af3.exploration.model.ExplorationConstraint">
+         </modelElementClass>
+      </evaluator>
       <evaluator
             module="org.fortiss.af3.exploration.alg.dse.evaluator.objective.MappingEvaluatorObjective">
          <modelElementClass
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/.ratings
index 028a74cf75493ae601df0bcf890c01efdf1bf4cd..074416c7c05342e3157f8a312cb72dffc68d2a00 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/.ratings
@@ -1,6 +1,6 @@
 CompositeExplorationSolution.java 7a32ca49d7ae4aa4ddc83a3c70ecdcfa5b1376a0 RED
 DSEFactory.java 0a2f2cc6a197e760c1f8223339ffa5f16856b184 RED
-Explorer.java 4e23a668d0b0ad236e77eec2634efe2a0a6d0a23 RED
-ImplicitExplorationTargetFactory.java 0b10dc4e8385bbdee0217dac783203080eb723f0 RED
+Explorer.java 2194a74cbe51ca9e7dafb008dcefb51a54064dc8 RED
+ImplicitExplorationTargetFactory.java e45c6c3344b46a275e2c74b5c714900229f5f8d3 RED
 SolutionQuantification.java efd31f192c3adbf1a4434452a19eb836a17390e2 RED
 TaskMappingFactory.java 5e41df9d45e338dbcfa95bc3818ca17774951893 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java
index 123465dd6c3a02ed4715189a38b14e4f09e60d59..91cdb26b6f42e4e5e82a26f7dbd9141ec2ff7b18 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java
@@ -20,6 +20,7 @@ import static org.fortiss.tooling.common.util.LambdaUtils.filter;
 import static org.fortiss.tooling.common.util.LambdaUtils.filterType;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -68,8 +69,7 @@ public class Explorer {
 	public CompositeExplorationSolution<?> explore(DseSpecification dse,
 			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			Set<Class<? extends IExplorationEncoding>> requestedSolutions,
-			IProgressMonitor progressMonitor, boolean generateImplicitConstraints)
-			throws Exception {
+			IProgressMonitor progressMonitor, boolean generateImplicitConstraints) throws Exception {
 		validateDesignSpaceExploration(dse);
 		validateSystemModelAdapter(systemModelAdapter);
 
@@ -79,10 +79,11 @@ public class Explorer {
 		DseSpecification dseSpec = copyDSESpecification(dse, targetAssocMap);
 		ExplorationSpecification expSpec = dseSpec.getTargetSpecification();
 		// FIXME: temporally disable the the implicit constraint generation.
-		generateImplicitConstraints = false;
+		// generateImplicitConstraints = false;
 		if(generateImplicitConstraints) {
-			expSpec.getTargets().addAll(ImplicitExplorationTargetFactory.getInstance()
-					.createImplicitExplorationTargets(dseSpec, systemModelAdapter));
+			expSpec.getTargets().addAll(
+					ImplicitExplorationTargetFactory.getInstance()
+							.createImplicitExplorationTargets(dseSpec, systemModelAdapter));
 		}
 
 		// Extract external models to add them to the available input models.
@@ -104,13 +105,16 @@ public class Explorer {
 		Collection<ExplorationConstraint<?>> genConstrs =
 				filter(filterType(expSpec.getTargets(), ExplorationConstraint.class),
 						t -> (t.getExpression() == null));
+		// TODO: Reenable the constraint transformation service.
+		genConstrs = Collections.emptySet();
 		Collection<ExplorationConstraint<?>> transformedConstrs =
 				constrService.getTransformedConstraints(systemModelAdapter, genConstrs);
 		expSpec.getTargets().addAll(transformedConstrs);
 
 		// Invoke the backend in order to perform the DSE
-		IExplorerBackend<? extends IOptimizer> explorerBackend = createExplorerBackend(dseSpec,
-				expSpec, targetAssocMap, systemModelAdapter, requestedSolutions, progressMonitor);
+		IExplorerBackend<? extends IOptimizer> explorerBackend =
+				createExplorerBackend(dseSpec, expSpec, targetAssocMap, systemModelAdapter,
+						requestedSolutions, progressMonitor);
 		CompositeExplorationSolution<?> explorationResult = explorerBackend.explore();
 
 		// Print results
@@ -152,33 +156,28 @@ public class Explorer {
 	/** Validation of DSE configuration */
 	private void validateDesignSpaceExploration(DseSpecification dse) throws Exception {
 		if(dse == null) {
-			createDesignSpaceExplorationConfigurationException(
-					"No DSE configuration has been specified.");
+			createDesignSpaceExplorationConfigurationException("No DSE configuration has been specified.");
 			// Never here
 			return;
 		}
 
 		if(dse.getParameters() == null) {
-			createDesignSpaceExplorationConfigurationException(
-					"No optimizer independent parameters have been provided.");
+			createDesignSpaceExplorationConfigurationException("No optimizer independent parameters have been provided.");
 		}
 
 		if(dse.getParameters().getExecutionModel() == null) {
-			createDesignSpaceExplorationConfigurationException(
-					"No execution model has been specified.");
+			createDesignSpaceExplorationConfigurationException("No execution model has been specified.");
 		}
 
 		if(dse.getOptimizer() == null) {
-			createDesignSpaceExplorationConfigurationException(
-					"No optimizer backend has been specified.");
+			createDesignSpaceExplorationConfigurationException("No optimizer backend has been specified.");
 		}
 
 		// TODO: create a validation whether the constraints or objectives are not given
 		if(dse.getTargetSpecification() == null ||
 				dse.getTargetSpecification().getTargets() == null ||
 				dse.getTargetSpecification().getTargets().isEmpty()) {
-			createDesignSpaceExplorationConfigurationException(
-					"No Optimization goals have been provided.");
+			createDesignSpaceExplorationConfigurationException("No Optimization goals have been provided.");
 		}
 	}
 
@@ -195,29 +194,24 @@ public class Explorer {
 			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) throws Exception {
 
 		if(systemModelAdapter == null) {
-			createSystemModelAdapterConfigurationException(
-					"No DSE configuration has been specified.");
+			createSystemModelAdapterConfigurationException("No DSE configuration has been specified.");
 			return;
 		}
 
 		if(systemModelAdapter.getDeployableComponents().isEmpty()) {
-			createSystemModelAdapterConfigurationException(
-					"Component architecture does not contain any deployable components.\n\nMake sure the \"Trigger\" annotation have been defined for all components that should be deployed.");
+			createSystemModelAdapterConfigurationException("Component architecture does not contain any deployable components.\n\nMake sure the \"Trigger\" annotation have been defined for all components that should be deployed.");
 		}
 
 		if(systemModelAdapter.getDeploymentTargets().isEmpty()) {
-			createSystemModelAdapterConfigurationException(
-					"Platform architecture does not contain any deployment targets.\n\nMake sure the \"Deployment Target\" annotation has been set for all execution units that should be deployed.\n\nMaybe you selected the wrong platform architecture?");
+			createSystemModelAdapterConfigurationException("Platform architecture does not contain any deployment targets.\n\nMake sure the \"Deployment Target\" annotation has been set for all execution units that should be deployed.\n\nMaybe you selected the wrong platform architecture?");
 		}
 
 		if(systemModelAdapter.getTaskGraphs().isEmpty()) {
-			createSystemModelAdapterConfigurationException(
-					"System model does not contain any valid task graphs. All tasks in a task graph must share the same period.");
+			createSystemModelAdapterConfigurationException("System model does not contain any valid task graphs. All tasks in a task graph must share the same period.");
 		}
 
 		if(systemModelAdapter.getAcyclicTaskGraphs().isEmpty()) {
-			createSystemModelAdapterConfigurationException(
-					"System model does not contain any valid task graphs. All tasks in a task graph must share the same period.");
+			createSystemModelAdapterConfigurationException("System model does not contain any valid task graphs. All tasks in a task graph must share the same period.");
 		}
 
 		// FIXME: readd? ==>> VL Generation.
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/ImplicitExplorationTargetFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/ImplicitExplorationTargetFactory.java
index 6e2162ac8b739af9627cd8d1872b20d2103b884f..5e0cedafb0e14a9f8b6ecd67a15678423c2bdee7 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/ImplicitExplorationTargetFactory.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/ImplicitExplorationTargetFactory.java
@@ -27,6 +27,7 @@ import org.fortiss.af3.exploration.model.ExplorationConstraint;
 import org.fortiss.af3.exploration.model.ExplorationTarget;
 import org.fortiss.af3.exploration.model.time.PeriodConstraint;
 import org.fortiss.af3.exploration.moea.model.DseSpecification;
+import org.fortiss.af3.exploration.moea.model.predefined.PredefinedFactory;
 import org.fortiss.af3.exploration.util.CommonExplorationTagetModelElementFactory;
 
 /**
@@ -72,7 +73,8 @@ public class ImplicitExplorationTargetFactory {
 			DseSpecification dse, SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter)
 			throws Exception {
 		Collection<ExplorationConstraint<?>> constraints = new ArrayList<>();
-		constraints.addAll(createPeriodConstraints(systemModelAdapter));
+		// constraints.addAll(createPeriodConstraints(systemModelAdapter));
+		constraints.add(createNoEmptyPartitionConstraint());
 
 		// Reassign the ids of generated constraints. By default, they are set to 0. Each constraint
 		// needs a "unique" id for its constraint type.
@@ -85,6 +87,14 @@ public class ImplicitExplorationTargetFactory {
 		return constraints;
 	}
 
+	/**
+	 * Creates a single constraint that states a solution may not contain partitions without
+	 * assigned tasks.
+	 */
+	private static ExplorationConstraint<?> createNoEmptyPartitionConstraint() {
+		return PredefinedFactory.eINSTANCE.createNoEmptyPartitionConstraint();
+	}
+
 	/**
 	 * Creates a {@link PeriodConstraint} for each {@link TaskGraph} present in the
 	 * {@link SystemModelAdapter}.
@@ -92,9 +102,9 @@ public class ImplicitExplorationTargetFactory {
 	 * @throws ConstraintGenerationException
 	 *             if the generation of any {@link PeriodConstraint} fails.
 	 */
-	private static Collection<ExplorationConstraint<?>>
-			createPeriodConstraints(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter)
-					throws ConstraintGenerationException {
+	private static Collection<ExplorationConstraint<?>> createPeriodConstraints(
+			SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter)
+			throws ConstraintGenerationException {
 		Collection<ExplorationConstraint<?>> constraints = new ArrayList<>();
 		for(TaskGraph tg : systemModelAdapter.getTaskGraphs()) {
 			for(ITaskAdapter<?> component : tg.getTasks()) {
@@ -104,8 +114,8 @@ public class ImplicitExplorationTargetFactory {
 									component.getObject().getClass().getSimpleName() +
 									". Expected a Component.");
 				}
-				constraints.add(
-						createPeriodConstraint((Component)component.getObject(), tg.getPeriod()));
+				constraints.add(createPeriodConstraint((Component)component.getObject(),
+						tg.getPeriod()));
 			}
 		}
 		return constraints;
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings
index 737d149fb043607126cb5dd1e315b6f15a1d6d97..1a8861b9d4f2c4260cdece6385e90416335e56d1 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings
@@ -1,3 +1,3 @@
 Opt4JExplorationSolutionSet.java fd1ca946198990604ea7a521e9d0335bef4ad8e1 RED
-Opt4JExplorerBackend.java 800ec79e421755b139b34b08198aeccb4909d3a1 RED
+Opt4JExplorerBackend.java 60aa6a82a54b7fff0819591939fb91db10116bf1 RED
 Opt4JSingleExplorationSolution.java 5b9e6ccdb887605faaa4d2a8b17b8fa1350fbafd RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java
index 82dc6fc55129549319c297e68548dce891e3d5e2..000231dcd7f3a76d06567c7bb987410fa80602ba 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java
@@ -106,8 +106,7 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 			Set<Class<? extends IExplorationEncoding>> requestedSolutions,
 			IProgressMonitor progressMonitor) throws Exception {
 		// Optimizer independent configuration
-		super(dse, expSpec, targetAssocMap, systemModelAdapter, requestedSolutions,
-				progressMonitor);
+		super(dse, expSpec, targetAssocMap, systemModelAdapter, requestedSolutions, progressMonitor);
 
 		if(dse.getOptimizer() instanceof EAOptimizer) {
 			init((EAOptimizer)dse.getOptimizer());
@@ -161,8 +160,9 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 		// };
 		// modules.add(multiEvaluatorModule);
 
-		archExplorationProblemModule = new ArchitectureExplorationProblemModule(dse,
-				systemModelAdapter, requestedSolutions);
+		archExplorationProblemModule =
+				new ArchitectureExplorationProblemModule(dse, systemModelAdapter,
+						requestedSolutions);
 		modules.add(archExplorationProblemModule);
 
 		// Configure operators
@@ -193,16 +193,18 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 						.getDeploymentTargets()));
 
 		// Task instantiation
-		MutateTaskInstanceModule mutateInstanceModule = new MutateTaskInstanceModule(
-				(Collection<ITaskAdapter<?>>)(Collection<?>)systemModelAdapter
-						.getDeployableComponents());
+		MutateTaskInstanceModule mutateInstanceModule =
+				new MutateTaskInstanceModule(
+						(Collection<ITaskAdapter<?>>)(Collection<?>)systemModelAdapter
+								.getDeployableComponents());
 		// mutateInstanceModule.setMutationRateType(MutationRateType.ADAPTIVE);
 		modules.add(mutateInstanceModule);
 
 		// Task allocation
-		MutateTaskMappingModule mutateModule = new MutateTaskMappingModule(
-				(Collection<ITaskAdapter<?>>)(Collection<?>)systemModelAdapter
-						.getDeployableComponents());
+		MutateTaskMappingModule mutateModule =
+				new MutateTaskMappingModule(
+						(Collection<ITaskAdapter<?>>)(Collection<?>)systemModelAdapter
+								.getDeployableComponents());
 		// mutateModule.setMutationRateType(MutationRateType.ADAPTIVE);
 		// mutateModule.setMutationRate(0.125);
 		modules.add(mutateModule);
@@ -323,8 +325,9 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
 				curIndividual.setObjectives(origObjectives);
 			}
 
-			rval = new Opt4JExplorationSolutionSet<ArchitectureSolution>(archive, targetAssocMap,
-					archExplorationProblemModule);
+			rval =
+					new Opt4JExplorationSolutionSet<ArchitectureSolution>(archive, targetAssocMap,
+							archExplorationProblemModule);
 
 			rval.setCompletedIterations(opt4JTask.getIteration());
 		} catch(Exception e) {
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings
index 36e5d7bc48fd4097c975b8422473c9f75501acd2..f053d6c1ec66de1ac03168b5cd8d9a8b01ba3ee6 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings
@@ -1,3 +1,3 @@
-Partition.java b870fdd306818d8195b662daee9546feebb28e18 RED
+Partition.java 9cde7e1eed7eb12767b0f8f2c104afab6d64a9c1 RED
 PartitionMappingEncoding.java 45388dce4228074541b17410baabf30f9c22f858 RED
 PartitionMappingEntry.java 2f8f082e6bcd49dbe2f5ba88724850b54b20d637 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/Partition.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/Partition.java
index ef6399fc241c9ccdfec8f58b65869f4db6ce1642..89cfb87a73d3ae080a9dbe5594b48ad552f7a9f1 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/Partition.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/Partition.java
@@ -52,4 +52,10 @@ public class Partition implements IExecutionUnitAdapter<Partition>, IRequestAdap
 		// TODO No associated Object with a name at the moment.
 		return null;
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public String toString() {
+		return "Partition_" + hashCode();
+	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java
index 0bed25d2128390c1705929d594b7a5746a635200..0361b11e2019a9fa7c2535effde2de6afe02c56b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java
@@ -62,12 +62,6 @@ public abstract class ExpressionEvaluatorBase<P extends Phenotype, RT, T extends
 	 */
 	protected ExpressionEvaluatorBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
 			T explorationTarget) throws Exception {
-		if(explorationTarget.getExpression() == null) {
-			throw new Exception("The exploration target " + explorationTarget.getName() + " is" +
-					" not of the ExplorationTargetExpression. Thus, it cannot be evaluated by " +
-					getClass().getSimpleName() + ".");
-		}
-
 		this.systemModelAdapter = systemModelAdapter;
 		this.explorationTarget = explorationTarget;
 		this.expression = explorationTarget.getExpression();
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings
index 8e5cb9b8e80bdc984c10c4cb9cc7e3c69eef3abc..eaa395c52e8efeaf9ca96d72100478cca5356a6d 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings
@@ -4,5 +4,6 @@ ConstraintEvaluatorBase.java 4a0e50681708c882bf314d689e1ddce322d0cd50 RED
 DeadlineConstraintEvaluator.java 6763810616860bd149f90a653776276681ee480e RED
 IConstraintEvaluator.java bca49bbdea5e089b0d045fc356ceedcb466df55e RED
 MappingEvaluatorConstraint.java f1f44bffbef03f1650a7f026428423838b16b845 RED
+NoEmptyPartitionConstraintEvaluator.java 33f7b4215b2ada1e60474e9385150a9ea234b060 YELLOW
 PeriodConstraintEvaluator.java 05cf21be06c9ae12593f870efdf9c358efa2d97c RED
 SafetyIntegrityLevelConstraintEvaluator.java 9ad7129faaa35d89af4fced7a7121a0a142cb6f1 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/NoEmptyPartitionConstraintEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/NoEmptyPartitionConstraintEvaluator.java
new file mode 100644
index 0000000000000000000000000000000000000000..8bd2aa32242dd116a784dc251d003a94000fc832
--- /dev/null
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/NoEmptyPartitionConstraintEvaluator.java
@@ -0,0 +1,97 @@
+/*-------------------------------------------------------------------------+
+| Copyright 2018 fortiss GmbH                                              |
+|                                                                          |
+| Licensed under the Apache License, Version 2.0 (the "License");          |
+| you may not use this file except in compliance with the License.         |
+| You may obtain a copy of the License at                                  |
+|                                                                          |
+|    http://www.apache.org/licenses/LICENSE-2.0                            |
+|                                                                          |
+| Unless required by applicable law or agreed to in writing, software      |
+| distributed under the License is distributed on an "AS IS" BASIS,        |
+| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+| See the License for the specific language governing permissions and      |
+| limitations under the License.                                           |
++--------------------------------------------------------------------------*/
+package org.fortiss.af3.exploration.alg.dse.evaluator.constraint;
+
+import static java.lang.Math.pow;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.ecore.EObject;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap;
+import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
+import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter;
+import org.fortiss.af3.exploration.alg.service.IExplorationTargetEvaluator;
+import org.fortiss.af3.exploration.model.ExplorationConstraint;
+import org.fortiss.af3.exploration.moea.model.predefined.NoEmptyPartitionConstraint;
+import org.fortiss.tooling.common.util.LambdaUtils;
+import org.opt4j.core.DoubleValue;
+import org.opt4j.core.Value;
+
+import com.google.common.collect.ClassToInstanceMap;
+
+/**
+ * Adds a penalty for candidate solutions that contain empty partitions.
+ * 
+ * @author diewald
+ */
+public class NoEmptyPartitionConstraintEvaluator extends
+		ConstraintEvaluatorBase<TaskMappingEncoding<?, ?>, Double, NoEmptyPartitionConstraint> {
+	/** {@inheritDoc} */
+	@Override
+	public Value<?> evaluateGoal(TaskMappingEncoding<?, ?> phenotype,
+			FlatPhenotypeMap<Phenotype> phenotypeTypeMap,
+			ClassToInstanceMap<EObject> transformedModels) throws Exception {
+		PartitionMappingEncoding virtMapping =
+				phenotypeTypeMap.getEncoding(PartitionMappingEncoding.class);
+		assert (virtMapping != null);
+
+		Collection<Partition> emptyPartitions =
+				LambdaUtils.filter(virtMapping.getRequesters(), res -> phenotype.getRequesters(res)
+						.isEmpty());
+		return new DoubleValue(pow(10 * emptyPartitions.size(), 2));
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Collection<Class<?>> getRequiredInputTypes() {
+		Collection<Class<?>> requiredTypes = new ArrayList<>();
+		requiredTypes.add(TaskMappingEncoding.class);
+		requiredTypes.add(PartitionMappingEncoding.class);
+		return requiredTypes;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public Class<?> getPrimaryInputType() {
+		return TaskMappingEncoding.class;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public boolean validateInputs() throws Exception {
+		return true;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public boolean validateInternal(ExplorationConstraint<?> expTarget,
+			TaskMappingEncoding<?, ?> solution, Value<?> value) {
+		return value.getDouble() <= 10e-6;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public
+			IExplorationTargetEvaluator<TaskMappingEncoding<?, ?>, Double, NoEmptyPartitionConstraint>
+			createEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
+					NoEmptyPartitionConstraint explorationTarget) throws Exception {
+		return new NoEmptyPartitionConstraintEvaluator();
+	}
+}
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings
index 26142f29e2b2f091fa4aac3cd41d3201be310dd4..0341d8ab0c286f7cb99bd440a9203d2107e4a01b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings
@@ -1,5 +1,5 @@
 EnergyObjectiveEvaluator.java ad2b868aa3dce2c7708ee6cc90f357b79a4cf799 RED
 FailSilentReliabilityEvaluator.java 83211c8e2b69579c424a486cd6845bb8d1bb69fa RED
 FaultDetectionVotingReliabilityEvaluator.java 189fdfd0daed3348c510a6aeac0bd391e835c524 RED
-MappingEvaluatorObjective.java 6ca3fa4dcbaeb61b38ad1d36a318dbb9ead58831 RED
+MappingEvaluatorObjective.java 627aa735ebc2d04ed583ee68fd465d676a1008b6 RED
 ReliabilityEvaluatorBase.java 98fa54270cba25137112fe55f3551fbd8064ac28 RED
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
index a93b07f5c1f06a19d776abb02cfbd68c3cf0bd93..17a9b315ed0385a1dca2a753118cae0e5f42af2b 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java
@@ -66,10 +66,12 @@ public class MappingEvaluatorObjective extends TaskMappingEvaluator {
 
 	/** {@inheritDoc} */
 	@Override
-	public Value<?> evaluateGoal(
-			TaskMappingEncoding<ITaskAdapter<?>, TaskMappingEntry<ITaskAdapter<?>, Partition>> phenotype,
-			FlatPhenotypeMap<Phenotype> phenotypeTypeMap,
-			ClassToInstanceMap<EObject> transformedModels) throws Exception {
+	public
+			Value<?>
+			evaluateGoal(
+					TaskMappingEncoding<ITaskAdapter<?>, TaskMappingEntry<ITaskAdapter<?>, Partition>> phenotype,
+					FlatPhenotypeMap<Phenotype> phenotypeTypeMap,
+					ClassToInstanceMap<EObject> transformedModels) throws Exception {
 		mapping = phenotype;
 		virtMapping = phenotypeTypeMap.getEncoding(PartitionMappingEncoding.class);
 		assert (virtMapping != null);
@@ -110,10 +112,11 @@ public class MappingEvaluatorObjective extends TaskMappingEvaluator {
 
 	/** {@inheritDoc} */
 	@Override
-	public IExplorationTargetEvaluator<TaskMappingEncoding<ITaskAdapter<?>, TaskMappingEntry<ITaskAdapter<?>, Partition>>, Double, ExplorationTarget<Double>>
+	public
+			IExplorationTargetEvaluator<TaskMappingEncoding<ITaskAdapter<?>, TaskMappingEntry<ITaskAdapter<?>, Partition>>, Double, ExplorationTarget<Double>>
 			createEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter,
-					ExplorationTarget<Double> explorationTarget)
-					throws InstantiationException, Exception {
+					ExplorationTarget<Double> explorationTarget) throws InstantiationException,
+					Exception {
 		return new MappingEvaluatorObjective(systemModelAdapter, explorationTarget);
 	}
 }
diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/partition/PartitionTransformer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/partition/PartitionTransformer.java
index 57f0b38ee2e91fd1ad38abd07eb549a55542e97b..b3141909b0ac15837ecbfb8e4d72ab37bf75f7b2 100644
--- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/partition/PartitionTransformer.java
+++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/partition/PartitionTransformer.java
@@ -19,7 +19,6 @@ import static org.fortiss.af3.allocation.utils.AllocationModelElementFactory.cre
 import static org.fortiss.af3.allocation.utils.AllocationUtils.addAllocationEntry;
 import static org.fortiss.af3.exploration.alg.dse.modeltransformation.ITransformationModule.TransformationState.INITIALIZING;
 import static org.fortiss.af3.exploration.alg.util.TransformationUtils.getArchitectureOfAllocSuperSet;
-import static org.fortiss.af3.partition.util.PartitionModelElementFactory.createTaskToPartitionAllocationTable;
 import static org.fortiss.tooling.common.util.LambdaUtils.getFirst;
 
 import java.util.Collection;
@@ -47,7 +46,6 @@ import org.fortiss.af3.partition.util.PartitionModelElementFactory;
 import org.fortiss.af3.platform.model.PlatformArchitecture;
 import org.fortiss.af3.project.model.FileProject;
 import org.fortiss.af3.project.utils.ProjectUtils;
-import org.fortiss.af3.task.model.Task;
 import org.fortiss.af3.task.model.TaskArchitecture;
 import org.fortiss.tooling.base.model.element.IHierarchicElement;
 import org.fortiss.tooling.common.util.LambdaUtils;
@@ -79,11 +77,14 @@ public class PartitionTransformer extends TransformationModuleBase<AllocationTab
 			TransformationState state, TransformationContext context,
 			ExplorationTransformationInputs inputs, SubClassToInstanceMap<N> transformedModels,
 			EObject outputModel) {
-		platfromArchitecture = getArchitectureOfAllocSuperSet(
-				inputs.getSuperSet(PartitionToExecutionUnitAllocationEntry.class),
-				PlatformArchitecture.class);
-		taskArchitecture = getArchitectureOfAllocSuperSet(
-				inputs.getSuperSet(TaskToPartitionAllocationEntry.class), TaskArchitecture.class);
+		platfromArchitecture =
+				getArchitectureOfAllocSuperSet(
+						inputs.getSuperSet(PartitionToExecutionUnitAllocationEntry.class),
+						PlatformArchitecture.class);
+		taskArchitecture =
+				getArchitectureOfAllocSuperSet(
+						inputs.getSuperSet(TaskToPartitionAllocationEntry.class),
+						TaskArchitecture.class);
 
 		SuperSet<PartitionToExecutionUnitAllocationEntry> partToExU =
 				inputs.getSuperSet(PartitionToExecutionUnitAllocationEntry.class);
@@ -100,15 +101,16 @@ public class PartitionTransformer extends TransformationModuleBase<AllocationTab
 
 		// Create the allocations.
 		allocTableCollection = createAllocationTableCollection("Generated Allocations");
-		TaskToPartitionAllocationTable taskExUTable = createTaskToExecutionUnitAllocationTable(
-				inputs.getSuperSet(TaskToPartitionAllocationEntry.class));
-		modelContext.runAsNonDirtyingCommand(
-				() -> allocTableCollection.getContainedElements().add(taskExUTable));
+		TaskToPartitionAllocationTable taskExUTable =
+				createTaskToPartitionAllocationTable(inputs
+						.getSuperSet(TaskToPartitionAllocationEntry.class));
+		modelContext.runAsNonDirtyingCommand(() -> allocTableCollection.getContainedElements().add(
+				taskExUTable));
 		PartitionToExecutionUnitAllocationTable partExUTable =
-				createPartitionToExecutionUnitAllocationTable(
-						inputs.getSuperSet(PartitionToExecutionUnitAllocationEntry.class));
-		modelContext.runAsNonDirtyingCommand(
-				() -> allocTableCollection.getContainedElements().add(partExUTable));
+				createPartitionToExecutionUnitAllocationTable(inputs
+						.getSuperSet(PartitionToExecutionUnitAllocationEntry.class));
+		modelContext.runAsNonDirtyingCommand(() -> allocTableCollection.getContainedElements().add(
+				partExUTable));
 
 		return allocTableCollection;
 	}
@@ -116,8 +118,9 @@ public class PartitionTransformer extends TransformationModuleBase<AllocationTab
 	/** Creates a {@link PartitionArchitecture} from the entries in the given {@link SuperSet}. */
 	private void createPartitionArchitecture(SuperSet<Partition> partitions,
 			ITopLevelElement modelContext) {
-		partitionArchitecture = PartitionModelElementFactory
-				.createPartitionArchitecture("Generated Partition Architecture");
+		partitionArchitecture =
+				PartitionModelElementFactory
+						.createPartitionArchitecture("Generated Partition Architecture");
 		EList<IHierarchicElement> partitionList = partitionArchitecture.getContainedElements();
 		modelContext.runAsNonDirtyingCommand(() -> partitionList.addAll(partitions.getEntries()));
 	}
@@ -126,10 +129,11 @@ public class PartitionTransformer extends TransformationModuleBase<AllocationTab
 	 * Creates a {@link TaskToPartitionAllocationTable} from the corresponding entries in
 	 * the given {@link SuperSet}.
 	 */
-	private TaskToPartitionAllocationTable createTaskToExecutionUnitAllocationTable(
+	private TaskToPartitionAllocationTable createTaskToPartitionAllocationTable(
 			SuperSet<TaskToPartitionAllocationEntry> taskExecUnitAllocs) {
 		TaskToPartitionAllocationTable table =
-				createTaskToPartitionAllocationTable("Generated Task->Part Table");
+				org.fortiss.af3.partition.util.PartitionModelElementFactory
+						.createTaskToPartitionAllocationTable("Generated Task->Part Table");
 		table.setSourceView(taskArchitecture);
 		table.setTargetView(partitionArchitecture);
 
@@ -137,7 +141,7 @@ public class PartitionTransformer extends TransformationModuleBase<AllocationTab
 			Partition af3Partition = (Partition)entry.getTargetElement();
 			// TODO: We assume single Tasks in this place.
 			addAllocationEntry(table, TaskToPartitionAllocationEntry.class,
-					(Task)getFirst(entry.getSourceElements()).get(), af3Partition);
+					getFirst(entry.getSourceElements()).get(), af3Partition);
 		}
 		return table;
 	}
@@ -148,8 +152,9 @@ public class PartitionTransformer extends TransformationModuleBase<AllocationTab
 	 */
 	private PartitionToExecutionUnitAllocationTable createPartitionToExecutionUnitAllocationTable(
 			SuperSet<PartitionToExecutionUnitAllocationEntry> partMapping) {
-		PartitionToExecutionUnitAllocationTable table = PartitionModelElementFactory
-				.createPartitionToExecutionUnitAllocationTable("Generated Part->ExU Table");
+		PartitionToExecutionUnitAllocationTable table =
+				PartitionModelElementFactory
+						.createPartitionToExecutionUnitAllocationTable("Generated Part->ExU Table");
 		table.setSourceView(partitionArchitecture);
 		table.setTargetView(platfromArchitecture);