Пример #1
0
            /// <summary>
            /// Переопределить скорость
            /// </summary>
            /// <param name="w">Коэффициент инерции</param>
            /// <param name="fp">Весовой коэффициент для p</param>
            /// <param name="fg">Весовой коэффициент для g</param>
            /// <param name="g">Наилучшее положение по рою</param>
            public void RecalcVOld(double w, double fp, double fg, Vectors g)
            {
                var    r  = new MathNet.Numerics.Random.CryptoRandomSource();
                double fi = fg + fp;

                Vectors rp = new Vectors(v.Deg), rg = new Vectors(v.Deg);

                for (int i = 0; i < v.Deg; i++)
                {
                    rp[i] = r.NextDouble();
                    rg[i] = r.NextDouble();
                }

                v = 2 * w / Math.Abs(2 - fi - Math.Sqrt(fi * (fi - 4))) * (v + fp * Vectors.CompMult(rp, p - x) + fg * Vectors.CompMult(rg, g - x));
            }
Пример #2
0
        public static void VectorExamples()
        {
            var v = new Vectors(5);

            v.Show(); // (       0       0       0       0       0       )

            v = new Vectors(5, 1.0);
            v.Show(); // (       1       1       1       1       1       )

            v = new Vectors(1, 2, 3, 4, 5, 6, 7, 9.5, -2, 3);
            v.Show(); // (       1       2       3       4       5       6       7       9,5     -2      3       )

            v = new Vectors(new double[] { 1, 2, 3, -3, -2, -1, 0 });
            v.Show(); // (       1       2       3       -3      -2      -1      0       )


            v[6].Show();                                         // 0

            v.EuqlidNorm.Show();                                 // 0,7559289460184545

            v.Normalize(0, 1).Show();                            // (       0,6666666666666666      0,8333333333333333      1       0       0,16666666666666666     0,3333333333333333     0,5      )

            v.Range.Show();                                      // 6

            v.SubVector(4).Show();                               // (       1       2       3       -3      )

            v.Average.Show();                                    // 1,7142857142857142

            v.Contain(3).Show();                                 // True

            v.Normalize(-0.5, 0.5).ToRationalStringTab().Show(); // (       1/6     1/3     1/2     -1/2    -1/3    -1/6    0       )

            var p = Vectors.Create(dim: 7, min: 0, max: 2);

            p.Show(); // (       1,4585359040647745      1,7510524201206863      1,4706563879735768      0,45403700647875667     0,022686069831252098    1,9943826524540782      0,3851787596940994      )

            Vectors.Mix(v, p).Show();
            // (       1       1,4585359040647745      2       1,7510524201206863      3       1,4706563879735768      -3      0,45403700647875667      -2      0,022686069831252098    -1      1,9943826524540782      0       0,3851787596940994      )

            (v + p).Show();                                                  // (       2,4585359040647745      3,7510524201206863      4,470656387973577       -2,5459629935212433     -1,977313930168748      0,9943826524540782      0,3851787596940994      )
            (v * p).Show();                                                  // 5,970744096674025
            Vectors.CompMult(v, p).Show();                                   // (       1,4585359040647745      3,5021048402413726      4,41196916392073        -1,36211101943627       -0,045372139662504196   -1,9943826524540782     0       )

            (2.4 * v.AbsVector - p / 2).Sort.BinaryApproxSearch(1.5).Show(); // 1,4028086737729608
        }