gpt4 book ai didi

function - 使用 fminsearch 最大化函数

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:51 25 4
gpt4 key购买 nike

在我的日常工作中,我必须利用 fminsearch 最大化一个特定的函数;代码是:

clc
clear all
close all

f = @(x,c,k) -(x(2)/c)^3*(((exp(-(x(1)/c)^k)-exp(-(x(2)/c)^k))/((x(2)/c)^k-(x(1)/c)^k))-exp(-(x(3)/c)^k))^2;
c = 10.1;
k = 2.3;
X = fminsearch(@(x) f(x,c,k),[4,10,20]);

如我所料,它工作正常,但问题没有出现:我需要将 x 限制在一定范围内,如:

 4 < x(1) < 5
10 < x(2) < 15
20 < x(3) < 30

为了获得正确的结果,我应该使用优化工具箱,不幸的是我无法使用它。

是否有任何方法可以通过仅使用 fminsearch 来获得相同的分析?

最佳答案

好吧,不是直接使用fminsearch,但如果你愿意下载fminsearchbnd从文件交换,然后是。 fminsearchbnd对一般目标函数进行边界约束最小化,作为 fminsearch 的叠加。它会为您调用 fminsearch,为问题应用界限。

从本质上讲,这个想法是为您转换问题,使您的目标函数看起来像是在解决受约束的问题。它是完全透明的。你打电话fminsearchbnd具有函数、参数空间中的起点以及一组下限和上限。

例如,通过 fminsearch 最小化 rosenbrock 函数返回 [1,1] 处的最小值。但是,如果我们对每个变量的 2 问题应用纯下界,则 fminsearchbnd 会在 [2,4] 处找到有界约束解。

rosen = @(x) (1-x(1)).^2 + 105*(x(2)-x(1).^2).^2;

fminsearch(rosen,[3 3]) % unconstrained
ans =
1.0000 1.0000

fminsearchbnd(rosen,[3 3],[2 2],[]) % constrained
ans =
2.0000 4.0000

如果您对变量没有约束,则提供 -inf 或 inf 作为相应的界限。

fminsearchbnd(rosen,[3 3],[-inf 2],[])
ans =
1.4137 2

关于function - 使用 fminsearch 最大化函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10410930/

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