【问题标题】:matlab genetic algorithm solver complex input and outputmatlab遗传算法求解器复杂输入输出
【发布时间】:2012-09-09 09:52:44
【问题描述】:

我的 Matlab 程序有多个输入作为结构(in.ain.b 等) 和多个输出(out.aout.b 等)

我想使用优化工具箱中的遗传算法求解器来找到最佳输入in.a,而所有其他输入都是恒定的。适应度是输出之一,例如out.b(2,3).

我如何“告诉”求解器?

谢谢 丹尼尔

【问题讨论】:

    标签: matlab optimization genetic-algorithm


    【解决方案1】:

    在编程中遇到这样的情况并不少见:什么对您的函数最方便,而某些库调用对它的期望却不一致。解决此类问题的正常方法是在两者之间写一个小层,以允许两者进行对话;一个接口

    来自help ga

    X = GA(FITNESSFCN,NVARS) 找到一个局部无约束最小值 X 到 使用 GA 的 FITNESSFCN。 [...] FITNESSFCN 接受大小为 X 的向量 1 乘 NVARS,并返回在 X 处计算的标量。

    所以,ga 需要向量输入、标量输出,而您有一个进出结构。您必须编写以下(子)函数:

    function Y = wrapper_Objfun(X, in)
        in.a = X; %# variable being optimized
        out  = YOUR_REAL_FUNCTION(in); %# call to your actual function
        Y    = out.b(2,3); %# objective value
    end
    

    然后对ga 的调用看起来像

    X = ga(@(x) wrapper_Objfun(x,in), N);
    

    N 应该很大,in.a 应该很大。

    也可以在Matlab's own documentation on the subject 中阅读它。

    【讨论】:

    • 这就是我最终做的,我希望有一些魔术:/
    • 感谢您的精彩回答和精彩链接!
    猜你喜欢
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多