private void Awake()
 {
     if (Instance == null)
     {
         Instance = this;
     }
     else if (Instance != this)
     {
         Destroy(gameObject);
     }
     genMan = GeneratorManager.Instance;
 }
예제 #2
0
    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());
    }