我正在使用Matlab 2015a。
以下是我要优化的功能:
function result = fig_of_merit(x, a, b, c, d) result = 1; end
这就是我想要优化功能的方式:
x1 = [10*10^-6, 120]; x2 = [300*10^-6, 175]; fminbnd(@(x) fig_of_merit(x, 1, 2, 3, 4),x1,x2);
我一直收到以下错误:
使用时出错* 内部矩阵维度必须一致。 fminbnd错误(第291行) x=xf+si*max(绝对值(d),tol1); 测试错误(第5行) fminbnd(@(x)fig_of_merit(x,1,2,3,4),x1,x2);
使用时出错* 内部矩阵维度必须一致。
fminbnd错误(第291行)
x=xf+si*max(绝对值(d),tol1);
测试错误(第5行)
fminbnd(@(x)fig_of_merit(x,1,2,3,4),x1,x2);
我的代码有什么问题?我也使用 fminsearch公司 功能和一切都很好。
这与我使用的匿名函数有关——当我将向量x1和x2缩减为标量时,它起了作用:
fminbnd(@(x) fig_of_merit(x, 1, 2, 3, 4),-4, 5);
我不满意,因为我想同时优化两个参数。
这个 fminbnd 函数仅适用于标量参数。它不能同时优化两个参数。然而 fmincon 函数可以执行以下操作:
fminbnd
fmincon
x1 = [10*10^-6, 120]; x2 = [300*10^-6, 175]; fmincon(@(x) fig_of_merit(x, 1, 2, 3, 4),ones(size(x1)),[],[],[],[],x1,x2);