求助:关于matlab遗传算法工具箱中约束的输入问题

例如我想要的约束为:1<x1<x2<x3<x4<x5<1.3而matlab遗传算法工具箱中译码矩阵FieldD=[lenlbubcodescalelbinubin],其中... 例如我想要的约束为:1<x1<x2<x3<x4<x5<1.3
而matlab遗传算法工具箱中译码矩阵FieldD=[len lb ub code scale lbin ubin],其中的lb和ub的输入却似乎只能是数值,即只能给定x1 x2 x3 x4 x5的上下界[1 1.3],使得1<x1<1.3,1<x2<1.3,.........,1<x5<1.3。而我想要的是 1<x1<x2<x3<x4<x5<1.3 。
请问这个问题怎么解决?
展开
 我来答
tianxiawulang
2013-03-01 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2552万
展开全部
遗传算法工具箱的函数GA基本调用格式如下:
X = GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub)
其中前两个参数分别是适应度函数和变量个数,第三、四个参数(A和b)即为线性不等式约束。

你现在需要做的是,增加几个线性约束条件:
x1 < x2
x2 < x3
x3 < x4
x4 < x5
不过,有个问题,遗传算法等优化工具对不等式约束的要求,都必须是闭集(带等号的不等式),也就是说,要的是类似下面这样的约束:
x1 <= x2
x2 <= x3
x3 <= x4
x4 <= x5
不知道你的问题是否允许把约束放宽到上面的形式,如果可以,就很简单了(如果不能放宽,我暂时还没想起怎么解决):
x1 - x2 <= 0
x2 - x3 <= 0
x3 - x4 <= 0
x4 - x5 <= 0
也就是调用函数时,线性约束的A和b分别为
A = [
1 -1 0 0 0
0 1 -1 0 0
0 0 1 -1 0
0 0 0 1 -1
];
b=[0;0;0;0];
追问
谢谢你热心的回答,让我学到了不少东西。
不过我用的工具箱是网上下载的,不是用的matlab自带的,函数里面没有发现您所说的加不等式的地方。
打算自己在程序里面设一个if语句判断一下算了。
追答
网上找到的第三方遗传算法工具箱影响力比较大的有三四个,我不知道您用的是哪一个。
如果没特别原因,建议您考虑使用MATLAB官方的工具箱试试,应该说总体上优于其他几个。对于有约束优化问题而言,线性不等式或等式约束属于很基本的,如果不支持会很受限制。
早些时间的工具箱名称叫遗传算法和直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox),从R2010a开始,经扩充后改名为全局优化工具箱(Global Optimization Toolbox)。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
peace_su03
2013-02-28 · TA获得超过1397个赞
知道小有建树答主
回答量:328
采纳率:100%
帮助的人:352万
展开全部
保留 x1 x2 x3 x4 x5的上下界[1 1.3],
增加 约束 x1<x2 ,
x2<x3,
x3<x4,
x4<x5
追问
谢谢你的回答!请问
x1<x2 ,
x2<x3,
x3<x4,
x4<x5 如何加到遗传算法函数里面里面?我是用的遗传算法工具箱里的函数在做,是可以直接用遗传算法工具箱的某个函数,还是要以惩罚函数的形式添加到目标函数里面?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式