24小时热门版块排行榜    

查看: 971  |  回复: 10

wangu

金虫 (正式写手)

[求助] 遗传算法问题求助 已有4人参与

打算求解一个函数的最大值f(x1,x2,x3),但是变量x1,x2,x3之间有个严格的约束关系即x1<x2<x3,否则不能输出函数值,请问该如何处理?MATLAB中的ga函数可以处理这样的问题吗?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

向着梦想飞
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

yanshuiting

新虫 (正式写手)

matlab遗传工具箱没有用过,你的约束关系确定了求解区域,可不可以在这方面做做文章

发自小木虫Android客户端
2楼2015-11-11 11:50:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wenqu

铁杆木虫 (职业作家)

酷酷文曲

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
wangu: 金币+10 2015-11-19 17:38:27
就是对你要求解的那个函数文件做这样的处理:如果三个变量满足x1<x2<x3,就有f(x1,x2,x3);否则,就让f等于一个很小的值。这样通过遗传选择找到你要的结果了啊。其实,楼上有写的。

[ 发自手机版 http://muchong.com/3g ]
不羁年华
6楼2015-11-15 13:16:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
wangu: 金币+5 2015-11-11 14:25:06
可以自己加一个罚函数,
类似于:
if x1<x2<x3
obj=inf
else
obj=...

obj表示目标函数
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2015-11-11 13:23:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wenqu

铁杆木虫 (职业作家)

酷酷文曲

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
wangu: 金币+10 2015-11-15 11:36:13
对目标值进行条件选择,加编个程序就好啦

[ 发自手机版 http://muchong.com/3g ]
不羁年华
4楼2015-11-15 00:21:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangu

金虫 (正式写手)

引用回帖:
4楼: Originally posted by wenqu at 2015-11-15 00:21:35
对目标值进行条件选择,加编个程序就好啦

能否说的再详细一点?多谢
向着梦想飞
5楼2015-11-15 11:36:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangu

金虫 (正式写手)

引用回帖:
6楼: Originally posted by wenqu at 2015-11-15 13:16:33
就是对你要求解的那个函数文件做这样的处理:如果三个变量满足x1<x2<x3,就有f(x1,x2,x3);否则,就让f等于一个很小的值。这样通过遗传选择找到你要的结果了啊。其实,楼上有写的。
...

试了一下,不可行。随机生成的初始种群几乎都不满足约束条件。
向着梦想飞
7楼2015-11-19 17:39:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wenqu

铁杆木虫 (职业作家)

酷酷文曲

【答案】应助回帖

好吧,看来最好用工具箱了,在定义种群的时候就把区间约束条件定义进去。要不然,你这个定义9个个体,确实概率上只有一个个体能满足约束条件。除非你把种群规模弄得很大,100有效个体估计需要900个个体

[ 发自手机版 http://muchong.com/3g ]
不羁年华
8楼2015-11-19 19:25:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wenqu

铁杆木虫 (职业作家)

酷酷文曲

【答案】应助回帖

不对,27个个体只有一个是有效的,一般至少要100个有效个体,估计得定义2700个个体

[ 发自手机版 http://muchong.com/3g ]
不羁年华
9楼2015-11-19 19:26:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wang_chuan

银虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
wangu: 金币+5 2015-11-23 14:16:07
工具箱比较不灵活,最好还是自己写代码,非得满足x1<x2<x3这个条件的话, 初始化时加一个判断如果生成的初始解不满足这个条件就重新生成初始值,直至所有初始解都满足这个条件;在优化过程中,如果生成了不满足这个条件的解的话,直接放弃,原种群不发生任何变化。这样的话,程序迭代执行一定次数后就会有新解生成了。
10楼2015-11-22 14:45:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wangu 的主题更新
信息提示
请填处理意见