Пример #1
0
        private List <IMultiObjectiveBehaviour> RejectSimilarBehaviours(IList <IMultiObjectiveBehaviour> behaviours)
        {
            List <IMultiObjectiveBehaviour> nonsimilar = new List <IMultiObjectiveBehaviour>();

            int count = behaviours.Count;

            for (int i = 0; i < count; i++)
            {
                IMultiObjectiveBehaviour b = behaviours[i];

                bool reject = false;
                int  nCount = nonsimilar.Count;
                for (int j = 0; j < nCount; j++)
                {
                    IMultiObjectiveBehaviour nb = nonsimilar[j];

                    double similarity = b.Objectives.Select((t, k) => Math.Abs(t - nb.Objectives[k])).Sum();

                    if (similarity < _params.RejectSimilarThreshold)
                    {
                        reject = true;
                        break;
                    }
                }

                if (reject)
                {
                    b.Reject();
                }
                else
                {
                    nonsimilar.Add(b);
                }
            }

            return(nonsimilar);
        }