private void Awake() { if (Instance == null) { Instance = this; } else if (Instance != this) { Destroy(gameObject); } genMan = GeneratorManager.Instance; }
public Dictionary <int, StructuredAlias> PurelyRandom(StructuredAlias realMap, EvaluateNode Eval) { AliasChallengePriorityQueue = new SimplePriorityQueue <Dictionary <int, StructuredAlias> >(); iterationRandomRestart = 0; graphPlot.Clear(); ParameterManager pMan = ParameterManager.Instance; TimeCap = pMan.timeCap; BatchAliases = pMan.aliasNum; System.Diagnostics.Stopwatch sWatch = StopwatchProxy.Instance.Stopwatch; AliasGeneratorManager aGMan = AliasGeneratorManager.Instance; sWatch.Stop(); sWatch.Reset(); sWatch.Start(); int totalIterations = 0; while (totalIterations < randomIterations) { Dictionary <int, StructuredAlias> randomAliases = aGMan.GenerateNRandomAliasFromRealMap(realMap, BatchAliases); try { if (sWatch.ElapsedMilliseconds > pMan.timeCap * 1000f && pMan.timeCap >= 0) { throw new Exception("Time cap elapsed.\n"); } float tmpEval = (float)Eval(realMap, randomAliases); AliasChallengePriorityQueue.Enqueue(randomAliases, -(float)tmpEval); graphPlot.Add(new Tuple <float, float>(iterationRandomRestart, Mathf.Abs((float)tmpEval))); } catch (Exception e) { ErrorManager.ManageError(ErrorManager.Error.SOFT_ERROR, e.Message + sWatch.ElapsedMilliseconds / 1000f + "s #iteration: " + totalIterations + SaveAliasPurelyRandom()); sWatch.Stop(); sWatch.Reset(); return(AliasChallengePriorityQueue.Dequeue()); } totalIterations++; } GeneratorUIManager.Instance.showMessageDialogBox("SIMPLERANDOM-F= " + Mathf.Abs(AliasChallengePriorityQueue.GetPriority(AliasChallengePriorityQueue.First)) + "\nExecution time: " + sWatch.ElapsedMilliseconds / 1000f + "s #iteration: " + totalIterations + SaveAliasPurelyRandom()); sWatch.Stop(); sWatch.Reset(); return(AliasChallengePriorityQueue.Dequeue()); }