MATlab 遗传算法处理多目标的优化问题,计算目标函数值的时候出现问题

function[objvalue]=calobjvalue(pop)%计算目标函数值%遗传算法子程序%Name:calobjvalue.mtemp1=decodechr... function [objvalue]=calobjvalue(pop)
% 计算目标函数值
%遗传算法子程序
%Name: calobjvalue.m
temp1=decodechrom(pop,1,24); %将pop每行转化成十进制数 相当于X'
temp2=decodechrom(pop,25,24);
temp3=decodechrom(pop,49,24);
temp4=decodechrom(pop,73,24);
x1=temp1*1/(pow2(24)-1); %将二值域 中的数转化为变量域 的数 相当于十进制的X
x2=temp2*1/(pow2(24)-1);
x3=temp3*1/(pow2(24)-1);
x4=temp4*1/(pow2(24)-1);
ZBX=(((x3-x1)*cosd(30)-x1*sind(30))*cosd(30))*sind(60)-634.4469;
ZBY=(((x3-x1)*cosd(30)-x1*sind(30))*cosd(30))*cosd(60)-366.2981;
ZBZ=x2*cosd(30)+(x3-x1)*(2*sind(30))+x4-1775.4;
if (ZBX^2+ZBY^2+ZBZ^2)^0.5<0.5
data=1;
else
data=0.001;
end
objvalue=(1/(20*exp(-5*x1)+20*exp(-5*x2)+20*exp(-5*x3)+20*exp(-5*x4)))*data; %计算目标函数值

没有加ZBX~DATA 这些之前运行无误,加上之后运行总说我的if语句需要用点乘,换成点乘后又说我后面的程序数组越界。坑爹啊!!希望有高手能指点下,如果可以,希望QQ联系!!
展开
 我来答
WM_THU
2013-07-18 · TA获得超过7164个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:4028万
展开全部
1 您确定ZBX ZBY ZBZ都是标量吗?
2 改成
if norm([ZBX ZBY ZBZ])<0.5
试试?
Sievers分析仪
2025-02-09 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准... 点击进入详情页
本回答由Sievers分析仪提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式