You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中fminsearch传入向量输入的优化逻辑问题咨询

问题解答

1. fminsearch实际优化目标、Kp[1]的属性

你调用fminsearchbnd时传入的目标函数是@(c) norm(obj(c)),其中obj(c)返回长度为4的列向量,norm默认计算L2范数,因此实际优化的目标是obj输出向量的L2范数的最小值。
由于目标函数中存在flipud(Vs)操作,输入向量Vs的4个元素完全耦合:Vs[4]会参与obj[1]的计算,Vs[1]会参与obj[4]的计算,因此Kp[1]不是给定K[1]、Z[1]时单变量优化的结果,它是和另外3个变量共同调整后,让整体范数最小的取值。

2. 是否属于多变量优化问题

是。fminsearch系列求解器只要接收的初始点为向量,就会按照多变量优化问题处理,更何况你当前场景下变量之间存在显式耦合,本质就是4维输入的多变量优化,完全不是4个独立的单变量优化任务。

3. 多输出场景下的最小化逻辑

fminsearch本身仅支持标量目标函数的最小化,你代码中通过norm(obj(c))已经把多输出的obj转换成了单值标量目标,不存在多个待最小化的方程。如果直接传入多输出的目标函数给fminsearch会直接报错。
你当前的写法等价于把4个输出项的平方和开根号作为唯一的最小化目标,求解器会通过Nelder-Mead单纯形算法不断调整4个输入变量的取值,直到找到让这个标量范数最小的可行解。


你提供的参考代码如下:

clear
clc
R         = 1.008;
sig       = 0.75;
tempkgrid = linspace(-2,6,2)';
K = [tempkgrid ; tempkgrid];
Z = [2*ones(2,1);4*ones(2,1)];
aconst1      = -2*ones(4,1);
aconst2      = 6*ones(4,1);
const = R * (K + Z);
obj         = @(Vs) -((1/(1-1/sig)) * ((Z + K - Vs./R) > 0) .* (Z + K - Vs./R).^(1-1/sig) + flipud(Vs));
Kp          = fminsearchbnd(@(c) norm(obj(c)) ,aconst1, aconst1, const);

内容的提问来源于stack exchange,提问作者Chang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:15:08