【问题标题】:Relate outputs of parent function to input of nested function将父函数的输出与嵌套函数的输入相关联
【发布时间】:2018-07-23 16:47:55
【问题描述】:

我将尝试简单地解释自己,希望得到一个简单的答案。

假设我有一个“计算”函数,它接受输入 [t,k,r,x] 并输出 [A,B,C,D],如下所示:

function [A,B,C,D] = calculate(t,k,r,x)

现在假设我有另一个函数,它将这些输出作为输入,并吐出更多不同的输出,例如。

function [M,N] = again(A,B,C,D)

我如何链接[M,N]kt?总体目标是通过优化kt 来最小化MN,我可以猜测它与嵌套函数和传递参数有关,但我不知道如何开始,开始就是我想要的。谢谢

【问题讨论】:

    标签: matlab function optimization nested


    【解决方案1】:

    看看the Matlab optimization toolbox。它提供了许多优化问题的功能。虽然我相信这些函数只需要一个函数作为参数。因此,对于您的情况,如果可以的话,最好这样做:

    1. 使用参数 (t,k,r,x) 编写函数 calculate.m 并保存。
    2. 用参数(t,k,r,x) 编写函数again.m 并保存。
    3. 函数again用参数(t,k,r,x)调用函数calculate,然后继续根据calculate的输出确定(M,N)。
    4. 在Matlab工具箱优化函数中,例如:fmincon(fun,x0,A,b),然后你必须使用again.m作为你想要优化的函数(fun)。

    希望这足以作为一个开始。

    【讨论】:

    • 嗨,这太棒了。当我完全忽略(我不知道为什么)只是单独编写它们并让一个调用另一个时,我担心嵌套函数的顺序。所以现在,我遇到了一些我知道自己无法通过的事情。我知道工具箱(无论您要使用哪种优化工具)仅将一个变量作为输入。在原始问题的情况下,我如何制定目标函数,使得输出仍然是[M,N],但优化器(在这种情况下为 GA)优化了我想要的变量。我想需要进行某种形式的映射?
    • 首先你应该弄清楚你有什么样的问题:线性的,非线性的,你有没有任何约束,......如前所述,目标函数,也就是你想要优化的函数,应该是again.m
    • 我的问题是,如何将我想要优化的特定命名变量 (t,k) 转换为目标函数输入的一个变量 (z, 比如说)?跨度>
    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 2021-02-12
    • 1970-01-01
    • 2020-10-24
    相关资源
    最近更新 更多