matlab球落点的数学建模,MATLAB数学建模:智能优化算法-人工鱼群算法

MATLAB 数学建模: 人工鱼群算法

1. 基本原理

人工鱼群算法是一种受鱼群聚集规律而启发的优化算法. 在人工鱼群算法中, 我们假定鱼群的活动行为分为: 觅食行为, 群聚行为, 追随行为和随机行为.

觅食行为, 基于 “鱼倾向于游向食物最多的水域” 这一假设, 等价于在寻找最优解的过程中, 向相对较优的方向行进的迭代原则.

群聚行为, 借鉴了真实鱼群中, 落单的个体总倾向于回到群体的特性. 这一行为受三条子规则所限定:

分隔规则: 避免和临近伙伴之间过于拥挤

对准规则: 确保和临近伙伴的方向一致.

内聚规则: 尽量向临近伙伴的中心移动.

追尾行为, 确保了每一个人工鱼个体均会追逐临近的最活跃个体. 它等价于在优化过程中, 向位于当前点附近的, 极优化点前进的过程.

随机行为, 保证了人工鱼在 “目力所及范围内” 随机移动. 这样有助于在寻找最优解过程中跳出局部最优.

2. 程序设计

我们规定以下变量和符号:

n 目标空间维度

N 人工鱼数量

X 每条人工鱼状态 X = ( x 1 , x 2 , ⋯   , x n ) X = (x_1, x_2, \cdots, x_n)X=(x1​,x2​,⋯,xn​), 各分量为需要寻找最优的变量

Y Y = f ( X ) Y = f(X)Y=f(X), 人工鱼所在位置的食物浓度, 即寻优过程中的适应度.

d 人工鱼个体间距离, d = ∣ ∣ x i − x j ∣ ∣ d = ||x_i - x_j||d=∣∣xi​−xj​∣∣

v 人工鱼感知范围

s 人工鱼移动步长

δ 拥挤度因子, 反映拥挤程度

t 人工鱼每次觅食最大尝试次数

2.1 觅食行为

觅食行为, 指人工鱼总是倾向于沿食物较多的方向游动的行为. 逻辑如下:

对于每一条人工鱼 X i X_iXi​, 它按照规则

X j = X i + r a n d ( ) ⋅ v X_j = X_i + rand()\cdot vXj​=Xi​+rand()⋅v

随机选定一个新状态 X j X_jXj​, 并比照新旧两个状态的适应度.

若 X j X_jXj​ 适应度高于 X i X_iXi​, 则该鱼按照规则

X i ′ = X i + r a n d ( ) ⋅ s ⋅ X j − X i ∣ ∣ X j − X i ∣ ∣ X_i' = X_i + rand()\cdot s\cdot \frac{X_j - X_i}{||X_j - X_i||}Xi′​=Xi​+rand()⋅s⋅∣∣Xj​−Xi​∣∣Xj​−Xi​​

向 X j X_jXj​ 方向前进一个步长.

若反复判断 t tt 次后仍然无法在附近找到优于现有状态 X i X_iXi​ 的新状态, 人工鱼将依据规则

X i ′ = X i + r a n d ( ) ⋅ s X_i' = X_i + rand()\cdot sXi′​=Xi​+rand()⋅s

随机移动一个步长.

2.2 群聚行为

真实世界中的鱼群在游弋过程中为了躲避敌害会自然地群聚. 逻辑如下:

对于每一条人工鱼 X i X_iXi​, 搜索其视野内

d i j ⩽ v d_{ij}\leqslant vdij​⩽v

的伙伴并统计其数量, 记为 n f n_fnf​, 并且确定其周边伙伴的中间位置 X c X_cXc​.

判断伙伴所处的中心位置状态 Y c n f \frac{Y_c}{n_f}nf​Yc​​. 若状态较优且不太拥挤,即

Y c n f < δ Y i \frac{Y_c}{n_f}nf​Yc​​

则向该中心位置移动一个步长, 否则将执行觅食行为.

function [x_swarm, x_swarm_fitness] = swarm(x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值