需要在matlab中使用遗传算法工具进行指导,并使用多个参数

时间:2013-01-22 18:56:09

标签: matlab genetic-algorithm

我需要一些关于在matlab中使用ga函数的指导。我发现的所有例子都是处理一个变量(参数),例如

 function y = two_min(x)
 if x<=20
     y = x+1; 
 else
     y = x+1;
 end

所以我可以打电话给ga(@ two_min,1)开始。

但是当我尝试使用多个变量时,例如。

 function y = two_min(x,z)
 if x<=20
     y = x+1+z;
 else
     y = x+1+z;
 end

它一直向我显示错误:没有足够的输入结果.. 是不是因为我没有设置约束或其他选项? 我应该以什么格式设置其他选项.. 谢谢!

1 个答案:

答案 0 :(得分:0)

当它执行你的函数two_min时,它会传入x的值,并且z在使用之前不会在任何地方定义,因此你的错误。您可以尝试的一件事是在调用ga之前绑定您的z值:

a = 500; %the value that will be used for z
fitness_fun = @(x) two_min(x,a);
n_var = 1;
[x,fval] = ga(fitness_fun,n_var)

请注意,这只会将fitness_fun创建点的a值作为z的值,因此如果稍后再次更改“a”的值,则不会对z的值产生任何影响在two_min中,除非你重新创建匿名函数(这是因为matlab匿名函数是闭包,它们的内部状态是在创建时从工作区获取的)。

这是一种做你要求的方法;你还有别的想法吗?