【问题标题】:need guidance using genetic algorithm tool in matlab with function using multiple parameters需要在matlab中使用遗传算法工具的指导,该工具具有使用多个参数的功能
【发布时间】:2014-11-05 01:51:31
【问题描述】:

我需要一些关于在 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

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

【问题讨论】:

    标签: matlab genetic-algorithm


    【解决方案1】:

    当它执行你的函数 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 匿名函数是闭包,并且它们的内部状态是在创建时从工作区获取的)。

    这是完成您所要求的事情的一种方法;你有别的想法吗?

    【讨论】:

    • 它并没有解决我的问题,但你实际上给了我一个提示,我用向量代替它并且它有效!.eg y = two_min(x) x(1) 和 x(2) 是两个变量
    猜你喜欢
    • 2012-02-28
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 2012-07-29
    • 2014-09-11
    • 1970-01-01
    相关资源
    最近更新 更多