量化因子软件——赫兹MT5群体优化带电系统搜索(CSS)算法

1.概述
在物理学中,电荷周围的空间具有一种称为电场的特性。这种场对其他带电物体产生一种力。点电荷周围的电场由库仑定律决定。库仑证实,任何两个带电小球之间的电场力与粒子间沿连接线的距离的平方成反比,与两个粒子的电荷乘积成正比。此外,还可以利用高斯定律,即电场大小与粒子间的距离成正比,来求得带电球体内部某个点的电场大小。利用这些原理,CSS 定义了一组可能的解决方案,称为带电粒子。每个粒子都被视为一个带电的球体(与电磁算法不同,电磁算法中的粒子是一个一维点),可以对其他介质(带电粒子)产生电效应。

另一方面,牛顿第二定律解释说,物体的加速度与作用在该物体上的净力成正比。因此,作用在粒子上的电场力会导致粒子加速。根据牛顿力学,如果粒子在空间中的位置、速度和加速度在前一时刻是已知的,那么被视为无限小质量点的粒子在任何时候的位置都是完全已知的。CSS 利用牛顿力学的运动规律来确定粒子的位置。理论上,这些定律的应用应该在算法的探索和开发之间提供良好的平衡。

带电系统搜索(CSS)由 A. Kaveh 和 S. Talatahari 于 2010 年首次提出。

优化是解决数学建模和机器学习问题的重要组成部分。元启发式算法是一类有效且流行的优化方法。元启发式可以理解为一种算法,它随机搜索接近最优的问题的可能解决方案,直到满足特定条件或达到给定的迭代次数。

在科学文献中,元启发式被认为是将基本的启发式方法结合到更高级别的算法方案中,从而更有效地探索搜索空间和决策。这通常比开发新的专门启发式方法所需的工作量要少。我们面临的挑战是如何调整通用的元启发式方案,以解决困难的优化问题。此外,元启发式的有效实现可以确保在可接受的时间内找到接近最优的解决方案。通过各种不同的方法来理解元启发式方法,我们就有可能提出一些基本特性来描述元启发式方法。近年来,元启发式方法的使用越来越多,人们一直在努力提高算法的能力,缩短优化时间。


在该方法中,会重置随机数发生器,以及设置 fB 和 revison 变量的初始值。然后将参数值赋值给相应的对象变量。
接下来,rangeMax、rangeMin、rangeStep、F、p 和 cB 数组的大小会随着坐标和粒子数量的变化而变化。
然后循环调整每个粒子的数组大小,并为每个粒子设置变量 f 的初始值。
方法结束时,cB 数组的大小会随着坐标数的变化而变化。

//——————————————————————————————————————————————————————————————————————————————
void C_AO_CSS::Init (const int    coordinatesNumberP, //coordinates number
                     const int    particlesNumberP,   //particles number
                     const double radiusSizeP,        //radius size
                     const double speedCoP,           //speed coefficient
                     const double accelCoP)           //acceleration coefficient
{
  MathSrand ((int)GetMicrosecondCount ()); // reset of the generator
  fB       = -DBL_MAX;
  revision = false;

  coordinatesNumber = coordinatesNumberP;
  particlesNumber   = particlesNumberP;
  radius            = radiusSizeP;
  speedCo           = speedCoP;
  accelCo           = accelCoP;

  ArrayResize (rangeMax,  coordinatesNumber);
  ArrayResize (rangeMin,  coordinatesNumber);
  ArrayResize (rangeStep, coordinatesNumber);
  ArrayResize (F,         coordinatesNumber);

  ArrayResize (p,  particlesNumber);

  for (int i = 0; i < particlesNumber; i++)
  {
    ArrayResize (p [i].c,     coordinatesNumber);
    ArrayResize (p [i].cPrev, coordinatesNumber);
    ArrayResize (p [i].cNew,  coordinatesNumber);
    p [i].f  = -DBL_MAX;
  }

  ArrayResize (cB, coordinatesNumber);
}
//——————————————————————————————————————————————————————————————————————————————

  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值