public float[] SelectAction()
        {
            int[]   s_tt = Ds.GetCurrentState();
            float[] utils;

            // use own asm to select one action?
            if (m_setup.UseHierarchicalASM)
            {
                utils = this.Rescale(m_asm.SelectAction(Mem.ReadData(s_tt)));
            }
            else
            {
                utils = this.Rescale(Mem.ReadData(s_tt));
            }
            if (m_setup.PropagateUtilitiesInHierarchy)
            {
                float myMot = this.GetMyTotalMotivation();
                Ds.PromoteUtilitiesToChilds(utils, myMot);
            }
            this.MarkSelection(utils);
            return(utils);
        }