Exemplo n.º 1
0
        public void trainingStep(int ability, ref int pass)
        {
            pass++;
            // 1. initiating ability
            state = stAbilityExecuting;

            // storing chosen ability
            LastUsedAbility = ability;
            // storing current input vectors
            LastInputVecs = Robosapien.makeInputVector();

            // finding the input vector for the top node
            TopNodeInput = new double[Robosapien.CogTop.InputNum];
            int i;

            for (i = 0; i < Robosapien.CogTop.InputNum; i++)
            {
                TopNodeInput[i] = MetaNode.getOutput(Robosapien.CogTop.Children[i], LastInputVecs, pass);
            }
            // now training
            double[] DesiredOutputVec = STANN.mapInt2VectorDouble(ability, 2, Robosapien.CogTop.stann.OutputNum);

            // training 6 times
            for (i = 0; i < 6; i++)
            {
                Robosapien.CogTop.stann.backPropagate(TopNodeInput, DesiredOutputVec);
            }

            // executing ability now..
            Robosapien.useAbility((t_RSV2Ability)ability);
        }
        public void transitionAction(ref System.Windows.Forms.Panel panel,
                                     System.Windows.Forms.TextBox[] texts, ref int pass)
        {
            switch (state)
            {
            case stIdle:     // nothing
                break;

            case stSensorDataTransmission:
                if (Robosapien.flagSensorDataAcquired)
                {
                    Robosapien.fillSensorTexts(texts);

                    state = stFrameTransmission;
                    Robosapien.retrieveAbstraction();
                }
                break;

            case stFrameTransmission:
                if (Robosapien.flagAbstractionReady)
                {
                    Robosapien.drawAbstraction(panel);
                    state = stAbilityExecuting;
                    // running the cognitive array now
                    double[][] inputVecs = Robosapien.makeInputVector();
                    pass++;
                    int output = (int)MetaNode.getOutput(Robosapien.CogTop, inputVecs, pass);

                    Robosapien.useAbility((t_RSV2Ability)output);
                }
                break;

            case stAbilityExecuting:
                if (Robosapien.flagAbilityDone)
                {
                    Robosapien.flagAbilityDone = false;
                    state = stIdle;
                }
                break;
            }
        }