Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/10/17 00:27:31 (7 years ago)
Author:
pkimmesw
Message:

#2665 LexicaseSelector, Performance improvements, UI Fixes, Debugger only shows used stacks, fixed Debugger stepping, Added vector expressions, ERCOptions,

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/RandExpressions.cs

    r14777 r14834  
    22  using HeuristicLab.Problems.ProgramSynthesis.Push.Attributes;
    33  using HeuristicLab.Problems.ProgramSynthesis.Push.Generators;
     4  using HeuristicLab.Problems.ProgramSynthesis.Push.Generators.CodeGenerator;
    45  using HeuristicLab.Problems.ProgramSynthesis.Push.Interpreter;
    56  using HeuristicLab.Problems.ProgramSynthesis.Push.Stack;
     7  using HeuristicLab.Random;
    68
    79  /// <summary>
     
    1012  [PushExpression(StackTypes.Name, "NAME.RAND")]
    1113  public class NameRandExpression : StatelessExpression {
    12     public override bool Eval(IPushInterpreter interpreter) {
    13       var name = NameGenerator.RandomName(interpreter.Random);
     14    public override bool Eval(IInternalPushInterpreter interpreter) {
     15      if (!interpreter.Configuration.ErcOptions.NameErcOptions.IsEnabled)
     16        return false;
     17
     18      var name = interpreter.CustomExpressions.Count == 0 || interpreter.Random.NextDouble() < interpreter.Configuration.ErcOptions.NameErcOptions.NewNameProbability
     19                   ? ErcUtils.GetName(interpreter.Configuration.ErcOptions.NameErcOptions, interpreter.Random)
     20                   : interpreter.CustomExpressions.Keys.SampleRandom(interpreter.Random);
    1421
    1522      interpreter.NameStack.Push(name);
     
    2330  [PushExpression(StackTypes.Integer, "INTEGER.RAND")]
    2431  public class IntegerRandExpression : StatelessExpression {
    25     public override bool Eval(IPushInterpreter interpreter) {
    26       var value = interpreter.Random.Next(
    27           interpreter.Configuration.MinRandomInteger,
    28           interpreter.Configuration.MaxRandomInteger);
     32    public override bool Eval(IInternalPushInterpreter interpreter) {
     33      if (!interpreter.Configuration.ErcOptions.IntegerErcOptions.IsEnabled)
     34        return false;
    2935
     36      var value = ErcUtils.GetInteger(interpreter.Configuration.ErcOptions.IntegerErcOptions, interpreter.Random);
    3037      interpreter.IntegerStack.Push(value);
    3138      return true;
     
    3845  [PushExpression(StackTypes.Float, "FLOAT.RAND")]
    3946  public class FloatRandExpression : StatelessExpression {
    40     public override bool Eval(IPushInterpreter interpreter) {
    41       var value = interpreter.Random.NextDouble() * (interpreter.Configuration.MaxRandomFloat - interpreter.Configuration.MinRandomFloat) + interpreter.Configuration.MinRandomFloat;
     47    public override bool Eval(IInternalPushInterpreter interpreter) {
     48      if (!interpreter.Configuration.ErcOptions.FloatErcOptions.IsEnabled)
     49        return false;
    4250
     51      var value = ErcUtils.GetDouble(interpreter.Configuration.ErcOptions.FloatErcOptions, interpreter.Random);
    4352      interpreter.FloatStack.Push(value);
    4453      return true;
     
    5160  [PushExpression(StackTypes.Boolean, "BOOLEAN.RAND")]
    5261  public class BooleanRandExpression : StatelessExpression {
    53     public override bool Eval(IPushInterpreter interpreter) {
    54       var value = interpreter.Random.NextDouble() > 0.5;
     62    public override bool Eval(IInternalPushInterpreter interpreter) {
     63      if (!interpreter.Configuration.ErcOptions.BooleanErcOptions.IsEnabled)
     64        return false;
    5565
     66      var value = ErcUtils.GetBoolean(interpreter.Configuration.ErcOptions.BooleanErcOptions, interpreter.Random);
    5667      interpreter.BooleanStack.Push(value);
    5768      return true;
     
    6475  [PushExpression(StackTypes.Code, "CODE.RAND")]
    6576  public class CodeRandExpression : StatelessExpression {
    66     public override bool Eval(IPushInterpreter interpreter) {
     77    public override bool Eval(IInternalPushInterpreter interpreter) {
    6778      if (interpreter.IntegerStack.Count == 0 ||
    6879          interpreter.IntegerStack.Top < 1) return false;
Note: See TracChangeset for help on using the changeset viewer.