コード例 #1
0
ファイル: Piecewise.cs プロジェクト: jakedw7/iAM
        /// <summary>
        /// Creates piecewise list from string
        /// </summary>
        /// <param name="piecewise">(age0, value0)(age1, value1)...</param>
        private void CreateList(string piecewise)
        {
            m_ageValueList = new List <AgeValue>();
            string[] pairs = piecewise.Split(')');
            foreach (string pair in pairs)
            {
                if (!string.IsNullOrWhiteSpace(pair))
                {
                    AgeValue ageValue = new AgeValue(pair, _isOMS);
                    if (ageValue.Error != null)
                    {
                        this.Errors += ageValue.Error;
                    }
                    m_ageValueList.Add(ageValue);
                }
            }
            //Sort by age.
            m_ageValueList.Sort((x, y) => x.Age.CompareTo(y.Age));

            //Remove bad values
            m_ageValueList.RemoveAll(delegate(AgeValue av) { return(av.Age < 0); });
            m_ageValueList.RemoveAll(delegate(AgeValue av) { return(av.Value == double.NaN); });

            SortByAgeAndValues();
        }
コード例 #2
0
ファイル: Piecewise.cs プロジェクト: jakedw7/iAM
        /// <summary>
        /// Returns the current value adjusted for AGE (shift).
        /// </summary>
        /// <param name="value">Current value of dependent variable</param>
        /// <param name="age">Current age</param>
        /// <returns>Shifted value</returns>
        public AgeValue GetNextValue(double value, double age, double span)
        {
            AgeValue ageValue    = null;
            double   apparentAge = GetApparentAge(value);

            if (age > 0)
            {
                double ratio     = apparentAge / age;
                double nextAge   = apparentAge + ratio * span;
                double nextValue = GetValue(nextAge);
                ageValue = new AgeValue(nextAge, nextValue);
            }
            else
            {
                ageValue = m_yearlyAgeValue[0];
            }
            return(ageValue);
        }