找回密码
 立即注册
查看: 775|回复: 20

Matlab遗传算法工具箱使用简介

[复制链接]
发表于 2021-12-14 21:52 | 显示全部楼层 |阅读模式
1.简介
遗传算法是现代优化算法之一,为方便使用Matlab提供了遗传算法工具箱,可以方便我们解决一般的优化问题。


遗传算法工具箱的打开途径为:首先在App中找到Optimization工具箱


然后在Solver中找到ga打开就行了,具体的显示界面如下


我们主要用到的就是左边这一块了,在里面输入参数就行了
2.例题
下面我通过几个例题来介绍参数怎么输入
例1,求解f(x)的最小值


首先我们要编写适应度函数,一般就是目标函数,保存为m函数文件


接下来就是输入参数了


在Fitness function(适应度函数)处输入@目标函数名(因为此处传递的是函数句柄所以一定要加@,不然会出错),Number of Variables是指待求变量的个数,接下来就是输入约束条件了,以为此处约束条件是xi是0到0.9pi之间的实数,所以只需要在Bound处输入就行了,然后点击Start按钮就会求出结果。
例2


这个是求最大值,但遗传算法工具箱只能求最小值,所以我们编写适应度函数时在目标函数前加个负号就行了(当-z最小时,z也就最大了)。
目标函数为


以为此处设计到了不等式约束,所以需要先在Matlab中定义不等式约束,它的不等式约束表示形式为




在工作区要有约束条件的矩阵变量,和例1不同的是只需要在约束处添加不等式约束就行了。这求的是最大值的相反数。


例3


这题和前面不一样的是涉及到了非线性约束,所以需要编写非线性约束条件。
适应度函数


非线性约束m函数文件


其中c代表


ceq代表


此题相对前面的需要在Constraints中的Nonlinear constraint function处输入非线性约束m文件函数


以上例题还没有涉及到的参数由Aeq,beq这是线性等式约束的条件,以及Interger variable indices处的参数(这是指明那个参数是整数),具体的可参见最右边的版块

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-12-14 21:58 | 显示全部楼层
怎么限制输入为整数?
发表于 2021-12-14 22:00 | 显示全部楼层
在那个intege variable indices栏里面输入你的整数变量的序号
发表于 2021-12-14 22:04 | 显示全部楼层
为什么我运行的结果是输出参数过多,请问这要怎么解决
发表于 2021-12-14 22:12 | 显示全部楼层
不知道,你说的什么意思,是出现错误了?
发表于 2021-12-14 22:19 | 显示全部楼层
就是我尝试了一下例1,和你的一模一样,然后我电脑运行结果报错,说是输出参数太多
发表于 2021-12-14 22:19 | 显示全部楼层
这我还真不知道
发表于 2021-12-14 22:22 | 显示全部楼层
您好,请问一下多个变量互不相等怎么设置啊
发表于 2021-12-14 22:30 | 显示全部楼层
在intege那个里边输入 对应的序列就行了
发表于 2021-12-14 22:32 | 显示全部楼层
如果要求x1和x2不等,应该是x1-x2<0
x2-x1<0。但是自带的是小于等于。改怎么处理这个情况呢
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-23 01:35 , Processed in 0.202064 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表