gpt4 book ai didi

matlab - 是否存在始终满足线性约束的 fmincon 算法?

转载 作者:太空宇宙 更新时间:2023-11-03 19:47:33 28 4
gpt4 key购买 nike

我试图在 Matlab 中使用相当复杂的目标函数执行约束线性优化。对于不满足我定义的线性不等式约束的输入值,此目标函数将产生错误。我知道有 a few algorithms在每次迭代中强制严格遵守边界,但有谁知道任何算法(或其他机制)在每次迭代中强制严格遵守线性(不等式)约束?

我可以让我的目标函数在任何这样的点返回零,但我担心会引入大的不连续点。

最佳答案

免责声明:我不是优化专家。不过有一些想法:

  1. 表示约束的对数屏障函数

要扩展 DanielTheRocketMan 的建议,您可以使用对数屏障函数来表示约束。如果你有约束 g(x) <= 0 并且最小化目标是 f(x) 那么你可以定义一个新的目标:

fprim(x) = f(x) - (1/t) * log(-g(x))

其中 t 是一个参数,用于定义约束的锐度。当 g(x) 从下方接近 0 时,-log(-g(x)) 趋于无穷大,对接近违反约束条件的目标函数进行惩罚。较高的 t 值使 g(x) 更接近 0。

  1. 你回答了你自己的问题?将 fmincon 与满足约束的严格可行性的算法之一一起使用?

如果您的约束是线性的,那应该很容易传递给 fmincon。使用满足严格可行性的算法之一。

  1. 听起来这对你不起作用,但 cvx 是一个很棒的包,可以解决一些凸问题,但对其他问题来说却很可怕/不可行。如果您的问题是 (i) 凸的并且 (ii) 目标函数和约束不太复杂,那么 cvx是一个非常酷的包。不过,使用它有一点学习曲线。

显而易见的一点,但如果您的问题不是凸问题,那么您可能会遇到陷入局部最优而不是找到全局最优的大问题。始终要注意一些事情。

关于matlab - 是否存在始终满足线性约束的 fmincon 算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22141055/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com