【问题标题】:Multi criteria objective optimization function that output single solution for each variable?为每个变量输出单个解决方案的多标准目标优化函数?
【发布时间】:2019-05-07 12:50:11
【问题描述】:

我正在尝试制作一个优化柔性铰链设计的 matlab 程序。当我研究用于多标准目标的 matlab 函数时,我发现了多个函数,例如 gamultiobj、fgoalattain 和 paretosearch,但是它们中的大多数输出​​结果数组而不是输出 1 个结果。但是我正在寻找只为每个变量输出 1 个结果的函数。所以我正在尝试使用 fmincon 函数,但因为它们只有单个函数才能优化。所以我试图寻找组合多个目标标准函数的方法。我找到了一种加权求和方法来组合它(例如 f(x) = w1 * f1(x) + w2 * f2(x) ;)我也尝试过 fmimax 但是它总是向 f1 加权(第一个目标函数在函数数组)即使 f2 仍然可以减少。我希望在这两个目标函数之间权衡 50/50 折衷。

所以基本上我只是在寻找具有非线性约束问题的非线性多准则目标的函数或方法,当给定的函数给出单一解决方案时,每个目标都会妥协,因此没有一个目标优先于其他目标(除了加权和方法) ?

【问题讨论】:

    标签: matlab optimization methods


    【解决方案1】:

    有几种方法可以解决这个问题,但我怀疑没有一种方法能完全满足您的要求。

    如果您有多个目标,并且假设它们相互竞争,那么就存在权衡取舍。您需要在f1f2 之间确定您喜欢的平衡点。

    您提到的多目标优化为您提供了一组帕累托最优的解决方案。这些解决方案将是所谓的非支配性解决方案,就f1f2 而言,集合中的任何解决方案都不会比另一个更好。每个解决方案将代表这些值之间的不同权衡。您可以查看结果集并决定哪种特定权衡最适合您的特定应用程序。

    正如您已经发现的那样,您还可以对目标进行加权求和,将其转换为单目标问题。但是,这需要您确实知道目标之间的理想权衡并相应地加权它们。如果您有一些想要改进的基线解决方案,您可以使用它来规范您的功能。例如,f = f1/f10 + f2/f20 可以平衡改进 f1f2 相对于您的初始设计。

    第三种选择是将一个目标转换为约束。例如,如果您对任何包含 f1 < c 的解决方案感到满意,则可以将其设置为约束,然后仅使用 f2 作为目标。

    这些方法中的每一种都要求确定f1f2 的权衡取舍或某个令人满意的值。没有任何优化算法可以为您提供这种平衡。

    【讨论】:

    • 第三个替代方案是否适用于 3 个目标优化,例如 min f1(x),而不是在约束中同时输入 f2(x) 和 f3(x)?
    • 是的,您可以通过创建多个约束将其扩展到任意数量的目标。请记住,您的最佳解决方案很可能位于约束边界。如果您将f1 < c 设置为约束,您的解决方案可能位于f1 ~= c,假设它找到了一个可行的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多