遗传算法与直接搜索工具箱学习笔记 三-----目标函数的约束
来源:互联网 发布:单倍型网络 编辑:程序博客网 时间:2024/05/09 14:53
在上一次的笔记中,我们编写了一个目标函数,大家可以看到这个目标函数的定义域(你不会不知道定义域吧,就是自变量的取值范围)没有任何的限制,在实际问题中,对自变量往往有很多的限制,比如,大于多少,小于多少等等,套用正规的江湖术语,称这些限制为“约束”。这一部分,就重点说一下“约束”的问题。约束被分成下面的4种类型:
1.边界约束。对自变量最大值与最小值的限制:X>=l 并且X<=u
2.线性不等式约束。Ax<=b,其中A为mXn的矩阵,x为nX1的矩阵,b为3X1的矩阵。描述了n个变量受到的m种不等式的限制。
3.线性等式约束。基本同2.
4.非线性约束。
还是具体看下面的例子吧,例子比较生动而且容易理解,呵呵。
一、边界约束
边界约束主要就是包含对一个变量上界与下界的限制,在优化函数中,你如果知道它的边界,将这些边界的约束包含在问题的描述中,那么你将会又快又精确的得到你需要的结果。
针对于一个矢量x,边界约束必须与矢量x的维数相同。比如,x=[x1,x2,x3,x4],其中X1等为标量,那么边界约束的长度也必须是4,比如下界的约束为L=[1,2,3,4],上界为U=[5,6,7,8],那么等同于下面的式子:
1<=x1<=5
2<=x2<=6
3<=x3<=7
4<=x4<=8
如果约束是
x3 ≥ 8
x2 ≤ 3
那么该如何表示呢?在Matlab中使用Inf代表正无穷,相应的-Inf表示负无穷。上下界的表示可以写为:L=[-Inf,-Inf,8,-Inf],上界U=[Inf,3,Inf,Inf].
二、线性不等式的约束
有下面的不等式
x1 + x3 ≤ 4,
2x2 – x3 ≥ –2,
x1 – x2 + x3 – x4 ≥ 9.
这里有4个标量组成的一个矢量x,写成Ax<=b形式的话,A就是一个3X4的矩阵,b为3X1的矩阵
A=[1 0 1 0; b=[4;
0 -2 1 0; 2;
-1 1 -1 1 ] -9]
x=[x1,x2,x3,x4]
Ax<=b
注意红色字体的数字与原来式子中的数字符号相反。
三、线性等式约束
基本同上面的线性不等式约束,唯一不同的是把A变成了Aeq,b变成了beq。在这里就不赘述了。
四、非线性约束
非线性不等式约束的形式如c(x)<=0,非线性等式约束的形式如ceq(x)=0;对于非线性约束的表示一般使用函数的方式,就像c(x)<=0与ceq(x)=0那样。
下面的一点比较重要,非线性约束的函数必须返回两个组成部分,一个是不等式约束,另一个是等式约束,尽管它们可能不是同时能够存在,如果其中的一个不存在,那么就返回[ ]。
假设有下列的不等式约束
把这个约束写成函数的M文件形式如下:
function [c,ceq]=ellipseparabola(x)
% Inside the ellipse bounded by (-3<x<3),(-2<y<2)
% Above the line y=x^2-1
c(1) = (x(1)^2)/9 + (x(2)^2)/4 - 1;%不等式约束1
c(2) = x(1)^2 - x(2) - 1;%不等式约束2
ceq = [];%等式约束,为空
end
ellipseparabola 返回了一个[ ]作为非线性等式约束的结果。同时两个不等式约束都是 ≤ 0的形式。
如果你提供了c与ceq的梯度信息,也许算法会运行的更快,给你更多可信的结果。下面就是包含了梯度信息的约束函数的写法例子。
function [c,ceq,gradc,gradceq]=ellipseparabola(x)
% Inside the ellipse bounded by (-3<x<3),(-2<y<2)
% Above the line y=x^2-1
c(1) = x(1)^2/9 + x(2)^2/4 - 1;
c(2) = x(1)^2 - x(2) - 1;
ceq = [];
if nargout > 2
gradc = [2*x(1)/9, 2*x(1);…
x(2)/2, -1];
gradceq = [];
end
附注:本文为转载文章
原文出处:http://blog.csdn.net/niuyongjie/article/details/4863979
原作者:niuyongjie
- 遗传算法与直接搜索工具箱学习笔记 三-----目标函数的约束
- 遗传算法与直接搜索工具箱学习笔记 三-----目标函数的约束
- 遗传算法与直接搜索工具箱学习笔记 二-----编写自己的目标函数
- 遗传算法与直接搜索工具箱学习笔记 二-----编写自己的目标函数
- 遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理
- 遗传算法与直接搜索工具箱学习笔记 十-----遗传算法的工作原理
- 遗传算法与直接搜索工具箱学习笔记 一-----概述
- 遗传算法与直接搜索工具箱学习笔记 一-----概述
- 遗传算法与直接搜索工具箱学习笔记 五-----使用GPS算法寻找一个函数的最小值
- 遗传算法与直接搜索工具箱学习笔记 五-----使用GPS算法寻找一个函数的最小值
- 遗传算法与直接搜索工具箱学习笔记 四-----从直接搜索算法开始
- 遗传算法与直接搜索工具箱学习笔记 四-----从直接搜索算法开始
- 遗传算法与直接搜索工具箱学习笔记 -----从直接搜索算法开始
- 遗传算法与直接搜索工具箱学习笔记 四-----从直接搜索算法开始
- 遗传算法与直接搜索工具箱学习笔记 八-----遗传算法概述
- 遗传算法与直接搜索工具箱学习笔记 九-----遗传算法举例
- 遗传算法与直接搜索工具箱学习笔记 八-----遗传算法概述
- 遗传算法与直接搜索工具箱学习笔记 九-----遗传算法举例
- TensorFlow15: 中文语音识别
- SdCard读取文件和音乐
- Grub
- MySQL 大表优化方案
- 和为S的连续正数序列
- 遗传算法与直接搜索工具箱学习笔记 三-----目标函数的约束
- TensorFlow16: 根据脸部识别性别和年龄
- vxworks中FUNCPTR、LOCAL、STATUS的原型
- 编译原理简单讲解
- RESUME 简历相关
- [翻译自MOS文章]OGG的管理者进程总是监听在默认主机和端口上.
- Android Studio 缓存文件夹配置
- Httpclient的Get请求和Post请求
- String to Integer (atoi)