public void TestMethod1()
        {
            var nn          = SimpleNeuralNetworkFactory.Create(1, 1, 1);
            var initializer = new NetworkInitializer(1);

            initializer.Initialize(nn);
        }
예제 #2
0
        public NetworkInitializer GetNetworkInitializer(NetworkTaskViewModel model)
        {
            IAnswerService     answer = answerResolver(model, Database);
            NetworkInitializer item   = resolver(model, answer);

            return(item);
        }
예제 #3
0
        public ActionResult Create(Perceptron perceptron)
        {
            int x = 0;
            NetworkInitializer networkInitializer = new NetworkInitializer();
            Perceptron         p = networkInitializer.CreatePerceptron(perceptron.Stock);

            if (ModelState.IsValid)
            {
                foreach (Perceptron pone in _db.Perceptrons)
                {
                    if (pone.Stock == p.Stock)
                    {
                        x += 1;
                    }
                }
                if (x == 0)
                {
                    _db.Perceptrons.Add(p);
                    _db.SaveChanges();
                    networkInitializer.CreateNetwork(p.Stock);
                    //networkInitializer.InitializeJoiningTables(p.Stock);
                    return(RedirectToAction("Index"));
                }
            }
            return(View(perceptron));
        }
예제 #4
0
        public void InitializeService(NetworkInitializer initializer)
        {
            gaService = new GeneticService();
            Database  = new EFUnitOfWork();
            answer    = func(initializer.taskName, Database);

            outputCount = answer.GetNumOfClusters();

            BPNInitializer input = (BPNInitializer)initializer;

            this.parameters   = input.parameters;
            this.hidden       = input.hidden;
            this.learningRate = input.learningRate;
            this.Momentum     = input.Momentum;
            this.minError     = input.minError;
            layerSizes        = new int[3] {
                this.parameters, this.hidden, outputCount
            };
            TFuncs = new TransferFunction[3] {
                TransferFunction.None,
                TransferFunction.Sigmoid,
                TransferFunction.Sigmoid
            };

            double[][] inputs  = answer.GetInputs();
            double[][] outputs = answer.GetAnswers();

            gaService.InitializeGA(initializer,
                                   (weights) => {
                double fitness = 0;

                bpn.SetWeights(weights);

                int truePositive = 0;
                int others       = 0;

                for (int i = 0; i < inputs.GetUpperBound(0) + 1; i++)
                {
                    int cluster;
                    cluster = bpn.getClusterGenetic(inputs[i]);

                    if (outputs[i][0] == cluster)
                    {
                        truePositive += 1;
                    }
                    else
                    {
                        others += 1;
                    }
                }

                fitness = (truePositive) / (double)(truePositive + others);

                return(fitness);
            });
        }
예제 #5
0
    /// <summary>
    /// The constructor for the main Player info class.
    /// </summary>
    /// <param name="userId"></param>
    /// <param name="initializer"></param>
    public PlayerInfo(Users userId, NetworkInitializer initializer, int internalId)
    {
        _userId      = userId;
        _initializer = initializer;

        // set all player variables here.
        _playerStats     = GetPlayerStats(_userId.Id);
        _playerLocation  = GetPlayerLocation(_userId.Id);
        _playerInventory = GetPlayerInventory(_userId.Id);

        InternalId = internalId;
    }
예제 #6
0
 public ActionResult CreateInput(NetworkInitializer input)
 {
     if (ModelState.IsValid)
     {
         testService.TrainNetwork(input, User.Identity.GetUserId());
         return(RedirectToAction("Index"));
     }
     else
     {
         // there is something wrong with the data values
         return(View("NetworkDataInput", input));
     }
 }
예제 #7
0
        public void TrainNetwork(NetworkInitializer data, string userId)
        {
            data = initializerTypeResolver(data, answerForTraining(data, Database));

            var network = trainService.TrainNetwork(data, userId);

            network.AvailableNetworkId = Database.AvailableNetworks.Find(aNet => aNet.NeuralNetwork.Name.Equals(data.networkName) && aNet.Task.Name.Equals(data.taskName)).FirstOrDefault().Id;

            var rep = (TestNetworkRepository)Database.TestNetworks;

            rep.Create(network, userId);

            Database.Save();
        }
예제 #8
0
        public void InitializeGA(NetworkInitializer initializer, Func <double[], double> fitnessFunction)
        {
            var input = (GeneticInitializer)initializer;

            this.crossover      = input.Crossover;
            this.iterations     = input.Iterations;
            this.mutationRate   = input.MutationRate;
            this.populationSize = input.PopulationSize;

            InitializeWeights(initializer);

            ga         = new GA(crossover, mutationRate, populationSize, iterations, weights);
            ga.Elitism = true;
            GAFunction func = new GAFunction(fitnessFunction);

            ga.FitnessFunction = func;
        }
    /// <summary>
    /// called when a new player is added for a client.
    /// </summary>
    /// <param name="conn">The connection.</param>
    /// <param name="playerControllerId">The player controller identifier.</param>
    public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
    {
        Profiler.BeginSample("On server Create.");

        NetworkInitializer initializerScript = GetComponent <NetworkInitializer>();

        if (initializerScript.InitialDBType == DatabaseType.MongoDB)
        {
            AddPlayerMDB(conn, playerControllerId);
        }
        else if (initializerScript.InitialDBType == DatabaseType.MySql)
        {
            // This coroutine thing is tricky, but the idea is that it is a delayed callback.
            // Sort of an asynchronous call in Unity if you will...
            StartCoroutine(AddPlayerSql(conn, playerControllerId));
        }

        Profiler.EndSample();
    }
        // метод для навчання нейронної мережі для певної задачі на основі даних користувача
        public TrainedNetwork TrainNetwork(NetworkInitializer data, string userId)
        {
            INetworkService service       = networkBuilder(data);          // виклик іос-контейнера для побудови необхідного сервіса-нейромережі
            IAnswerService  answerservice = answerBuilder(data, Database); // виклик іос-контейнера для побудови необхідного сервіса для отримання відповідей для задач

            service.InitializeService(data);                               // ініціалізація сервіса
            service.CreateNetwork();                                       // створення мережі

            // навчання нейронної мережі
            {
                service.Train(answerservice.GetInputs(), answerservice.GetAnswers());
                string xml = service.SaveNetworkXml(); // збереження навченої мережі

                TrainedNetwork network = new TrainedNetwork();
                network.AvailableNetworkId = Database.AvailableNetworks.Find(aNet => aNet.NeuralNetwork.Name.Equals(data.networkName) && aNet.Task.Name.Equals(data.taskName)).FirstOrDefault().Id;
                network.XmlName            = xml;

                return(network);
            }
        }
    /// <summary>
    /// Add the player using MongoDB.
    /// </summary>
    /// <param name="conn">The connection.</param>
    /// <param name="playerControllerId">The player controller identifier.</param>
    private void AddPlayerMDB(NetworkConnection conn, short playerControllerId)
    {
        NetworkInitializer initializerScript = GetComponent <NetworkInitializer>();
        List <Users>       users             = initializerScript.GetUserList();

        // This allows us to initialize all the database data.
        PlayerInfo playerData = new PlayerInfo(users[_players.Count], initializerScript, playerCount);

        Debug.Log("Player count: " + _players.Count);
        Debug.Log("Added User: "******"playerId" + playerCount);

        // Spawn the player.
        Vector3 spawnPosition = new Vector3(
            Convert.ToSingle(playerData.Location.location.x),
            Convert.ToSingle(playerData.Location.location.y),
            Convert.ToSingle(playerData.Location.location.z));

        Quaternion spawRotation = new Quaternion(
            Convert.ToSingle(playerData.Location.rotation.x),
            Convert.ToSingle(playerData.Location.rotation.y),
            Convert.ToSingle(playerData.Location.rotation.z),
            Convert.ToSingle(playerData.Location.rotation.w));

        // To do set hats and stats?
        var playerObject = (GameObject)GameObject.Instantiate(playerPrefab, spawnPosition, spawRotation);

        playerData.SetPlayerObject(playerObject);

        NetworkServer.AddPlayerForConnection(conn, playerObject, playerControllerId);

        // Debug.Log("sdfwefwef");
        _players.Add(playerCount, playerData);

        Debug.Log(_players[playerCount].ToString());
        playerCount++;
    }
예제 #12
0
        private void InitializeWeights(NetworkInitializer initializer)
        {
            var input = (GeneticInitializer)initializer;

            weights = input.hidden * (input.parameters + 3);
        }
    /// <summary>
    /// Adds the player via the SQL architecture.
    /// </summary>
    /// <param name="conn">The connection.</param>
    /// <param name="playerControllerId">The player controller identifier.</param>
    /// <returns></returns>
    private IEnumerator AddPlayerSql(NetworkConnection conn, short playerControllerId)
    {
        WWW result = new WWW("http://localhost:8080/seagull/get-player-data.php");

        yield return(result);

        if (result.error != null)
        {
            Debug.LogError("Error, unable to retrieve player location!");
        }
        else
        {
            NetworkInitializer initializerScript = GetComponent <NetworkInitializer>();

            // Ideally we would use log in information to spawn the player here.
            // for now its first come first serve.
            string[] playersString = result.text.Split('|');
            string[] playerCurrent = playersString[_playersSql.Count].Split(',');

            // This represents the player data extracted from plain text html :/
            PlayerInfoSql playerData = new PlayerInfoSql(
                new Users()
            {
                user_id = Convert.ToInt32(playerCurrent[0]),
                name    = playerCurrent[1]
            },
                new PlayerLocation()
            {
                location = new Location
                {
                    x = Convert.ToSingle(playerCurrent[2]),
                    y = Convert.ToSingle(playerCurrent[3]),
                    z = Convert.ToSingle(playerCurrent[4]),
                },
                rotation = new Rotation
                {
                    x = Convert.ToSingle(playerCurrent[5]),
                    y = Convert.ToSingle(playerCurrent[6]),
                    z = Convert.ToSingle(playerCurrent[7]),
                    w = Convert.ToSingle(playerCurrent[8])
                }
            },
                playerCount, initializerScript);

            Debug.Log("Player count: " + _playersSql.Count);
            Debug.Log("Added User: "******"playerId" + playerCount);

            // Spawn the player.
            Vector3 spawnPosition = new Vector3(
                Convert.ToSingle(playerData.PlayerLocation.location.x),
                Convert.ToSingle(playerData.PlayerLocation.location.y),
                Convert.ToSingle(playerData.PlayerLocation.location.z));

            Quaternion spawRotation = new Quaternion(
                Convert.ToSingle(playerData.PlayerLocation.rotation.x),
                Convert.ToSingle(playerData.PlayerLocation.rotation.y),
                Convert.ToSingle(playerData.PlayerLocation.rotation.z),
                Convert.ToSingle(playerData.PlayerLocation.rotation.w));

            var playerObject = (GameObject)GameObject.Instantiate(playerPrefab, spawnPosition, spawRotation);

            playerData.SetPlayerObject(playerObject);

            NetworkServer.AddPlayerForConnection(conn, playerObject, playerControllerId);

            // adds the player to the game.
            _playersSql.Add(playerCount, playerData);

            Debug.Log(_playersSql[playerCount].ToString());
            playerCount++;
        }
    }
예제 #14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PlayerInfoSql"/> class.
 /// </summary>
 /// <param name="userId">The user identifier.</param>
 /// <param name="initializer">The initializer.</param>
 public PlayerInfoSql(Users userId, PlayerLocation location, int internalId, NetworkInitializer initializer)
 {
     _userId         = userId;
     _playerLocation = location;
     _initializer    = initializer;
 }