gpt4 book ai didi

c++ - C++中匿名函数的最小化

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:15:49 25 4
gpt4 key购买 nike

我在 C++ 中有一个循环程序,它包括一个函数的组合(每次不同)和进一步最小化它。函数的组合是使用 GiNaC 包(符号表达式)实现的。 我尝试使用 Matlab fmincon 函数最小化函数,但它在将字符串转换为 lambda 函数时占用了所有内存(函数相当复杂)。而且我无法以任何方式将函数从 C++ 导出到 Matlab,只能作为字符串。有什么方法可以组成一个复杂的函数(3 个变量、sin-cos-平方根等)并将其最小化而不用自己确定梯度,因为我不知道运行程序之前函数的样子?我还查看了 NLopt,据我所知,它需要由程序员编写渐变。

最佳答案

大多数优化算法都需要梯度。但是,如果不可能直接“知道”它,您可以考虑每个坐标的小增量来评估它。如果您的 F 函数取决于 x vector 的坐标,您可以将梯度 vector G 的 i 分量近似​​为

x1 = x;
x1[i] += dx;
G[i] = (F(x1) - F(x))/dx;

其中 dx 是一些小增量。虽然这样的计算是近似的,但只要 dx 足够小,它通常绝对适合最小的发现。

关于c++ - C++中匿名函数的最小化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33755199/

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