问题标签 [fminsearch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6496 浏览

matlab - 如何使用 fminsearch 查找局部最大值?

我想使用 fminsearch 来查找函数的局部最大值。

是否可以使用 fminsearch 找到局部最大值,并“仅”搜索函数的负返回值。

例如:

可能吗?

更新1 :为了详细说明我的问题并使其更清楚(遵循下面的一些评论) - 我正在添加此更新:

通过询问是否可以这样做,我的意思是它是对fminsearch功能的正确使用 - 它是查找 max using 的预期用途fminsearch吗?

更新 2:对于谁曾经关心过同样的问题 - 除了下面的正确答案,这里是来自https://www.mathworks.com/help/matlab/math/optimizing-nonlinear-functions.html#bsgpq6p的文档- 10

最大化函数 fminbnd 和 fminsearch 求解器试图最小化一个目标函数。如果你有一个最大化问题,即形式的问题

最大 xf(x),然后定义 g(x) = –f(x),并最小化 g。

例如,要找到tan(cos(x))x = 5 附近的最大值,请计算:

[x fval] = fminbnd(@(x)-tan(cos(x)),3,8)

x = 6.2832

fval = -1.5574

最大值为 1.5574(报告的 fval 的负值),出现在 x = 6.2832。这个答案是正确的,因为对于五位数,最大值是 tan(1) = 1.5574,它发生在 x = 2π = 6.2832。

0 投票
0 回答
79 浏览

matlab - fmincon:在每次迭代时修改当前点

我正在使用 fmincon。我想要实现的是给 fmincon 一个函数,该函数F接收求解器当前找到的点,x并在每次迭代后输出更新的点yst,我可以修改优化达到的当前点(例如,将其标准化为一个单位-范数向量)在它继续下一次迭代之前。有没有实现这一目标的选择?

0 投票
2 回答
267 浏览

matlab - fmincon - 约束过多 - MATLAB

假设我有一个 fmincon 函数。正如我们从 matlab 文档中知道的那样,我们可以施加线性和非线性约束。

假设现在我有一个要优化的 3 个参数的函数。我希望其中 3 个大于 0,其中 1 个大于 -1 我需要 4 个约束,但出现错误。

简单示例(工作代码):

错误是

使用 fmincon 时出错(第 287 行) A 必须有 3 列。

奇怪的是 A 只能有 n 个约束(你可以添加非线性)

谢谢

0 投票
1 回答
86 浏览

matlab - 在 Matlab 上使用 fminsearch 获取最小圆

对于我的作业,我应该计算最小的圆。第一部分要求我计算欧几里得距离,我使用以下代码进行管理:

对于第二部分,我需要继续使用 fminsearch,但由于某种原因,我无法在代码中实现它(我可以从命令窗口使用它)。谁可以帮我这个事?

编辑:所以我尝试过...

基本上我能找到的一切。

出于绝望,这是我对 fminsearch 部分的混乱。

然后我把代码改成了这个;所以我可以尝试如下一个;

但它说没有足够的输入参数。我已经尝试了很多东西并删除了很多东西,所以我无法进行很多试验。

0 投票
0 回答
568 浏览

python - 使用 scipy.fmin。TypeError:“numpy.float64”对象不可迭代

我正在尝试使用 scipy.fmin (此处的文档),但我无法弄清楚它为什么不起作用。我的代码:

其中calculateV 是:

我不断收到错误 TypeError: 'numpy.float64' object is not iterable。CalculateV 本身运行良好。我认为错误是我没有返回函数,所以我尝试这样做:

但我仍然遇到同样的错误。似乎问题在于:

但我不明白为什么。任何帮助将不胜感激!

0 投票
0 回答
70 浏览

matlab - MATLAB:当输入为函数时拟合参数

很抱歉问这个幼稚的问题,但作为一个绝对的 MATLAB 新手,我真的被困住了。

以下是我正在尝试做的事情。我有一个以掷硬币结果作为输入的模型:

在右侧,“翻转”是从文件中读取的掷硬币结果,而“rep”和“prior”是我要查找其值的两个参数。该函数输出所有掷硬币的随机性评估,这是一个包含 256 个元素的列向量。

同时,我让人类评估同一组结果,他们的响应存储在另一个包含 256 个元素的列向量中。(请注意,人类判断这些结果的非随机性而不是随机性。)

我希望最小化两个向量之间的相关性。

在抽象层面上,我想解决方案看起来像这样:

但是,参数不是我想要拟合的直接参数('rep' 和 'prior'),而是包含它们的函数。当参数中没有明确显示“rep”和“prior”时,我不知道如何使用 fminsearch 或其他方法来查找它们。我将衷心感谢您的帮助!

0 投票
1 回答
2809 浏览

matlab - 从 Simulink 调用 fmincon

我正在尝试在 Simulink-Matlab 框架中实现一种特定类型的模型预测控制。为此,我的计划是让 Simulink 中的动态模型调用一个外部 Matlab S-Function,该 S-Function 反过来运行一个调用不同 Simulink 文件的优化。因此,程序流程如下: Simulink -> Matlab (fminconquadprog) -> Simulink。

如您所见,Matlab S-function 会调用fminconor quadprog,但我想将 fmincon 用于我的特定控件类型。请忽略到目前为止与计算效率相关的任何问题。

我尝试了这种方法,但是有两个非常明显的问题: *首先,为了编译代码不会出错(基本上是获得一个.mex文件,我不需要用C编程),我添加了命令

coder.extrinsic('fmincon');

这是必需的,否则 Simulink 无法编译 mex 文件。但是,如果您这样做,则会收到以下错误:

我试图将调用 Simulink 的成本函数更改为另一个更简单的成本函数 ( x.^2),但仍然出现错误。

寻找问题的解决方案,我fmincon在 Mathworks 博客上发现了相同的问题(即如何从 Simulink 中的 Matlab 函数调用),但没有答案(https://uk.mathworks.com/matlabcentral/answers/65202 -optimization-calling-fmincon-in-simulink-embedded-block)。

谁能帮我一把?提前致谢!

0 投票
1 回答
129 浏览

matlab - SAP2000 API分析完成后MATLAB的fminsearch无故终止

我正在尝试优化由 SAP2000 v18.1 制作的结构数值模型。为此,我在 MATLAB 中获取了 API 函数,并尝试通过 fminsearch 函数进行优化。MATLAB 打开模型,进行修改并运行分析。然后提取我要求的数据并根据它们进行优化。但 MATLAB SOMETIMES 会在此时终止。“MATLAB 停止工作”,当我按下“调试”按钮时,程序关闭。我检查了内存使用情况,这不是问题。我已经尝试过多次运行该过程,有时在重复 2-3 次后,程序会停止,但现在即使是第一次运行它也会终止。我想问题出在运行 SAP2000 并提取数据的函数中,因为那是程序停止工作的时候。

然后将ff值报告给fminsearch。但问题出在我要求从模型中提取数据的那一行,因为 MATLAB 在关闭 SAP2000 文件之前终止。有人知道为什么吗?:( 谢谢

0 投票
1 回答
2170 浏览

matlab - fminsearch 有两个变量

我正在尝试使用 fminsearch 最小化一个 5 变量函数。我只想最小化两个变量的函数。我尝试了以下方法,但没有运气:

xN x M维度的矩阵,而b具有Y x Z维度,因此维度不同。相同的起始条件x0b0

我看过一些类似的问题,但我仍然无法解决这个问题。

运行脚本时,我得到以下输出:

0 投票
0 回答
56 浏览

matlab - Matlab 优化 Minsearch

我在具有未知导数且没有封闭形式方程的多维曲面上运行优化问题。这是由一篇试图通过专利产生的未来随机收入来评估专利的经济论文引发的问题。它是一个动态规划问题。

无论如何,问题是每次我尝试优化时,参数搜索都会卡住(局部最小值??)。当我通过手动插入数字进行搜索时,我最终得到了真实的参数值,但是 matlab 内置函数,到目前为止,我选择的选项可能效率低下,并没有让我到达那里。

我正在寻找建议、反馈和任何真正能帮助我的代码自动求解真实参数的东西。我可以做些什么来调整我的选项以获得更好的搜索。我可以更改步长吗?我很想在系数值中获得更大的“抖动”扰动以获得正确的解决方案。它陷入了相同的价值。理想情况下,我不想设置界限。我真的很感激你能给我的任何建议。谢谢你。