使用多个参数的fminsearch约束

时间:2014-04-06 04:34:48

标签: matlab fminsearch

如果我不理解fminsearch或者只是对语言进行屠杀,请随意关闭它,但这是我的问题。

我可以将fminsearch与多个参数一起使用吗?

fminsearch(@(x) func(x(1), x(2)), [2,2], such that x(1) * x(2) = 4 or something like that)

1 个答案:

答案 0 :(得分:2)

非线性优化是一个非常困难的问题,因此不保证任何方法都适用于每种情况。对于您的情况,您可以从x(1)解析地求解x(2)。所以你可以把它变成一个无约束的优化问题。

func_cstr = @(x) func(x, 4/x);
fminsearch(func_cstr, initial_x1)

如果你不能在x(1)和x(2)之间建立明确的关系,那么你可以尝试一种惩罚方法:

pen = 1e5;
constraint = @(x) (x(1)*x(2)-4)
func_cstr = @(x) func(x)+pen*constraint(x)^2;
[x,fval] = fminsearch(func_cstr, initial_x1_and_x2);

MATLAB还提供了一个约束优化求解器fmincon