VBA实现的数组快速排序
下面的VBA代码实现了快速排序算法,可以对一个数组进行排序。数组元素的类型可以是数值或者字符串,实行排序后,原输入数组便会按照要求排好序,这意味着这个函数会对原数组修改。QSortInPlace函数可以对数值或者字符串数组按要求升序或者降序进行排列。QSortInPlace的原型声明如下:
阅读全文 >
下面的VBA代码实现了快速排序算法,可以对一个数组进行排序。数组元素的类型可以是数值或者字符串,实行排序后,原输入数组便会按照要求排好序,这意味着这个函数会对原数组修改。QSortInPlace函数可以对数值或者字符串数组按要求升序或者降序进行排列。QSortInPlace的原型声明如下:
阅读全文 >
普通的随机数发生器产生的伪随机数经常存在周期比较短,或者效率不高,或者随机分布特征不佳等缺点,这里给出的是一个高效的而且随机分布特征很不错的MersenneTwister随机数发生器,下面是源代码。
阅读全文 >
C语言实现的标准粒子群优化算法源代码下载
标准粒子群优化算法经常是改进算法的参考标准,这里给出采用C语言的一个标准PSO算法的实现版本,除了可以作为参考也可以作为改进的基础。
里面有不少常用的测试函数
0 Parabola (Sphere)
1 De Jong’ f4
2 Griewank
3 Rosenbrock (Banana)
阅读全文 >
使用Python实现的差分进化算法,引用到Numpy和Scipy,可以支持多核与集群并行计算。使用时只需继承DESolver并定义函数def error_func(self, indiv, *args)作为目标函数即可。具体代码如下:
阅读全文 >
使用Python实现的粒子群优化算法,需要引用到Numpy,需要对自定义问题进行优化只需要更改f6函数即可,智能算法本身的参数亦可以自行设定,具体源代码如下:
阅读全文 >
在许多智能算法中,需要对群体进行随机排序(或称为混洗)。假定一个数组中保存了各个个体的索引,则对此索引数组进行随机排序就相当于对群体进行了随机排序。这里提供了两个函数ShuffleArray与ShuffleArrayInPlace,前者会返回排序后的数组,而后者对传入的数组进行随机排序,更新的是传入的数组,不返回任何数值。具体代码如下:
阅读全文 >
智能算法中除了经常用到正态分布的随机数外,还经常需要另外一种分布随机数产生器,那就是柯西分布,柯西分布可以有较大的概率跳出局部最优,加大搜索范围,不少改进的进化算法都引入了柯西分布随机数来对算法进行改进,CnHUP曾经在VBA产生正态分布随机数NormalRand中实现了相关的代码,这里再使用VBA实现柯西分布随机数的产生,函数名为CauchyRand。具体VBA代码如下:
阅读全文 >