public Z3BaseParams(Directive directive) { _directive = directive; var z3Directive = directive as Z3BaseDirective; if (z3Directive != null) { _optKind = z3Directive.OptKind; _cardAlgorithm = z3Directive.CardinalityAlgorithm; _pboAlgorithm = z3Directive.PseudoBooleanAlgorithm; _arithStrategy = z3Directive.ArithmeticStrategy; _smt2LogFile = z3Directive.SMT2LogFile; } }
public SPD(Func <Coord, PointMatrix> mFunc, INeighbourhood neighbourhood, int[,] initialConfiguration, IDictionary <int, IStrategy> possibleStrategies, int stepNum, int threadNum = 1, OptimizationKind optimizationKind = OptimizationKind.Absolute) { if (threadNum <= 0) { throw new ArgumentException(); } OptimizationKind = optimizationKind; Width = initialConfiguration.GetLength(0); Height = initialConfiguration.GetLength(1); Matrix = mFunc; ThreadCount = threadNum; StepsPerIteration = stepNum; CurrentIteration = 0; var concernes = new List <Coord> [ThreadCount]; for (var i = 0; i < ThreadCount; i++) { concernes[i] = new List <Coord>(); } var index = 0; for (var x = 0; x < Width; x++) { for (var y = 0; y < Height; y++) { var key = new Coord(x, y); _strategies.AddOrUpdate(key, possibleStrategies[initialConfiguration[x, y]].GetCopy(), (c, s) => possibleStrategies[initialConfiguration[x, y]].GetCopy()); var neigh = neighbourhood.GetHalfNeighbours(key).ToArray();//GetNeighbours(key).ToArray(); _neighbours.AddOrUpdate(key, neigh.ToArray(), (a, b) => b.Union(neigh).ToArray()); var neigh2 = neighbourhood.GetNeighbours(key).ToArray(); _fullNeighbours.AddOrUpdate(key, neigh2, (a, b) => b.Union(neigh2).ToArray()); concernes[index].Add(key); index = (index + 1) % ThreadCount; } } for (var i = 0; i < ThreadCount; i++) { _threadConcernes.AddOrUpdate(i, concernes[i].ToArray(), (a, b) => concernes[i].ToArray()); } ProcessHistory(initialConfiguration); }
public SPD(PointMatrix m, INeighbourhood neighbourhood, int[,] initialConfiguration, IDictionary <int, IStrategy> possibleStrategies, int stepNum, int threadNum = 1, OptimizationKind optimizationKind = OptimizationKind.Absolute) : this( coord => m, neighbourhood, initialConfiguration, possibleStrategies, stepNum, threadNum, optimizationKind) { }
private static void InitializeOptimizationKindList(OptimizationKind optimizationKind) { SortedOptimizations[optimizationKind] = new List <OptimizationPass>(); }
protected OptimizationPassBase(OptimizationKind kind) { Kind = kind; }
private static void InitializeOptimizationKindList(OptimizationKind optimizationKind) { OptimizationLevelBase.SortedOptimizations[optimizationKind] = new List <ResultingOptimizationPass>(); }
protected ResultingOptimizationPass(OptimizationKind kind) : base(kind) { }
protected ResultingOptimizationPass(OptimizationKind kind) { Kind = kind; }
public OptimizationPass(OptimizationKind kind) { Kind = kind; }
static void InitializeOptimizationKindList(OptimizationKind optimizationKind) { OptimizationLevelBase.SortedOptimizations[optimizationKind] = new List <OptimizationPassBase>(); }