amanda-mat 发表于 2009-10-15 11:36

遗传算法目标函数的问题

我想用遗传算法工具箱选择最优的x取值,有八个x,目标函数如下
% a1--WBC a2--RBC a3--切口等级 a4--SAS评分 a5--出血量
% a6--抗菌药种数 a7--药物选用合理性 a8--剂量合理性
% r--rightw--wrongct--test classcr--real class
function y=ga_disease(x)
cr=
a1=
a2=
a3=
a4=
a5=
a6=
a7=
a8=
r=0
w=0
for i=1:20
    q=x(9)+a1(i)*x(1)+a2(i)*x(2)+a3(i)*x(3)+a4(i)*x(4)+a5(i)*x(5)+a6(i)*x(6)+a7(i)*x(7)+a8(i)*x(8)
    p=e^q/(1+e^q)
    if p>0.5
      ct(i)=1
      if cr(i)=1 %程序运行到这一行总显示出错
            r=r+1
      else w=w+1
      end
    else
      ct(i)=0
      if cr(i)=1
            w=w+1
      else r=r+1
      end
    end
end
    y=w/(r+w)      
如上面蓝色字体显示,程序运行到那一行总显示出错,但是我想把相应第i位的cr值拿来参考,也就是说我要的结果是:如果ct(测试到的分类)是1,并且cr(实际分类)也是1的话,那么就使r(正确分类个数)增加1。
请问如何解决这个问题?请各位大侠帮忙,谢谢!

ChaChing 发表于 2009-10-15 21:39

不懂遗传算法
help if下, 应为if cr(i)==1
还有请注意下, 求助完整格式:出错代码和出错提示

amanda-mat 发表于 2009-10-16 10:19

呵呵,我试试用这个if格式,另外
谢谢提醒!出错代码是:
Error: File: C:\Program Files\MATLAB71\work\ga_disease.m Line: 21 Column: 17
The expression to the left of the equals sign is not a valid target for an assignment.
标记的那行即是21行,请各位指教!谢谢!

amanda-mat 发表于 2009-10-16 10:26

哇!!太神了!可以运行了,哈哈!
补充提问一下,if cr(i)==1 其中的“==”不是表示恒等的意思么?那样不会导致cr的取值每次不变么?
谢谢!

ChaChing 发表于 2009-10-16 11:55

逻辑判断使用==, 设定变数值使用=:@)
please "doc eq" in cmd window
页: [1]
查看完整版本: 遗传算法目标函数的问题