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

DI: Introduce a service interface for ExploraionModules.

parent 02b545d7
No related branches found
No related tags found
1 merge request!2Dependency injection
...@@ -6,6 +6,7 @@ IExplorationContraintTransformationModule.java 1d3560401275f719e2b9901d1639a6be6 ...@@ -6,6 +6,7 @@ IExplorationContraintTransformationModule.java 1d3560401275f719e2b9901d1639a6be6
IExplorationEncoding.java f58adbcf840af521333c2777f50041a60548bff3 RED IExplorationEncoding.java f58adbcf840af521333c2777f50041a60548bff3 RED
IExplorationEvaluatationService.java b4d242fb3d16796e98db31dd8db50aa4d003d49f RED IExplorationEvaluatationService.java b4d242fb3d16796e98db31dd8db50aa4d003d49f RED
IExplorationExtension.java c2a148e18c580d2432357e93da45e7bf7df8eb0c RED IExplorationExtension.java c2a148e18c580d2432357e93da45e7bf7df8eb0c RED
IExplorationModuleService.java 9280ae46ce9918c3b58e2f8189535707ac232c1c RED
IExplorationRepairService.java 9fdbc6c62436e32f1ebc7f3e6c43517199271f32 RED IExplorationRepairService.java 9fdbc6c62436e32f1ebc7f3e6c43517199271f32 RED
IExplorationService.java 29252f52f28fcd036272bbb05dcd48897ee33dfd RED IExplorationService.java 29252f52f28fcd036272bbb05dcd48897ee33dfd RED
IExplorationTargetEvaluator.java 99c27a053a123462b8a4faadc9c3530fe6bc0c67 RED IExplorationTargetEvaluator.java 99c27a053a123462b8a4faadc9c3530fe6bc0c67 RED
......
/*-------------------------------------------------------------------------+
| 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.service;
import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
import org.opt4j.core.Genotype;
import org.opt4j.core.optimizer.Operator;
import org.opt4j.core.problem.Creator;
import org.opt4j.core.problem.Decoder;
import org.opt4j.core.problem.Evaluator;
import com.google.inject.AbstractModule;
/**
* Service for adding Exploration Modules to the DSE. The define the concrete problems that shall
* be solved by the DSE process. Modules registered with this service are known to the DSE and
* can be selected by users to define a DSE process. The Modules registered here are not defining a
* a concrete DSE process, just the concrete problems.
*
* Exploration modules can be categorized into three classes: Variable definitions, Problem
* statements and transformations, and Evaluators (solution metrics). The variable definitions
* consist of a {@link Genotype}s (variables), {@link Operator}s (modify variables), and
* {@link Creator}s (variable initialization). Problem statements transform {@link Genotype}s into
* evaluable solutions implemented by {@link Decoder}s that produce {@link Phenotype}s.
* {@link Evaluator}s
* rate {@link Phenotype}s such that the quality of a solution can be quantified.
*
* The complete DSE process is based on DI: each of the elements composing exploration modules have
* to be implemented as Guice {@link AbstractModule}s.
*
* @author diewald
*/
public interface IExplorationModuleService extends IExplorationService {
/**
* Registers an optimization variable ({@code genotype}) with the DSE, along with its
* initializer ({@code creator}) and modificator ({@code operator}).
*
* @param genotype
* optimization variable.
* @param creator
* initializes the opt. variable.
* @param operator
* modifications applied during the process iterations.
*/
<G extends Genotype> void
registerVariable(G genotype, Creator<G> creator, Operator<G> operator);
/**
* Registers a problem definition with the DSE process. The {@code phenotype} is equivalent to
* a candidate solution that is produced by the given {@code decoder}.
*
* @param phenotype
* candidate solution.
* @param decoder
* transforms variables (and/or other inputs) to candidate solutions.
*/
<P extends Phenotype> void registerProblem(P phenotype, Decoder<Genotype, P> decoder);
/**
* Registers the given {@code evaluator} to quantifies the quality of a solution by some metric.
*
* @param evaluator
* applies some metric to a candidate solution.
*/
void registerEvaluator(Evaluator<Phenotype> evaluator);
}
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