1、1 系泊系统的设计 摘要 近海系泊系统作为气象监控、海洋探测的主要载体工具,对工程的实际应用有一定的积极作用 1,研究系泊系统在不同环境状况下的内在关系,进而给出适应不同情况的设计方案, 并编写相应的应用软件, 有着不能忽视的现实意义 2。 针对问题一 ,在整个系泊系统处于最终平衡状态下,从系统的上部钢管开始受力分析计算,建立不同方向上力的平衡方程和以下部链结点为取距中心的力矩平衡方程,求得钢管倾斜角度以及下部单元间相互作用拉力,进而计算出钢管的相对位置改变量。继续分析下部单元的受力情况,建立相同的平衡方程组并求解,通过反 复迭代计算,建立以浮标吃水深度为自变量的迭代代数模型,可求得河道底部的
2、链环倾斜角度以及整个系泊系统的垂悬高度。进而利用粒子群算法优化上部浮标的吃水深度,并经过多次迭代优化,最终得到水深 18 米并且风速为 12m/s和 24m/s 时,浮标吃水深度分别为 0.7348 米和 0.7489 米,同时算出各节钢管的倾斜角度和各单元的位置坐标(附录及支撑材料),以及浮标游动区域半径14.2005 米和 17.3203 米。结合理想状态下的锚链悬链线方程拟合位置坐标数据得出良好的锚链形状曲线方程(式 1.16-1.17),并利用 CAD 软件绘 制了所得结果下的系泊系统 3-维 立体分布示意图 (图 10)。 针对问题二 ,利用上述问题一所建立模型计算可知底部链环以及钢
3、桶倾斜角度均不满足题目条件。根据重物球和浮标吃水深度对于整个系统的影响,从系泊系统悬挂的重物球质量为 1200kg 开始枚举,并利用适应度良好的粒子群算法计算出相应状态下的浮标吃水深度、链环和钢桶的倾斜角度,直到角度满足题目要求时,即可得到在已给风力和零件倾斜角度等约束条件下,悬挂重物球的最小质量。再继续增加重物球质量,直到吃水深度等于 2时终止,得到满足所有条件下重物球的最大悬挂质量,最终得出 悬挂重物球的范围为 1974kg 至 5294kg。 针对问题三,依据问题的现实情况,综合考虑钢管的体积、钢管的水动力及浮力,结合上述问题一和问题二的代数模型,以钢桶、底部链环倾斜角度及整个系统的垂悬
4、高度三者为优化变量,在给定锚链长度后,建立不同风速、水流速度及海水深度时以粒子群算法为基础的多目标非线性规划模型。根据锚链型号从 I型到 V 型依次计算满足规划的最优解,判断钢桶、链环的倾斜角度及浮标的吃水深度是否满足题目要求。若吃水深度达到浮标吃水上限则采用下一个型号的锚链重复上述计算直到三个目标变量全部满足题目要求。最 终得到了在给定锚链长度后, 不同风速、水流速及海水深度下,给出所需最轻链条型号、 重物球的最小重量等信息的系泊系统设计方案“选择程序流程” (图 13)和 测试 结果 (表格 4) 。 为了能够广泛使用并大力推广 问题三所得 的“ 选择程序流程 ”,通过 利用MATLAB
5、软件成功设计出基于上述程序的人性化 GUI 图形交互界面 (图 14) ,在不了解整个系泊系统的情况下,输入现实环境的风速、水流速及海水深度也能快速求解得到满足条件的锚链型号以及相应的重物球质量,并给出了实际情况下的系泊系统的各单元位置坐标分布图,为用户的选择带来了极大便利。 最 后 , 对模型的优化提供了若干条改进思路 及每种改进思路下的具体实现方法,并对模型的优劣性给出了客观的评价及分析。 关键词 : 系泊系统设计 ;代数模型;粒子群算法;多目标非线性规划; GUI 设计。 2 一、问题重述 1.1 问题背景 近浅海观测网的传输节点由浮标系统、系泊系统和水声通讯系统组成。某型传输节点的浮标
6、系统可简化为底面直径和高均为 2m 的圆柱体,浮标的质量为1000kg 。系泊系统由钢管、钢桶、重物球、电焊锚链和特制的抗拖移锚组成。水声通讯系统安装在一个长 1m 、外径 30cm 的密封圆柱形钢桶内,设备和钢桶的总质量 为 100kg 。 在系泊系统中,锚的质量为 600kg ,锚链选用无档普通链环。锚与锚链末端链接,要求链接处的切线方向与海床的夹角不超过 16 度,否则锚会被拖行,致使节点移位丢失。钢管共 4 节,每节长度 1m ,直径为 50mm ,每节钢管的质量为 10kg。钢桶上接第 4 节钢管,下接电焊锚链。钢桶竖直时,水声通讯设备的工作效果最佳,钢桶的倾斜角度超过 5 度时,设
7、备的工作效果较差。为了控制钢球桶的倾斜角度,钢桶与电焊锚链接处可悬挂重物球。 系泊系统的设计问题就是确定锚链的型号、长度和重物球的质量,使得浮标的吃水深度和 游动区域及钢桶的倾斜角度尽可能小。 1.2 问题提出 问题 1 某型传输节点选用 型电焊锚链 22.05m,选用的重物球的质量为1200kg。现将该型传输节点布放在水深 18m 、海床平坦、海水密度为1.025103kg/m3 的海域。若海水静止,分别计算海面风速为 12m/s 和 24m/s 时钢桶和各节钢管的倾斜角度、锚链形状、浮标的吃水深度和游动区域。 问题 2 在问题 1 的假设下,计算海面风速为 36m/s 时钢桶和各节钢管的倾
8、斜角度、锚链形状和浮标的游动区域。请调节重物球的质量,使得钢桶的倾斜角度不超过 5 度,锚链在锚点 与海床的夹角不超过 16 度。 问题 3 由于潮汐等因素的影响,布放海域的实测水深介于 16m20m 之间。布放点的海水速度最大可达到 1.5m/s、风速最大可达到 36m/s。请给出考虑风力、水流力和水深情况下的系泊系统设计,分析不同情况下钢桶、钢管的倾斜角度、锚链形状、浮标的吃水深度和游动区域。 二、问题分析 2.1 问题一分析 问题一作为整个问题的关键,需分析整个系泊系统在不同情况下全部变量间关系进而建立相关模型。我们从整个系统最终的稳定状态开始分析,由上而下先以上部钢管作为研究对象,利用
9、理论力学的相关知识,建立稳 定状态下的分力平衡方程和力矩平衡方程,进而解得钢管倾斜角及下段钢管的相互作用拉力。继续分析下段钢管,建立力与力矩的平衡方程, 求解倾角和相互拉力 , 重复迭代计算可得海床底部 末节锚链 的倾斜角 。 利用上述计算得到的各单元倾斜角度 , 可以得出整个系统的垂悬高度 , 至此建立了适应本题的代数迭代模型 , 利用粒子群算法优化上部浮标的吃水深度 , 进而改变倾斜角及相互拉力 , 最终迭代计算到满足题目条件的吃水深度 , 最后计算了该吃水深下 ,不同海面风速时 的 钢桶和各节钢管3 的倾斜角度、锚链形状、浮标的吃水深度和游动区域。 2.2 问题二分析 问题二可 以作为问
10、题一的拓展 , 应用 在 问题一 中 建立的代数迭代 -粒子群算法模型解得满足风力条件下的海床链环的倾斜角度大于最大倾角 。由于所悬挂重物球的质量不是一个定值,故从悬挂重物球原本的重量 1200kg 开始增加,运用问题一的模型算法求解每增加一次时的吃水深和倾斜角,若不满足角度约束条件,则重物球质量增加 1 个单位,直到得到满足条件的重物球质量的下界。若继续增加重物球的质量,直至吃水深度等于 2m 时为止,这时的重物球质量即为满足条件时重物球质量的上界。由此,得到满足风力条件下的悬挂重物球的取值范围。 2.3 问题三分析 问题三对 模型中的变量做出了更 加丰富 多样化的 推广。 我们从现实情况出
11、发 ,考虑锚链的体积讨论计算 , 加入流水动力以及 每节锚链 浮力 , 使模型更符合现实实际 情况。在设计系泊系统时,给定锚链长度,需要考虑风力、水流力和水深情况下的系泊系统设计。根据现实环境,将三者作为模型的输入变量。同时,将钢桶、海床锚链倾斜角以及系泊系统垂悬高度作为目标变量,建立多目标非线性规划模型。在给定变量的情况下,利用粒子群算法依次计算满足题目要求的最优锚链型号及相应的最轻重物球悬挂质量,建立了系泊系统设计的锚链及重物球的“选择流程模型”。最后在已建立的模 型基础上,设计出了更加便于推广和应用的“系泊系统设计方案”软件。 三 、 模型假设 1. 浮标竖直漂浮在海面上不发生倾斜 ;
12、2. 海面上没有波浪不产生波生力 ; 3. 锚链在拉力作用下不伸长 ; 4. 锚链的体积很小可以忽略 ; 5. 重物球和锚链由铸钢材料构成 ; 6. 只有钢管、钢桶、锚链的侧面面积在水流速度法平面上产生投影; 7. 锚在海床上具有抓地力 , 不发生水平方向上的移动 。 四 、 符号说明 表示浮标到钢桶第 个零件的重力 表示钢桶到锚 间第 个锚链的重力 表示浮标到钢桶第 个零件的浮力 表示钢桶到锚 间第 个锚链的浮力 表示浮标到钢桶第 个零件与轴正向的夹角 4 表示钢桶到锚 间 第 个锚链与轴正向的夹角 表示钢管到钢桶间第 个零件对它上端第 1个零件在 轴负向的拉力 表示钢管到钢桶间第 个零件对
13、它上端第 1个零件在 轴负向的拉力 表示钢管到钢桶间第 1个零件对它 下 端第 个零件在 轴正向的拉力 表 示钢管到钢桶间第 1个零件对它 下 端第 个零件在 轴正向的拉力 表示钢桶到锚间第 个锚链对它上端第 1个零件在 轴负向的拉力 表示钢桶到锚间第 个锚链对它上端第 1个零件在 轴负向的拉力 表示钢管到钢桶间第 1个零件对它 下 端第 个锚链在 轴正向的拉力 表示钢管到钢桶间第 1个零件对它 下 端第 个锚链在 轴正向的拉力 五 、 模型的建立与求解 5.1 问题一模型的建立与求解 基于整个系统处于平衡状态来进行分析,首先 将系泊系统的每一个零件都个体化,分析它们各自的受力情况 ,再依照系
14、统 零件 之间 的 相互作用的 关系, 由浮标到锚体,连锁性、 整体 性 的解决问题。 5.1.1 问题一模型建立 图一是整个传输节点示意图, 是具有典型的单点系泊系统特性的海洋单点浮标系统。我们 将它分为 四 部分,在整个系统处于平衡状态下 , 首先采用集中质量法 统一考虑单一零件的重力与浮力;其次,为便于后期理论分析和粒子群算法的编写,将零部件衔接处复杂的 相互作用 通过与水平方向和垂直方向的夹角,一致转化为 相应方向上的力 ;最后,以每一个零件衔接点为取距中心,在详细受力分析的基础上建立 力矩平衡方程,由此 ,采用迭代方法, 计算出每一个零件包括钢管、钢桶和锚链所处的位置坐标以及与水平面
15、的夹角。以下,就系泊系统中各部件的钢桶和各节钢管的倾斜角度、锚链形状、浮标的吃水深度和游动区域分别进行模型建立与求解。 5 图 1 整个传输节点示意图 1、 浮标受力分析 根据浮标所处的 外部 环境 分析它的受力情况。 首先 ,已知浮标自身重力 大小为 0,用 和 ( 2) 分别表示浮标所处的海面 风速以及浮标的吃水深度 。 浮标受力分析过程 如图 2, 定义 轴 负方向为浮标重力方向,同时 不失一般性,假设风向与 轴正向相吻合 , 所受 风力 值 为 0 = 0.6252, 此时,浮标所受浮力恰好沿 轴的正方向,并且可以计算出 浮力大小 0 = 水 0 = 水 0(),其中 0 = 2 4
16、是浮标底面积 。因此可得如下等式; 0 = 00 = 0.625 20 = 水 0 = 水 0()0 = 24(式 1.1) 同样如图二所示,钢管一链接浮标底部中心,并且给予浮标沿钢管自身方向的拉力 ,该力可作为 轴负方向 大小为 1的力 , 和 轴负方向 大小为 1的力 合成作用力。 图 2 浮标的受力分析图 通过以上分析,根据受力平衡可知: 0 风 = 0 0 1 1 1 y 6 1 +0 = 01 = 0(式 1.2) 因此, 联立式 1.1 和式 1.2 即可计算 出 1和 1的确切数值。 2、钢管间 受力分析 由 于钢管的刚性和 它们 之间的链接方式, 针对某钢管 ( 1 4) 而言
17、 ,除了受到重力 和浮力 之外 , 还受到了分别来自 上接钢管 和下接钢管对它的拉力 。假设钢管 的重力和浮力大小分别为 和 。 ( 1) 我们从钢管 1 开始,逐一分析每根钢管的受力情况。 当 = 1 时 , 由于 钢管 1 受到了来自浮标给它的拉力,如图 3,可将该力分解为沿 轴正向 大小为 1 的力 , 与沿 轴正向 大小为 1 的力 。 同时钢管 1 还受到了钢管 2 对它的拉力,而该力同样可分解为 具有 轴 负方向和 轴负方向的力,大小分别为 2 和 2。 图 3 钢管 1 的受力分析图 显然,根据相互作用力的性质,可知: 1 = 1 , 1 = 1 (式 1.3) 因为 钢管 1
18、同样处于静止状态,根据受力平衡可知: 2 +1 = 1 +12 = 1(式 1.4) 此时由以上方程即可计算出 2与 2的值 。 以下我们计算钢管 1 与水平面的夹角 1(如图 3)。 此处引入 理论力学中静力平衡 物体的力矩 平衡方程,以钢管底部链接点为取距中心,对钢管所受其余各力 , 计算其力矩的代数和 ,可得如下等式 : 1 1 1 1 2 2 1 7 1 21 1 +1 1 = 1 1 + 121 1 (式 1.5) 解得 : tan11 = ( 1 +21 11) 2 (式 1.6) 通过以上分析,计算得到 2 、 2和 1。 ( 2) 当 2 4 时 , 同 = 1时 类似, 如图
19、 4, 钢管 受到 钢管 1给予的来自 轴正方向和 轴正方向的力,大小分别为 与 ; 同时还受到 钢管 +1对它的拉力 , 该拉力在 轴负方向和 轴负方向的 力产生分力,大小分别为 +1 和+1。 图 4 钢管 i 的受力分析图 同样可得: = , = (式 1.7) 此时,从 = 2开始 ,通过反复迭代下列方程组, +1 = + +1=12 + = +12 ( = 2,3,4) (式 1.8) 其 中, = = 水 = 水 (24 )( =2,3,4) (式 1.9) 所以,可以 得到每根钢管的对应角度 : tan1 = ( +2 ) 2 ( = 2,3,4) , +1 +1 8 同时也可计
20、算出 5 和 5的值 。 3、钢桶的受力分析 钢桶与钢管的受力情况类似(见图 5)。一方面,钢桶受到钢管 4 对它的拉力,可将拉力分解为 轴正方向和 轴正方向的力,大小分别为 5 和 5 。 第一节锚链对桶的拉力在 轴负方向和 轴负方向的分力大小为 1 和 1 ,另一方面,钢桶自身重力以及受到的浮力值分别 5和 5,但由于其下端链接一个重物球,所以其受力分析图为: 图 5 钢桶的受力分析图 根据桶的受力平衡: 1 = 5 +5 5 球1 = 5125 5 +5 5 = 5 5 +125 5(式 1.10) 其中 : 5 = 55 = 水 5 = 水 5(524 )(式 1.11) 解得: ta
21、n1 5 = ( 5 +25 5) 25 (式 1.12) 同时也可计算得出 1 和 1 。 4、锚链的受力分析: 由已给数据可计算出选用 型电焊锚链 共 22.05m 长,包含 210 节锚链。考虑到问题一中锚链外部环境,特别是 水下环境比较稳定,水流速度为 0,所以锚链不会受到来自水对它的水流阻力 ,根据查询相关资料可知,铸钢为现有锚链的5 5 5 5 5 1 球 1 9 主要选用材料,密度为 7.8103kg/3,因此可计算出每节锚链所受到的浮力为0.9462N,相较与整个系泊系统而言,它产生的影响可以忽略。而在问题三的模型建立过程中,由于水流速度以及锚链型号均会产生较大变化,所以锚链的
22、浮力对系泊系统方案设计 来说是无法忽略的重要因素。相关内容将在问题三求解过程中进行详细说明。 对任意锚链 ( 1 210)受到上部链接零件对它的拉力,将力沿 轴 正方向和 轴正方向进行分解得到 的力 大小 分别 为 和 。同时还受到下部链接零件对它的拉力,将力沿 轴负方向和 轴负方向进行分解得到 的力 大小 分别 为+1 和 +1 。 最后,该锚链重力大小为 , 如图 6 所示。 图 6 锚链的受力分析图 根据相互作用力的性质,可得: = , = (式 1.13) 由于 锚链处于 受力 平衡状态 ,因此由有如下方程组成立: +1 = +1 = cos = sin + 12 cos = 1,21
23、0 (式 1.14) 可解得: tan1 = ( 2 ) 2 (式 1.15) 同时也可直接计算得出 +1 和 +1 。 在该问题中,需要考虑以下三类约束条件: 当 = 210时 ,求得 211 ,即为第 210 节锚链对锚产生的在 轴正方向上锚链 锚链 10 的拉力大小。 可以通过比较 211 和锚的重力 锚 之间的大小 ,当211 16或 90 5 5, 当 2时, 5 5 +1, 返回步骤二 ; 步骤 4: 若 210 16或 90 5 5, 当 2时, 此问题没有可行解,算法结束; 步骤 5: 若 210 16且 90 5 5,当 2时,当前 5即为重物球质量选取范围的下界 ,输出 。
24、 令 5 5 +1, 返回步骤二 ; 步骤 6: 若 210 16且 90 5 5,当 2时, 5 1即为重物球质量选取范围的 上 界 ,输出 。 根据以上求解步骤,可得到框图如下: 图 11 问题二算法流程图 最终得出 悬挂重物球的范围为 1974kg 至 5294kg。 16 问题三的模型建立与求解 从现实情况出发, 系泊系统的设计需考虑不同地区的风力、水流力以及水深情况。 由于出现了水流力则整个系泊系统的所有单元受到水平方向的水动力,为了让模型更接近真实情况并使程序编制更为简单,这里考虑到下部锚链的体积,查询资料得到锚链的主要材料铸钢的密度为 7.5103kg/m通过已知数据求出体积 ,
25、 从而 使得锚 链受到了与问题一、二不同的 浮 力及水动力,这时分析整个系泊系统时需要在问题一、二的基础上改进。 与问题一 、 二不同 ,引入水动力后, 上部浮标 、 钢管 、 钢桶的受力分析与上述基本一致这里不再赘述 , 在考虑到锚链的体积后 ,锚链的受力情况与上述情况出现不同,下面作简要分析: 图 12 锚链受力分析图 这里取出两端锚链,对比上述分析过程,锚链还受到了水平方向上的水动力,以及竖直方向上的浮力,取出锚链 i,对锚链在 x 方向, y 方向列出力的平衡方程: +1 = + (式 3.1) +1 = + (式 3.2) 得到与锚链 i+1 的相互作用拉力,这里再对 锚链 i 下部
26、链结点为力矩中心列出力矩的平衡方程: 2cos + a cos = a sin +2 cos +a sin 进而解得: = arctan (2 +2 ) (式 3 .3) 这样得到了与上述一致的拉力、倾斜角迭代方程,通过此方程可以得到最终的海床链环倾斜角等结果。系泊系统的设计考虑到钢桶、海底河床的倾斜角以及锚链 锚链 17 系统的垂悬高度,现在将三者作为多目标优化变量,建立 基于粒子群算法的锚链型号、重物球质量选择模型。 图 13 方案设计算法流程图 如上图 13, 当风力 、 水流力以及水深作为自变量输入时 , 根据不同锚链单位长度质量均匀变化的特性 , 从第一个锚链型号开始 , 利用粒子群
27、算法求解满足多变量优化条件的重物球质量 , 若可求得结果 , 则输出相应的锚链型号以及相应的重物球质量 ,若在题目条件下没有可行结果,则更换锚链型号重新计算优化直到有 输出结果,若全部锚链都没有满足题目要求,则输出没有可提供的方案。 18 这样输出的锚链选择方案按照锚链单位长度质量 进行依次选择,可以保证最终输出结果满足锚链总体质量最小,这具有良好的现实意义,可以为生产厂家节省生产成本并为消费者降低开销,长远考虑使生产商与消费者之间形成良性循环。 求解结果: 我们假设当风速为 18m/s 水流速为 0.4m/s 水面高度为 17m,此时各型号锚链对应求得的 锚链和 重物球 总体 质量最小及对应
28、的浮标吃水深度如下表所示 锚链型号 浮标吃水深度( m) 重物球( kg) 0.407137 113.27 0.424248 168.81 0.454070 265.66 1.000205 2035.52 1.921424 5027.32 表格 4 不同锚链型号下各个指标 六 、 模型的评价与改进 6.1 模型的优缺点 本文利用了简单实用的静力学关系推导得到了离散形式的代数迭代模型 , 采用高效的粒子群算法计算出可行的结果 , 并利用理想状态下的锚链形状方程拟合得到了几乎完全一致的位置分布曲线 , 充分验证了模型的可行性 ;并利用结合倾斜角度及垂悬高度的多目标非线性优化模型求解得到了复杂情况下
29、的可行结果;最后还给出了复杂条件下的系统设计方案选择算法,特别还编制了 面向用户友好的 GUI 图形操作界面,将问题的解决难度大大降低。 本文的不足之处体现在算法的求解时间稍长 ,后续可以考虑优化改进粒子群算法或选择其他启发式算法使得求解时间降低。 6.2 模型的改进 6.2.1 GUI 图形交互界面设计 为了更好地推广问题三的模型思想并将其应用到实际生活中,我们特别利用MATLAB6编制了面向用户友好的 GUI 图形交互界面(见支撑材料源代码),用户不需要掌握数学软件的使用方法,只需直接将不同的风速、水流速以及近海深度输入到 GUI 中,点击计算就可以得到满足条件的方案输出锚链的型号以及重物
30、球 的质量,若没有得到可行方案则输出无解。 以水流速 0.8m/s,风速 25m/s,水深 19m 作为外部环境标准输入到 GUI 界面中如下图 : 19 图 14 GUI 图形操作界面 点击计算按钮可得锚链型号选择 号,重物球质量为 599.2706kg,在单击绘图按钮可以画出可行方案下的系泊系统的平面坐标分布图,我们可以看出在曲线下端为一近似悬链线方程,在上部突然发生转折,显然转折处为重物球悬挂处,使得整体倾斜角度变大。 总体来看,我们编制的 GUI 软件具有良好的实用性,极大地降低了用 户的学习成本。 6.2.2 风向和水流向存在夹角 在本文的讨论中将风速方向以及后来的水流速方向默认为同
31、一方向,这样快速得到整个系统本质的代数迭代模型并降低了模型的分析求解难度。实际情况中风速方向和水流速方向会存在一定的夹角,这时考虑整个系统,水中单元受到单一方向的水动力,上部浮标受到水动力以及风力,两种作用力都处在模型中的水平坐标系中,可以将风力和水动力合成在一个矢量方向上,这时只有相互拉力的水平分量发生变化,依旧可以利用问题一所建立的模型进行有效求解,当风力方向与水流速方向相反时同理。 6.2.3 浮标斜漂在 海面上 在本文的讨论中将上部浮标的漂浮角度定位竖直方向不发生偏斜,我们凭借生活经验可以知道在实际生活中浮标会有一定角度斜漂在海面上,这时会出现力矩求解时角度增加一个变量,更需注意的是浮
32、力作用的作用点与浮标的中心不在同一点处,这时受力情况会更加复杂,但只需要增加一个斜偏角度,再利用上述模型即可得到可行结果 20 七 、 参考文献 1袁梦 ,范菊 ,缪国平 ,朱仁传 . 系泊系统动力分析 J. 水动力学研究与进展 A辑 ,2010,03:285-291. 2王磊 . 单点系泊系统的动力学研究 D.中国海洋大学 ,2012. 3刘建华 . 粒子群算法的基本理论及其改进研究 D.中南大学 ,2009. 4杜英阁 . 多目标非线性规划算法的研究 D.西安建筑科技大学 ,2011. 5 张 庆 海 , 张琼 . Matlab 在 数 学 建 模 中 的 应 用 J. 中 国 集 体 经
33、济 ,2008,06:170-171. 6宗节保 ,段柳云 ,王莹 ,段柳浠 ,李昕 . 基于 MATLAB GUI 软件制作方法的研究与实现 J. 电子设计工程 ,2010,07:54-56. 21 八 、 附录 问题一 : 文件名 main.m function rad_x=main() %粒子群算法入口 xxf=zeros(1,10); clc;close all; E0=0.001; %允许误差 MaxNum=300; %粒子最大迭代次数 narvs=1; %目标函数的自变量个数 particlesize=30; %粒子群的规模 c1=2; %每个粒子个体学习因子 c2=2; %每个粒
34、子社会学习因子 w=0.6; %惯性因子 vmax=0.8; %粒子群的最大飞翔速度 xp=2*rand(particlesize,narvs);%粒子所在的初始位置 , 本题范围 0,2 v=2*rand(particlesize,narvs); %粒子的飞翔速度 (自己取值) for i=1:particlesize for j=1:narvs f(i)=fitness5(xp(i,j); end end personalbest_x=xp; personalbest_f=f; Best_f,i=min(personalbest_f); %从当前最优例子中找出最好的作为全局最优 Best_
35、x=xp(i,:); k=1; while kvmax; v(i,j)=vmax; elseif v(i,j)0) x_sum(i+5)=cos(rad2(i)*0.105; y_sum(i+5)=sin(rad2(i)*0.105; end end x=sum(x_sum); y1=sum(y_sum)+h; flag=100; %标记位 for i=1:210 if(rad2(i)=0) flag=rad2(i); end end y=abs(y1-18); %rad_x=rad; x_biao=zeros(1,215); y_biao=zeros(1,215); x_biao(1)=x_
36、sum(215); y_biao(1)=y_sum(215); for i=2:215 i2=216-i; if(x_sum(i2)=0) x_biao(i)=x_biao(i-1)+0.105; else x_biao(i)=x_biao(i-1)+x_sum(i2); end 24 y_biao(i)=y_biao(i-1)+y_sum(i2); end %rad_x=x_biao,y_biao;%各节点信息 rad_x=rad; end 问题二 文件名 main2.m function main2() ball_m=1200; pp=0 flag=0; h=0; tic while(h1
37、.48353) if(flag=0) min=ball_m; flag=flag+1; pp=rads; end end h=H; ball_m=ball_m+10; end toc min ball_m flag pp end 文件名 Number2.m function rad,rads,H=Number2(ball_m) clc;close all; E0=0.001; %允许误差 MaxNum=80; %粒子最大迭代次数 narvs=1; %目标函数的自变量个数 25 particlesize=30; %粒子群的规模 c1=2; %每个粒子个体学习因子 c2=2; %每个粒子的社会学习
38、因子 w=0.6; %惯性因子 vmax=0.8; %粒子的最大飞翔速度 xp=2*rand(particlesize,narvs);%粒子所在的初始位置 , 本题范围 0,2 v=2*rand(particlesize,narvs); %粒子的飞翔速度 (自己取值) for i=1:particlesize for j=1:narvs f(i)=fitness6(xp(i,j),ball_m); end end personalbest_x=xp; personalbest_f=f; Best_f,i=min(personalbest_f); %从当前最优例 子中找出最好的作为全局最优 Be
39、st_x=xp(i,:); k=1; while kvmax; v(i,j)=vmax; elseif v(i,j)0) x_sum(i+4)=cos(rad2(i)*0.105; y_sum(i+4)=sin(rad2(i)*0.105; end end x=sum(x_sum); y1=sum(y_sum); flag=100; %标记位 for i=1:210 if(rad2(i)=0) flag=rad2(i); end end y=abs(y1-18); x_biao=zeros(1,216); y_biao=zeros(1,216); x_biao(1)=x_sum(216); y
40、_biao(1)=y_sum(216); for i=2:216 i2=217-i; if(x_sum(i2)=0) x_biao(i)=x_biao(i-1)+0.105; else x_biao(i)=x_biao(i-1)+x_sum(i2); end y_biao(i)=y_biao(i-1)+y_sum(i2); end %rad_x=x_biao,y_biao;%各节点信息 rad1=rad; end 28 问题三 文件名 main3.m function main3() v_shui=0.8; v_feng=36; high=18; %水面高度 miao=0.078 3.2 0.
41、2496 0.00158 0.000032 0.105 7 0.735 0.003146 0.0000942 0.12 12.5 1.5 0.004804 0.000192 0.15 19.5 2.925 0.0075 0.000375 0.18 28.12 5.0616 0.010808 0.000649; ball=zeros(5,2); for i=1:5 xm,fv=PSO2(fitness4,high,i,v_feng,v_shui); if(xm(2)0) ball(i,2)=xm(2); %重物球 ball(i,1)=xm(1); %水深 end if(xm(1)2) ball(
42、i,1)=-1; ball(i,2)=-1; end end ball 文件名 PSO2.mat functionxm,fv=PSO2(fitness4,high,xinhao,fv,v_shui) %给定初始条件 % c1=2;%学习因子 1 c2=2;%学习因子 2 w=0.6;%w惯性权重 M=100;%M最大迭代次数 D=2;%搜索空间维数 N=30;%N初始化群体个体数目 format long; for i=1:N for j=1:D x(i,j)=randn; v(i,j)=randn; end end %先计算各个粒子的适应度 pi和 pg% for i=1:N 29 p(i)
43、=fitness4(x(i,:),high,xinhao,fv,v_shui); y(i,:)=x(i,:); %y为个体记忆方向 end pg=x(N,:); for i=1:(N-1) if fitness4(x(i,:),high,xinhao,fv,v_shui)fitness4(pg,high,xinhao,fv,v_shui) pg=x(i,:); %为全局最优 end end for t=1:M for i=1:N v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:)+c2*rand*(pg-x(i,:); x(i,:)=x(i,:)+v(i,:); if fitness4(x(i,:),high,xinhao,fv,v_shui)p(i) p(i)=fitness4(x(i,:),high,xinhao,fv,v_shui); y(i,:)=x(i,:); end if p(i)fitness4(pg,high,xinhao,fv,v_shui) %两次判断更新局部最优和整体最优 pg=y(i,:); end end Pbest(t)=fitness4(pg,high,xinhao,fv,v_shui); end xm=pg; disp(目标函数的最小值为 : ) fv,phi=