Changeset 15108


Ignore:
Timestamp:
07/03/17 09:35:48 (7 weeks ago)
Author:
abeham
Message:

#2775: merged 15084 to stable

Location:
stable
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Core

  • stable/HeuristicLab.Core/3.3/Interfaces/IMultiOperator.cs

    r14186 r15108  
    2121
    2222
     23using System.Collections.Generic;
     24
    2325namespace HeuristicLab.Core {
    24   public interface IMultiOperator<T> : IOperator where T : class,IOperator {
    25     IItemList<T> Operators { get; }
     26  public interface IMultiOperator : IOperator {
     27    IEnumerable<IOperator> Operators { get; }
     28    bool AddOperator(IOperator op);
     29    bool RemoveOperator(IOperator op);
     30  }
     31  public interface IMultiOperator<T> : IMultiOperator where T : class,IOperator {
     32    new IItemList<T> Operators { get; }
    2633  }
    2734}
  • stable/HeuristicLab.Operators/3.3/MultiOperator.cs

    r14186 r15108  
    2222using System;
    2323using System.Collections.Generic;
     24using System.Linq;
    2425using HeuristicLab.Collections;
    2526using HeuristicLab.Common;
     
    5253      }
    5354    }
     55   
     56    IEnumerable<IOperator> IMultiOperator.Operators { get { return operators.AsEnumerable(); } }
    5457
    5558    [StorableConstructor]
     
    6972    private void AfterDeserialization() {
    7073      Initialize();
     74    }
     75
     76    public virtual bool AddOperator(IOperator op) {
     77      var tOp = op as T;
     78      if (tOp == null) return false;
     79      operators.Add(tOp);
     80      return true;
     81    }
     82
     83    public virtual bool RemoveOperator(IOperator op) {
     84      var tOp = op as T;
     85      if (tOp == null) return false;
     86      return operators.Remove(tOp);
    7187    }
    7288
  • stable/HeuristicLab.Optimization

  • stable/HeuristicLab.Optimization/3.3/BasicProblems/MultiObjectiveBasicProblem.cs

    r14186 r15108  
    7474      if (encoding != null && encoding.Operators.Any(x => x is ISingleObjectiveOperator && !(x is IMultiObjectiveOperator)))
    7575        encoding.Operators = encoding.Operators.Where(x => !(x is ISingleObjectiveOperator) || x is IMultiObjectiveOperator).ToList();
     76
     77      foreach (var multiOp in Encoding.Operators.OfType<IMultiOperator>()) {
     78        foreach (var soOp in multiOp.Operators.Where(x => x is ISingleObjectiveOperator).ToList()) {
     79          multiOp.RemoveOperator(soOp);
     80        }
     81      }
    7682    }
    7783
  • stable/HeuristicLab.Optimization/3.3/BasicProblems/SingleObjectiveBasicProblem.cs

    r14186 r15108  
    100100      if (encoding.Operators.Any(x => x is IMultiObjectiveOperator && !(x is ISingleObjectiveOperator)))
    101101        encoding.Operators = encoding.Operators.Where(x => !(x is IMultiObjectiveOperator) || x is ISingleObjectiveOperator).ToList();
     102
     103      foreach (var multiOp in Encoding.Operators.OfType<IMultiOperator>()) {
     104        foreach (var moOp in multiOp.Operators.Where(x => x is IMultiObjectiveOperator).ToList()) {
     105          multiOp.RemoveOperator(moOp);
     106        }
     107      }
    102108    }
    103109
Note: See TracChangeset for help on using the changeset viewer.