Skip to content
Snippets Groups Projects
Commit d1b9442e authored by Alexander Diewald's avatar Alexander Diewald
Browse files

ExpFeat: Fix the operator retireval

parent c0e19c45
No related branches found
No related tags found
No related merge requests found
Showing
with 16 additions and 95 deletions
...@@ -2,4 +2,4 @@ DseProcessProblemModule.java 4d7c04f3d386c20fca70654061d830e644d49a3f RED ...@@ -2,4 +2,4 @@ DseProcessProblemModule.java 4d7c04f3d386c20fca70654061d830e644d49a3f RED
Opt4JDseTask.java b5cb9e664e7a8fc2b5157bcdcaca740c2fa85336 RED Opt4JDseTask.java b5cb9e664e7a8fc2b5157bcdcaca740c2fa85336 RED
Opt4JDseTaskProvider.java 5e0c1b29c2a00582cb231af97c9ed293663c5e42 YELLOW Opt4JDseTaskProvider.java 5e0c1b29c2a00582cb231af97c9ed293663c5e42 YELLOW
Opt4JExplorationSolutionTransformer.java 238b3fc2f2312e2ec3f28ac75c113221683764ae RED Opt4JExplorationSolutionTransformer.java 238b3fc2f2312e2ec3f28ac75c113221683764ae RED
Opt4JExplorerBackend.java 9e90508df6778d54f72a06779821c6be8c9c4350 RED Opt4JExplorerBackend.java 317b99fc3279598e0fe14bc37b7ea3393a77bc5d RED
...@@ -203,7 +203,7 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> { ...@@ -203,7 +203,7 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
protected EvolutionaryAlgorithmModule createEAModule() { protected EvolutionaryAlgorithmModule createEAModule() {
EvolutionaryAlgorithmModule eaModule = new EvolutionaryAlgorithmModule(); EvolutionaryAlgorithmModule eaModule = new EvolutionaryAlgorithmModule();
// Fix values. // Fix values.
eaModule.setGenerations(eaParameters.getIterations()); eaModule.setGenerations(eaParameters.getIterations() * 3);
eaModule.setPopulationSize(eaParameters.getAlpha()); eaModule.setPopulationSize(eaParameters.getAlpha());
eaModule.setCrossoverRate(0.3); eaModule.setCrossoverRate(0.3);
// Derived values if not set by a user. // Derived values if not set by a user.
...@@ -214,8 +214,8 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> { ...@@ -214,8 +214,8 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> {
eaModule.setOffspringsPerGeneration(eaModule.getPopulationSize() / 5); eaModule.setOffspringsPerGeneration(eaModule.getPopulationSize() / 5);
} }
if(eaParameters.getMu() != null) { if(eaParameters.getMu() != null) {
// eaModule.setParentsPerGeneration(eaParameters.getMu()); eaModule.setParentsPerGeneration(eaParameters.getMu());
eaModule.setParentsPerGeneration(1); // eaModule.setParentsPerGeneration(1);
} else { } else {
// Support Elitism. // Support Elitism.
eaModule.setParentsPerGeneration(eaModule.getOffspringsPerGeneration() / 2); eaModule.setParentsPerGeneration(eaModule.getOffspringsPerGeneration() / 2);
......
ExplorationFeature.java bf5641e3a33e6e54108da80f13d280417f424b83 YELLOW ExplorationFeature.java 1ddc336929fa5fe0ae12f4e069084ef72610a03d YELLOW
IExplorationFeature.java 6fd0be7d2d88c319756406333a49d4a17c3b06fe RED IExplorationFeature.java 6fd0be7d2d88c319756406333a49d4a17c3b06fe RED
...@@ -287,7 +287,7 @@ public abstract class ExplorationFeature extends AbstractModule implements IExpl ...@@ -287,7 +287,7 @@ public abstract class ExplorationFeature extends AbstractModule implements IExpl
public <T extends OperatorModule<?>> Class<? extends T> public <T extends OperatorModule<?>> Class<? extends T>
getOperatorOf(TypeLiteral<? extends Genotype> genotype, Class<T> operatorType) { getOperatorOf(TypeLiteral<? extends Genotype> genotype, Class<T> operatorType) {
return (Class<? extends T>)operatorGenoMap.get(genotype).stream() return (Class<? extends T>)operatorGenoMap.get(genotype).stream()
.filter(o -> operatorType.isAssignableFrom(o.getClass())).findAny().orElse(null); .filter(o -> operatorType.isAssignableFrom(o)).findAny().orElse(null);
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
......
CrossoverAllocationTaskPartition.java 92534323f107612ae83070b0b8c5bca6a539085b YELLOW CrossoverAllocationTaskPartition.java 92534323f107612ae83070b0b8c5bca6a539085b YELLOW
CrossoverTaskPartitionMappingModule.java 8a418b020d2353953860507bc5ea480951d78a8c YELLOW CrossoverTaskPartitionMappingModule.java 8a418b020d2353953860507bc5ea480951d78a8c YELLOW
MutatePartitionBase.java 0d0a4ae3c9e4f29a1f6b22a5a9e130b0643535c3 YELLOW MutatePartitionBase.java 7db43993220fb21353d45f768941ccc56cdeaf27 YELLOW
MutatePartitionDecrement.java 0da36ac551fc31450207d199b436e87d9e3a62d6 YELLOW MutatePartitionDecrement.java 4f4080002e56e6e35873080a32040d03a8587b16 YELLOW
MutatePartitionIncrement.java 12c17c662f9a03290e03ba65ae8a2f539b0bb0cc YELLOW MutatePartitionIncrement.java 77d6bed840c1ba5ab8f1a5dd8b5a2f90bce7acbd YELLOW
MutateTaskPartitionMappingModule.java 471b2cee3b95cf438db485bf6cf528fdb997ab9b YELLOW MutateTaskPartitionMappingModule.java 471b2cee3b95cf438db485bf6cf528fdb997ab9b YELLOW
PartitionMappingModule.java d0b5611ba6a57a28ab3287ecd25ea1116356d112 YELLOW PartitionMappingModule.java d0b5611ba6a57a28ab3287ecd25ea1116356d112 YELLOW
...@@ -16,17 +16,13 @@ ...@@ -16,17 +16,13 @@
package org.fortiss.af3.exploration.alg.feature.partition.variable.operators; package org.fortiss.af3.exploration.alg.feature.partition.variable.operators;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Function; import java.util.function.Function;
import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter;
import org.fortiss.af3.exploration.alg.feature.partition.variable.PartitionMappingEncoding; import org.fortiss.af3.exploration.alg.feature.partition.variable.PartitionMappingEncoding;
import org.fortiss.af3.exploration.alg.module.common.operator.mutate.MutateBase; import org.fortiss.af3.exploration.alg.module.common.operator.mutate.MutateBase;
import com.google.inject.Inject;
/** /**
* Base class for the mutation functions operating on the Partition to ExecutionUnit mapping, e.g. * Base class for the mutation functions operating on the Partition to ExecutionUnit mapping, e.g.
* cores. * cores.
...@@ -34,21 +30,12 @@ import com.google.inject.Inject; ...@@ -34,21 +30,12 @@ import com.google.inject.Inject;
* @author diewald * @author diewald
*/ */
public abstract class MutatePartitionBase extends MutateBase<PartitionMappingEncoding> { public abstract class MutatePartitionBase extends MutateBase<PartitionMappingEncoding> {
/** Elements to which other elements may be allocated. */
private Collection<IResourceAdapter> allocationTargets = new HashSet<>();
/** Defines the rate at which mutations shall happen: Typically 1 / size of the gene. */
private double rate;
/** Constructor. */
@Inject
public MutatePartitionBase(Collection<IExecutionUnitAdapter> executionUnits) {
this.allocationTargets.addAll(executionUnits);
this.rate = 1 / allocationTargets.size();
}
/** Applies the given mutation {@link Function} to the allocation targets. */ /** Applies the given mutation {@link Function} to the allocation targets. */
protected <R> void mutate(Consumer<IResourceAdapter> manipulationFct) { protected <R> void mutate(Collection<IResourceAdapter> allocationTargets,
Consumer<IResourceAdapter> manipulationFct) {
double rate = 1 / allocationTargets.size();
for(IResourceAdapter resource : allocationTargets) { for(IResourceAdapter resource : allocationTargets) {
if(rand.nextDouble() < rate) { if(rand.nextDouble() < rate) {
manipulationFct.accept(resource); manipulationFct.accept(resource);
......
...@@ -17,14 +17,12 @@ package org.fortiss.af3.exploration.alg.feature.partition.variable.operators; ...@@ -17,14 +17,12 @@ package org.fortiss.af3.exploration.alg.feature.partition.variable.operators;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Set;
import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
import org.fortiss.af3.exploration.alg.feature.partition.variable.Partition; import org.fortiss.af3.exploration.alg.feature.partition.variable.Partition;
import org.fortiss.af3.exploration.alg.feature.partition.variable.PartitionMappingEncoding; import org.fortiss.af3.exploration.alg.feature.partition.variable.PartitionMappingEncoding;
import com.google.common.collect.Table.Cell; import com.google.common.collect.Table.Cell;
import com.google.inject.Inject;
/** /**
* Mutation operator that randomly selects resources from which to remove a random partition. The * Mutation operator that randomly selects resources from which to remove a random partition. The
...@@ -34,12 +32,6 @@ import com.google.inject.Inject; ...@@ -34,12 +32,6 @@ import com.google.inject.Inject;
*/ */
public class MutatePartitionDecrement extends MutatePartitionBase { public class MutatePartitionDecrement extends MutatePartitionBase {
/** Constructor. */
@Inject
public MutatePartitionDecrement(Set<IExecutionUnitAdapter> executionUnits) {
super(executionUnits);
}
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public void mutate(PartitionMappingEncoding genotype, double p) { public void mutate(PartitionMappingEncoding genotype, double p) {
......
...@@ -15,14 +15,10 @@ ...@@ -15,14 +15,10 @@
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
package org.fortiss.af3.exploration.alg.feature.partition.variable.operators; package org.fortiss.af3.exploration.alg.feature.partition.variable.operators;
import java.util.Set;
import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
import org.fortiss.af3.exploration.alg.feature.partition.variable.Partition; import org.fortiss.af3.exploration.alg.feature.partition.variable.Partition;
import org.fortiss.af3.exploration.alg.feature.partition.variable.PartitionMappingEncoding; import org.fortiss.af3.exploration.alg.feature.partition.variable.PartitionMappingEncoding;
import com.google.inject.Inject;
/** /**
* Mutation operator that randomly selects resources for which to create a partition. The * Mutation operator that randomly selects resources for which to create a partition. The
* rate is designed such that one resource is selected in average. * rate is designed such that one resource is selected in average.
...@@ -30,11 +26,6 @@ import com.google.inject.Inject; ...@@ -30,11 +26,6 @@ import com.google.inject.Inject;
* @author diewald * @author diewald
*/ */
public class MutatePartitionIncrement extends MutatePartitionBase { public class MutatePartitionIncrement extends MutatePartitionBase {
/** Constructor. */
@Inject
public MutatePartitionIncrement(Set<IExecutionUnitAdapter> executionUnits) {
super(executionUnits);
}
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
......
MutateAllocation.java 80035524f91edf92ebb39f195d871b47d07561e9 RED MutateAllocation.java fe88adcfeb6fda8a70cf943e4a70a32676edc806 RED
MutateRedundancy.java 71363c9eeaf8469b9e42b1bc76841f286c3a2d44 RED
MutateRedundancyDecrement.java 035e857dc85a8eb94e95a92a5753f16e3dcab010 YELLOW
MutateRedundancyIncrement.java b3f15640d93fe792559a23c2c59745d015bed880 YELLOW
MutateTasksBase.java e8a2ff7cacfc9b8474243f5033b1eab3ca81f0fe YELLOW MutateTasksBase.java e8a2ff7cacfc9b8474243f5033b1eab3ca81f0fe YELLOW
...@@ -21,14 +21,12 @@ import static org.fortiss.af3.exploration.alg.util.ExplorationAlgUtils.DSE_VALID ...@@ -21,14 +21,12 @@ import static org.fortiss.af3.exploration.alg.util.ExplorationAlgUtils.DSE_VALID
import static org.fortiss.tooling.common.util.LambdaUtils.getFirst; import static org.fortiss.tooling.common.util.LambdaUtils.getFirst;
import java.util.List; import java.util.List;
import java.util.Set;
import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
import org.fortiss.af3.exploration.alg.exception.ExplorationException; import org.fortiss.af3.exploration.alg.exception.ExplorationException;
import org.fortiss.af3.exploration.alg.feature.taskmapping.variable.TaskMappingEncodingBase; import org.fortiss.af3.exploration.alg.feature.taskmapping.variable.TaskMappingEncodingBase;
import org.fortiss.af3.exploration.alg.module.common.operator.mutate.MutateBase;
import com.google.inject.Inject;
/** /**
* Mutate operator manipulates the allocation of tasks to resources by replacing an existing * Mutate operator manipulates the allocation of tasks to resources by replacing an existing
...@@ -38,12 +36,7 @@ import com.google.inject.Inject; ...@@ -38,12 +36,7 @@ import com.google.inject.Inject;
*/ */
// FIXME(AD): Use the generic types here!!! // FIXME(AD): Use the generic types here!!!
public class MutateAllocation<M extends TaskMappingEncodingBase<ITaskAdapter, IExecutionUnitAdapter, M>> public class MutateAllocation<M extends TaskMappingEncodingBase<ITaskAdapter, IExecutionUnitAdapter, M>>
extends MutateTasksBase<M> { extends MutateBase<M> {
/** Constructs a new allocation mutation operator for a given exploration run */
@Inject
public MutateAllocation(Set<ITaskAdapter> tasks) {
super(tasks);
}
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
......
/*-------------------------------------------------------------------------+
| Copyright 2014 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.module.common.operator.mutate.mapping;
import java.util.Collection;
import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter;
import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
import org.fortiss.af3.exploration.alg.feature.taskmapping.variable.TaskMappingEncodingBase;
import org.fortiss.af3.exploration.alg.module.common.operator.mutate.MutateBase;
/**
* Base class for mutation operator defined for {@link TaskMappingEncodingBase}s.
*
* @author huang
*/
public abstract class MutateTasksBase<T extends TaskMappingEncodingBase<ITaskAdapter, IExecutionUnitAdapter, ?>>
extends MutateBase<T> {
/** {@link ITaskAdapter}s that shall be allocated. */
protected Collection<ITaskAdapter> tasks;
/** Constructor. */
protected MutateTasksBase(Collection<ITaskAdapter> tasks) {
this.tasks = tasks;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment