using System; using System.Collections.Generic; using System.Linq; using System.Text; using HeuristicLab.Core; using HeuristicLab.Common; namespace HeuristicLab.Problems.MetaOptimization { public delegate void MutateDelegate(IRandom random, IOptimizable configuartion, IIntValueManipulator intValueManipulator, IDoubleValueManipulator doubleValueManipulator); public delegate void CrossDelegate(IRandom random, IOptimizable configuartion, IOptimizable other, IIntValueCrossover intValueCrossover, IDoubleValueCrossover doubleValueCrossover); public interface IOptimizable : IItem { bool IsOptimizable { get; } bool Optimize { get; set; } ConstrainedValue ActualValue { get; set; } void Randomize(IRandom random); void Mutate(IRandom random, MutateDelegate mutate, IIntValueManipulator intValueManipulator, IDoubleValueManipulator doubleValueManipulator); void Cross(IRandom random, IOptimizable other, CrossDelegate cross, IIntValueCrossover intValueCrossover, IDoubleValueCrossover doubleValueCrossover); string ParameterInfoString { get; } event EventHandler IsOptimizableChanged; event EventHandler OptimizeChanged; } }