声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1873|回复: 2

[工具箱] 遗传算法加入非线性约束求解

[复制链接]
发表于 2015-5-2 17:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本人在做动力总成悬置系统优化设计
C是约束条件
c=[3-fmin
    fmax-(750*4/(30*sqrt(2)*4))
    Zd-0.005];
其中fmin,fmax,Zd,是函数中求解的固有频率的最小值、最大值、以及动力总成的静位移
在用遗传算法工具箱优化不知道怎么添加这种约束


尝试了用惩罚函数法,将有约束转换成无约束求解
以下是运行主程序
clc;
clear;
format long;
r=1e8;
df=1e10;
k=0;
while df>0.0001
    k=k+1;
    r=r*0.999;
l=[50 50 50 50];
u=[800 800 800 800];
A=[];b=[];Aeq=[];Beq=[];
options=gaoptimset;
% options.TolX=1e-10;
options=gaoptimset(options,'Generations',50);
options=gaoptimset(options,'PopulationSize',20);
% options=gaoptimset(options,'Stall generations',50);
[x fc]=ga(@again1,4,A,b,Aeq,Beq,l,u, options);
[fc f c]=again1(x,r);
df=abs(f-fc)
end
k
x,f

目标函数代码
。。。。。
f=0.2*(1-Joz)+0.2*(1-Jorx)+0.2*(3/fmin)+0.2*(fmax/(750*4/(30*sqrt(2)*4)))+0.2*(Zd/0.005);
c=[3-fmin
    fmax-(750*4/(30*sqrt(2)*4))
    Zd-0.005];
for i=1:3
fc=fc+(c(i)<0)*(1/c(i));
end
fc=f-r*fc;
但是运行总是提示
Error using functionHandleOrCell (line 13)
The constraint function must be a function handle.

Error in validate (line 141)
    [nonlcon,NonconFcnArgs] = functionHandleOrCell('NonconFcn',nonlcon);

Error in gacommon (line 68)
[options,nvars,FitnessFcn,NonconFcn] =
validate(options,type,nvars,fun,nonlcon,user_options);

Error in ga (line 319)
[x,fval,exitFlag,output,population,scores,FitnessFcn,nvars,Aineq,bineq,Aeq,beq,lb,ub,
...
希望可以提供下思路


回复
分享到:

使用道具 举报

 楼主| 发表于 2015-5-26 16:19 | 显示全部楼层
直接在适应度函数那边把约束加上,判断语句用if
发表于 2015-6-14 09:31 | 显示全部楼层
工具箱在哪里呢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-4 01:52 , Processed in 0.166606 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表