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

io.github.ericmedvet.mrsim2d.buildable.builders.OutcomeFunctions Maven / Gradle / Ivy

The newest version!
/*-
 * ========================LICENSE_START=================================
 * mrsim2d-buildable
 * %%
 * Copyright (C) 2020 - 2024 Eric Medvet
 * %%
 * 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.
 * =========================LICENSE_END==================================
 */
package io.github.ericmedvet.mrsim2d.buildable.builders;

import io.github.ericmedvet.jnb.core.Discoverable;
import io.github.ericmedvet.jnb.core.Param;
import io.github.ericmedvet.jnb.datastructure.DoubleRange;
import io.github.ericmedvet.jnb.datastructure.FormattedNamedFunction;
import io.github.ericmedvet.mrsim2d.core.tasks.AgentsOutcome;
import io.github.ericmedvet.mrsim2d.core.tasks.balancing.BalancingAgentsOutcome;
import java.util.function.Function;

@Discoverable(prefixTemplate = "sim|s.function|f.outcome|o")
public class OutcomeFunctions {

  private OutcomeFunctions() {}

  @SuppressWarnings("unused")
  public static  Function aaAvgH(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).allAgentsAverageHeight();
    return FormattedNamedFunction.from(f, format, "all.agents.avg.h").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function aaAvgW(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).allAgentsAverageWidth();
    return FormattedNamedFunction.from(f, format, "all.agents.avg.w").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function aaFinalAvgH(
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f = AgentsOutcome::allAgentsFinalAverageHeight;
    return FormattedNamedFunction.from(f, format, "all.agents.final.avg.h").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function aaFinalAvgW(
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f = AgentsOutcome::allAgentsFinalAverageWidth;
    return FormattedNamedFunction.from(f, format, "all.agents.final.avg.w").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function aaFinalH(
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f = AgentsOutcome::allAgentsFinalHeight;
    return FormattedNamedFunction.from(f, format, "all.agents.final.avg.h").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function aaFinalW(
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f = AgentsOutcome::allAgentsFinalWidth;
    return FormattedNamedFunction.from(f, format, "all.agents.final.w").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function aaFinalMaxH(
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f = AgentsOutcome::allAgentsFinalMaxHeight;
    return FormattedNamedFunction.from(f, format, "all.agents.final.max.h").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function aaFinalMaxW(
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f = AgentsOutcome::allAgentsFinalMaxWidth;
    return FormattedNamedFunction.from(f, format, "all.agents.final.max.w").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function aaFinalMinH(
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f = AgentsOutcome::allAgentsFinalMinHeight;
    return FormattedNamedFunction.from(f, format, "all.agents.final.min.h").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function aaFinalMinW(
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f = AgentsOutcome::allAgentsFinalMinWidth;
    return FormattedNamedFunction.from(f, format, "all.agents.final.min.w").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function aaMaxH(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).allAgentsMaxHeight();
    return FormattedNamedFunction.from(f, format, "all.agents.max.h").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function aaMaxW(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).allAgentsMaxWidth();
    return FormattedNamedFunction.from(f, format, "all.agents.max.w").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function avgSwingAngle(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).avgSwingAngle();
    return FormattedNamedFunction.from(f, format, "avg.swing.angle").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function avgSwingAngleWithMalus(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "malus", dD = Math.PI / 2d) double malus,
      @Param(value = "of", dNPM = "f.identity()") Function beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).avgSwingAngleWithMalus(malus);
    return FormattedNamedFunction.from(f, format, "avg.swing.angle.with.malus")
        .compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function faAvgArea(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).firstAgentAverageArea();
    return FormattedNamedFunction.from(f, format, "first.agent.avg.area").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function faAvgBBMinY(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).firstAgentAverageBBMinY();
    return FormattedNamedFunction.from(f, format, "first.agent.avg.bb.min.y")
        .compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function faAvgTerrainHeight(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).firstAgentAverageTerrainHeight();
    return FormattedNamedFunction.from(f, format, "first.agent.avg.terrain.h")
        .compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function faAvgY(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).firstAgentAverageY();
    return FormattedNamedFunction.from(f, format, "first.agent.avg.y").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function faMaxBBMinY(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).firstAgentMaxBBMinY();
    return FormattedNamedFunction.from(f, format, "first.agent.max.bb.min.y")
        .compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function faMaxMaxRelJumpH(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).firstAgentMaxRelativeJumpHeight();
    return FormattedNamedFunction.from(f, format, "first.agent.max.rel.jump.h")
        .compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function faMaxY(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).firstAgentMaxY();
    return FormattedNamedFunction.from(f, format, "first.agent.max.y").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function faXDistance(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).firstAgentXDistance();
    return FormattedNamedFunction.from(f, format, "first.agent.distance.x").compose(beforeF);
  }

  @SuppressWarnings("unused")
  public static  Function faXVelocity(
      @Param(value = "transientTime", dD = 5.0) double transientTime,
      @Param(value = "of", dNPM = "f.identity()") Function> beforeF,
      @Param(value = "format", dS = "%.1f") String format) {
    Function, Double> f =
        o -> o.subOutcome(new DoubleRange(transientTime, o.duration())).firstAgentXVelocity();
    return FormattedNamedFunction.from(f, format, "first.agent.velocity.x").compose(beforeF);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy