Ejemplo n.º 1
0
        Quaternion InitialTilt()
        {
            var gaussian = BoxMuller.Gaussian();
            var tilt     = Quaternion.Euler(tiltPower * gaussian.x, Random.Range(0f, ROUND_IN_DEG), tiltPower * gaussian.y);

            return(tilt);
        }
Ejemplo n.º 2
0
        public void ExecuteBoxMullerToCsvFile()
        {
            var results = new double[users, iterations + cellsBefore, paramsGen];

            // Go over all the users
            for (var i = 0; i < users; i++)
            {
                _boxMuller = new BoxMuller(i);

                // for each param
                for (var j = 0; j < paramsGen; j++)
                {
                    results[i, 0, j] = mean[i];
                    results[i, 1, j] = stnDev[i];

                    // Iterations
                    for (var k = cellsBefore; k < iterations + cellsBefore; k++)
                    {
                        var r = (int)_boxMuller.GetNormalWithLimits(mean[i], stnDev[i], 1, 10);
                        results[i, k, j] = r;
                    }
                }
            }

            WriteToCSV(results);
        }
Ejemplo n.º 3
0
        public void ExecuteBoxMullerToCsvFile2()
        {
            var results = new double[users, iterations + cellsBefore, paramsGen];

            for (var i = 0; i < users; i++)
            {
                _boxMuller = new BoxMuller(i);

                for (var j = 0; j < paramsGen; j++)
                {
                    results[i, 0, j] = mean[i];
                    results[i, 1, j] = stnDev[i];

                    for (var k = cellsBefore; k < iterations + cellsBefore; k++)
                    {
                        // r_i = N(M_i,SD_i)
                        var r = (int)_boxMuller.GetNormalWithLimits(mean[i], stnDev[i], 1, 10);
                        results[i, k, j] = r;

                        // Don't continue on last iteration
                        if (k == iterations + cellsBefore - 1)
                        {
                            break;
                        }

                        // M_i+1 = N(M_i,SD_i) > M_i ? M_i + 0.5 : M_i
                        mean[i] = (r > mean[i] + Limit) ? mean[i] + Value : mean[i];
                        mean[i] = (r < mean[i] - Limit) ? mean[i] - Value : mean[i];
                    }
                }
            }

            WriteToCSV(results);
        }
Ejemplo n.º 4
0
 private void InitializeMovesetScore(List <ActionBase> actions, float precision)
 {
     _movesetScore = new SortedSet <Tuple <float, ActionBase> >(new ActionWeight());
     foreach (ActionBase action in actions)
     {
         float weight = precision * (BoxMuller.GetRandom() / 2 + 1);
         if (!action.CheckCost(this._char))
         {
             weight = 0;
         }
         _movesetScore.Add(new Tuple <float, ActionBase>(weight, action));
     }
 }
Ejemplo n.º 5
0
    public void PerturbScore()
    {
        SortedSet <Tuple <float, ActionBase> > newScore = new SortedSet <Tuple <float, ActionBase> >(new ActionWeight());

        foreach (Tuple <float, ActionBase> action in _movesetScore)
        {
            float score = action.Item1 * (BoxMuller.GetRandom() / 2 + 1);
            // Rubberband
            score -= (score - _precision) * _weight;
            newScore.Add(new Tuple <float, ActionBase>(score, action.Item2));
        }
        _movesetScore = newScore;
    }