24小时热门版块排行榜    

查看: 3874  |  回复: 1

laoyeye2

木虫 (小有名气)

[求助] matlab中用ga 多目标优化求解最小值

求助:
%目标函数
function f = my_first_multi2(x)
f=28.44-4.02583*x(1)-1.69425*x(2)+1.61083*x(3)+3.73125*x(4)+0.040375*x(1)*x(2)+0.055625*x(1)*x(3)-0.10937*x(1)*x(4)-0.008375*x(2)*x(3)-0.050375*x(2)*x(4)-0.10062*x(3)*x(4)+0.21031*x(1)^2+0.026363*x(2)^2 +0.0028125*x(3)^2+0.026563*x(4)^2;

%约束函数
function [c,ceq]=ga_con1(x)
c=[-2.11833+0.955422*x(1)+0.105*x(2)-0.81042*x(3)+0.3075*x(4)+0.080625*x(1)*x(2)-0.51688*x(1)*x(3)+0.28563*x(1)*x(4)-0.15338*x(2)*x(3)+0.10562*x(2)*x(4)-0.58938*x(3)*x(4)-0.014896*x(1)^2-0.000254*x(2)^2 +0.67885*x(3)^2+0.1476*x(4)^2-5];
ceq=[];

求解代码:
FitnessFunction=@ my_first_multi2;
lb=[4 15 4 5];
ub=[8 35 8 9];
[x,fval] = ga(FitnessFunction,4,[],[],[],[],lb,ub,@ga_con1)

最后出现的问题:Optimization terminated: no feasible point found.

x =

     4    15     4     5


大神帮我看看,问题出在哪里了,万分感谢。
回复此楼

» 猜你喜欢

世上无难事。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

laoyeye2

木虫 (小有名气)

首先非常感谢小木虫里面的“文刀星 ”,他的回复很好的解决了我的问题。以下为回复:
遇到这种问题的时候,第一,看看自己的约束函数有没有写错,如果是约束错了,当然就找不到满足约束的点啦。你随便把一个x=[4 15 4 5];代入你的约束函数计算,会发现,本来你的约束只有一个,但是返回的却是两个约束值!!!当然就是约束有问题了。问题的产生在于你写约束函数的格式或者说习惯很不好造成的。c=[...]的写法很不好,只要里面符号之间多了一个空格,那就多了一个约束,而且不是你想要的约束,你可以查查看,在0.000254*x(2)^2 +0.67885*x(3)^2的+号前多了一个空格,使得你的约束由一变二。最好这样写:function [c,ceq]=ga_con1(x)c=zeros(1,1);%多个约束的时候c=zeros(N,1),然后c(1)=...;c(2)=...;等等c(1)=-2.11833+0.955422*x(1)+0.105*x(2)-... 0.81042*x(3)+0.3075*x(4)+0.080625*x(1)*x(2)-0.51688*x(1)*x(3)+... 0.28563*x(1)*x(4)-0.15338*x(2)*x(3)+0.10562*x(2)*x(4)-... 0.58938*x(3)*x(4)-0.014896*x(1)^2-0.000254*x(2)^2+... 0.67885*x(3)^2+0.1476*x(4)^2-5;ceq=[];式子太长的时候,可以在符号的后面加三个点,然后回车在下面写,这样好看些,便于检查。记得是在符号的后面加,在前面加的话,某些情况也会出现由一生二的情况!!
世上无难事。
2楼2015-12-02 13:36:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 laoyeye2 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 2026国自然函评费到账 +16 羊腰板 2026-08-21 17/850 2026-08-23 23:02 by tianxiaochun
[基金申请] 让我中一个面上吧! +12 大萍1987 2026-08-20 15/750 2026-08-23 20:44 by 大萍1987
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +4 process2012 2026-08-23 5/250 2026-08-23 19:58 by jurkat.1640
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[基金申请] 93BebMhtakh前后11位开头都是大写 +7 且听虎啸 2026-08-17 8/400 2026-08-22 21:55 by 医学老男孩
[基金申请] 范进中举一文的中心思想 +3 炎黄贵胄 2026-08-22 4/200 2026-08-22 20:02 by mycsru
[基金申请] 只有每年这种时候来逛逛小木虫 +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[基金申请] filecode,4个jtjc了 +13 ziyangfang 2026-08-19 16/800 2026-08-22 17:08 by WH3796
[基金申请] 人气不行了 +8 fansofjerry 2026-08-21 8/400 2026-08-22 16:30 by zyqchem
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 放榜前的不淡定 40+4 snowwithsea 2026-08-19 14/700 2026-08-21 23:51 by cratir
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +16 医学老男孩 2026-08-20 20/1000 2026-08-21 21:13 by Ldrop2023
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[基金申请] 估计是周四 +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
信息提示
请填处理意见