我们一般使用遗传算法是用来处理最优解问题的,下面是一个最优解问题的例子
①在Matlab界面找到应用程序选项,点击应用程序(英文版的Matlab可以点击App选项)
②找到Optimization工具箱,点击打开
首先需要把方程转换为标准形式,也就是所有的方程都需要以≤的方式连接
目标函数也必须是min类型的,如果是max类型,则需要提取出一个符号后再来求解
我们先需要在Matlab的工作区创建以下几个变量:
变量名称 | 变量作用 | 变量形式 |
---|---|---|
f | 目标函数 | 函数文档形式 |
A,b | 线性不等式约束 | 矩阵 |
Aeq,beq | 线性不等式约束的左侧系数,右侧约束 | 矩阵 |
lb,ub | 决策变量上下界 | 矩阵 |
c,ceq | 非线性不等式约束和非线性等式约束 | 函数文档形式 |
funcition f = optimizations(x)
f = (x(1)-2)^2 + (x(2)-1)^2 + (x(3)-7)^2 + (x(4)-9)^2
end
这里需要注意的是,B矩阵是一个列向量,用来保存所有线性约束的右侧
这个例题并未出现线性等式的约束,所以我们可以直接赋值两个空矩阵
非线性等式和非线性不等式我们也需要单独用一个函数进行存放
我们需要做以下几个步骤
Solver 是选择函数,我们需要选择最后一个遗传算法的函数
Fitness funcition 是我们的目标函数,用@加上我们创建的函数名即可
Number of variables 是我们变量的个数
Constraints 里面可以填写刚刚我们创建的变量矩阵
需要注意的是,选择整数的那一项我们是无法填写的,因为整数约束会和遗传算法产生冲突
接着在右侧的Option中,如果我们需要作图,可以勾选前三个选项,如下图
接着在下面的display to command window改成迭代
点击Start按键,开始运行遗传算法:
在最下面的final point可以获得我们的最优解:
如果需要遗传算法工具箱的源码,可以点击file,找到generate code