コード例 #1
0
ファイル: Model.cs プロジェクト: Patiun/AntColony
    public void ApplyPunishment()
    {
        float      t      = 1;
        Transition marked = markedDistributions.Pop();

        while (marked != null)
        {
            OutputDistribution distribution = marked.GetOutputDistribution();
            foreach (string name in markedSymbols)
            {
                float change = parameters [3] * t *curSymbol.GetValue() / marked.GetConfidence();

                distribution.UpdateSymbolProbabilityForAllBut(name, change);
                marked.AddToConfidence(parameters [3] * t * curSymbol.GetValue());
                foreach (State state in states)
                {
                    Transition nextTransition = state.GetTransitionOn(new Symbol(marked.GetSymbolName(), 0.0f));
                    if (nextTransition != null)
                    {
                        nextTransition.GetOutputDistribution().UpdateSymbolProbabilityForAllBut(name, change);
                        nextTransition.AddToConfidence(parameters [6] * parameters [3] * t * curSymbol.GetValue());
                    }
                }
            }
            t *= parameters [7];
            if (markedDistributions.Count > 0)
            {
                marked = markedDistributions.Pop();
            }
            else
            {
                marked = null;
            }
        }
        markedSymbols = new List <String> ();
    }