All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.dakusui.jcunit8.factorspace.ParameterSpace Maven / Gradle / Ivy

The newest version!
package com.github.dakusui.jcunit8.factorspace;

import com.github.dakusui.jcunit.core.tuples.Tuple;

import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

import static java.lang.String.format;
import static java.util.stream.Collectors.toList;

public interface ParameterSpace {
  List getParameterNames();

  

Parameter

getParameter(String name); List getConstraints(); default Tuple encodeTuple(Tuple tuple) { Tuple.Builder builder = Tuple.builder(); getParameterNames().forEach( each -> getParameter(each).decomposeValue(tuple.get(each)).ifPresent(builder::putAll) ); return builder.build(); } static List encodeSeedTuples(ParameterSpace parameterSpace, List seeds) { return seeds.stream( ).map( parameterSpace::encodeTuple ).collect( toList() ); } class Builder { List parameters = new LinkedList<>(); List constraints = new LinkedList<>(); public Builder addParameter(Parameter parameter) { this.parameters.add(parameter); return this; } public Builder addAllParameters(Collection parameters) { parameters.forEach(Builder.this::addParameter); return this; } public Builder addConstraint(Constraint constraint) { this.constraints.add(constraint); return this; } public Builder addAllConstraints(Collection constraints) { constraints.forEach(Builder.this::addConstraint); return this; } public ParameterSpace build() { return new ParameterSpace() { @Override public List getParameterNames() { return parameters.stream().map(Parameter::getName).collect(toList()); } @SuppressWarnings("unchecked") @Override public

Parameter

getParameter(String name) { return (Parameter

) (parameters.stream( ).filter( parameter -> parameter.getName().equals(name) ).findFirst( ).orElseThrow( () -> new RuntimeException(format( "Parameter '%s' was requested but not found. Existing parameters are %s", name, getParameterNames() )) )); } @Override public List getConstraints() { return Collections.unmodifiableList(constraints); } @Override public String toString() { return format("parameters:%s,constraints:%s", parameters, constraints); } }; } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy