示例#1
0
        void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {


           // pictureBox1.Refresh();




            if (checkBox1.Checked && e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                
                dataset.Add(new NeuralNetworks.DataSet() { Outputs = CharacterToNetOutput(textBoxRecognized.Text), Inputs = GetInputFromBitmap(new Bitmap(pictureBox1.Image)) });

                labelDataSetSaveNum.Text = dataset.Count + " Objects";
                //charecterNet.ApplyInput(GetInputFromBitmap(new Bitmap(pictureBox1.Image)));
                //charecterNet.CalculateOutput();

                //DetectionReturn detect = OutputToCharacter(charecterNet.ReadOutput());

                //textBoxRecognized.Text = detect.ch;
                //textBoxConfidence.Text = detect.confidence.ToString();

                //textBox3.Text = "Added" + dataset.Count;
            }

            else if(e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                    charecterNet.ApplyInput(GetInputFromBitmap(new Bitmap(pictureBox1.Image)));
                charecterNet.CalculateOutput();
                DetectionReturn detect = OutputToCharacter(charecterNet.ReadOutput());
                //textBox3.Text = ArrayToStr(charecterNet.Layers[charecterNet.InputIndex].GetValues());

                textBoxRecognized.Text = detect.ch;
                textBoxConfidence.Text = detect.confidence.ToString();
            }

            //Graphics.FromImage(pictureBox1.Image).Clear(Color.White);

            pictureBox1.Refresh();
        }
    public void think()
    {
        ClosestFriend = get_friends_informaion();

        ClosestFoe = get_foe_informaion();

        Enviroment = get_evironment_information();

        ClosestFriend2 = sort_distance(ClosestFriend);

        #if DebugA
        GD.Print("Network input Objects");
        GD.Print(ClosestFriend);
        GD.Print(ClosestFoe);
        GD.Print(Enviroment);
        GD.Print(ClosestFriend2);
        GD.Print(ClosestFoe[0].Position);
        GD.Print(ClosestFoe[0].Position.x);
        GD.Print(ClosestFoe[0].Position.y);
        #endif

        #if DebugB
        GD.Print("+++ClosestFrient+++");
        GD.Print(ClosestFriend);
        GD.Print("---ClosestFrient2---");
        GD.Print(ClosestFriend2);
        #endif


        data_in[0] = ClosestFoe[0].Position.x;
        data_in[1] = ClosestFoe[0].Position.y;
        data_in[2] = ClosestFoe[1].Position.x;
        data_in[3] = ClosestFoe[1].Position.y;
        data_in[4] = ClosestFoe[2].Position.x;
        data_in[5] = ClosestFoe[2].Position.y;
        data_in[6] = ClosestFriend[0].Position.x;
        data_in[7] = ClosestFriend[0].Position.y;
        data_in[8] = ClosestFriend[1].Position.x;
        data_in[9] = ClosestFriend[1].Position.y;
        //data_in[10] = ClosestFriend[2].Position.x;
        //data_in[11] = ClosestFriend[2].Position.y;
        data_in[12] = Enviroment[0].Position.x;
        data_in[13] = Enviroment[0].Position.y;
        data_in[14] = Enviroment[1].Position.x;
        data_in[15] = Enviroment[1].Position.y;
        data_in[16] = Enviroment[2].Position.x;
        data_in[17] = Enviroment[2].Position.y;

        FirstData.Inputs[0] = ClosestFoe[0].Position.x;

        #if (DebugA)
        MyString = "";
        foreach (double Anumber in data_in)
        {
            MyString += Anumber.ToString() + ",";
        }
        GD.Print("Objects Position Data");
        GD.Print(MyString);
        #endif

        normalize(data_in);
        MoveShootNet.ApplyInput(data_in);
        MoveShootNet.CalculateOutput();
        data_out2 = MoveShootNet.ReadOutput();
        data_out2 = denormalize(data_out2);



        data_out = new double[] { data_in[0], data_in[1], data_in[0], data_in[1] };
        //normalize(data_out);

        Training = new NeuralNetworks.DataSet {
            Outputs = data_out, Inputs = data_in
        };
        //Training = new NeuralNetworks.DataSet() {(double[]) data_out2, Inputs = data_in };
        TrainingData.Add(Training);

        #if DebugA
        MyString = "";
        foreach (double Anumber in data_out2)
        {
            MyString += Anumber.ToString() + ",";
        }
        GD.Print("Output of Network");
        GD.Print(MyString);


        //data_out = (double[]) data_out2;
        GD.Print("Has Current Move ", Parent.Get("CurrentMove"));
        GD.Print("Has Side ", Parent.Get("Side"));
        #endif

        Acount = 0;
        foreach (double Anumber in data_out2)
        {
            data_out3[Acount] = (float)Anumber;
            Acount++;
        }



        Parent.Set("CurrentMove", Parent.ToLocal(new Godot.Vector2(data_out3[2], data_out3[3])));
        Parent.Set("CurrentTarget", new Godot.Vector2(data_out3[0], data_out3[1]));
    }