Skip to content
Snippets Groups Projects
Commit c9ec95e8 authored by Bernhard Johannes Berger's avatar Bernhard Johannes Berger
Browse files

Cleaned up density package.

parent 221fd0cf
No related branches found
No related tags found
No related merge requests found
Showing
with 82 additions and 16 deletions
package de.evoal.approximative.density.ea.fitness;
import de.evoal.approximative.density.model.DensityData2;
import de.evoal.approximative.density.model.GaussianDensityData;
import lombok.extern.slf4j.Slf4j;
import javax.enterprise.context.Dependent;
......@@ -8,9 +8,9 @@ import javax.inject.Named;
@Dependent
@Slf4j
@Named("density2")
public class Density2BasedFitness extends DensityBasedFitness {
public Density2BasedFitness() {
super(DensityData2::new);
@Named("gaussian-density")
public class GaussianBasedDensityFitness extends DensityBasedFitness {
public GaussianBasedDensityFitness() {
super(GaussianDensityData::new);
}
}
package de.evoal.approximative.density.ea.fitness;
import de.evoal.approximative.density.model.DensityData1;
import de.evoal.approximative.density.model.KernelDensityData;
import lombok.extern.slf4j.Slf4j;
import javax.enterprise.context.Dependent;
......@@ -8,9 +8,9 @@ import javax.inject.Named;
@Dependent
@Slf4j
@Named("density1")
public class Density1BasedFitness extends DensityBasedFitness {
public Density1BasedFitness() {
super(DensityData1::new);
@Named("kernel-density")
public class KernelBasedDensityFitness extends DensityBasedFitness {
public KernelBasedDensityFitness() {
super(KernelDensityData::new);
}
}
......@@ -3,7 +3,7 @@ package de.evoal.approximative.density.ea.surrogate.gof;
import de.evoal.core.api.properties.PropertiesPair;
import de.evoal.core.api.properties.stream.PropertiesBasedPropertiesPairStreamSupplier;
import de.evoal.core.api.properties.stream.PropertiesPairStreamSupplier;
import de.evoal.approximative.density.model.DensityData2;
import de.evoal.approximative.density.model.GaussianDensityData;
import lombok.extern.slf4j.Slf4j;
import smile.stat.distribution.GaussianDistribution;
......@@ -17,12 +17,12 @@ import java.util.function.Function;
* and adds them to the pre-calculated data.
*/
@Dependent
@Named("density-estimation-2")
@Named("gaussian-density-estimation")
@Slf4j
public class DensityEstimation2 extends AbstractDensityEstimation {
public class GaussianDensityEstimation extends AbstractDensityEstimation {
@Override
protected DensityData2 calculateDensityData(final Function<PropertiesPair, Double> mapper) {
protected GaussianDensityData calculateDensityData(final Function<PropertiesPair, Double> mapper) {
final PropertiesPairStreamSupplier supplier = new PropertiesBasedPropertiesPairStreamSupplier(trainingData, sourcePropertiesSpec, targetPropertiesSpec);
final double [] data = supplier.get()
.mapToDouble(pair -> mapper.apply(pair))
......@@ -30,6 +30,6 @@ public class DensityEstimation2 extends AbstractDensityEstimation {
final GaussianDistribution distribution = GaussianDistribution.fit(data);
return new DensityData2(distribution);
return new GaussianDensityData(distribution);
}
}
package de.evoal.approximative.density.ea.surrogate.gof;
import de.evoal.approximative.density.model.DensityData;
import de.evoal.approximative.density.model.DensityData1;
import de.evoal.approximative.density.model.KernelDensityData;
import de.evoal.core.api.properties.PropertiesPair;
import de.evoal.core.api.properties.stream.PropertiesBasedPropertiesPairStreamSupplier;
import de.evoal.core.api.properties.stream.PropertiesPairStreamSupplier;
import de.evoal.surrogate.api.SurrogateInformationCalculator;
import lombok.extern.slf4j.Slf4j;
import javax.enterprise.context.Dependent;
......@@ -18,9 +17,9 @@ import java.util.function.Function;
* and adds them to the pre-calculated data.
*/
@Dependent
@Named("density-estimation-1")
@Named("kernel-density-estimation")
@Slf4j
public class DensityEstimation1 extends AbstractDensityEstimation {
public class KernelDensityEstimation extends AbstractDensityEstimation {
@Override
protected DensityData calculateDensityData(final Function<PropertiesPair, Double> mapper) {
......@@ -29,6 +28,6 @@ public class DensityEstimation1 extends AbstractDensityEstimation {
.mapToDouble(pair -> mapper.apply(pair))
.toArray();
return new DensityData1(bandwidth, data);
return new KernelDensityData(bandwidth, data);
}
}
......@@ -9,15 +9,15 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class DensityData2 implements DensityData {
public class GaussianDensityData implements DensityData {
private final GaussianDistribution distribution;
private CustomKernelDensity density;
public DensityData2(final GaussianDistribution distribution) {
public GaussianDensityData(final GaussianDistribution distribution) {
this.distribution = distribution;
}
public DensityData2(final PartialFunctionConfiguration configuration, final String propertyName) {
public GaussianDensityData(final PartialFunctionConfiguration configuration, final String propertyName) {
final Map<String, Object> parameterMap = toMap(configuration.getOutputParameters().get(propertyName));
double mu = (double) parameterMap.get("density-mu");
......
......@@ -8,17 +8,17 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class DensityData1 implements DensityData {
public class KernelDensityData implements DensityData {
private final double [] trainingData;
private final double bandwidth;
private KernelDensity density;
public DensityData1(final double bandwidth, final double [] trainingData) {
public KernelDensityData(final double bandwidth, final double [] trainingData) {
this.bandwidth = bandwidth;
this.trainingData = trainingData;
}
public DensityData1(final PartialFunctionConfiguration configuration, final String propertyName) {
public KernelDensityData(final PartialFunctionConfiguration configuration, final String propertyName) {
final Map<String, Object> parameterMap = toMap(configuration.getOutputParameters().get(propertyName));
bandwidth = (double) parameterMap.get("density-bandwidth");
......
/**
* Base type for density-based fitness value handling.
*/
abstract type density extends 'decorated-fitness-function' {
/**
* Which probability calculation should be used (source-based, target-based, both).
*/
kind : string;
/**
* Exponent for the formula.
*/
exponent : float;
/**
* Exponent for the formula.
*/
'root-exponent' : float;
}
type 'kernel-density' extends density {}
type 'gaussian-density' extends density {}
\ No newline at end of file
/**
* Measures density information using kernel density.
*
* @param bandwith Width for density calculation.
*/
def void 'kernel-density-estimation'(float bandwidth);
/**
* Measures density information using a gaussian kernel.
*
* @param bandwith Width for density calculation.
*/
def void 'gaussian-density-estimation'(float bandwidth);
\ No newline at end of file
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