FMINCON 上的组常量



我正在编写一个模型,该模型需要使用fmincon来最小化 6 个变量:oabwkappagamma。变量options定义如下:

optimset(optimset(@fmincon),'Diagnostics','off','Display','off','LargeScale','off','MaxSQPIter',1000,'TolFun',1e-6)

变量已受以下下限/上限的约束:

  • oabw介于0Inf之间;
  • kappagamma(2 * options.TolCon)Inf之间严格正;

我需要确保遵守一些约束:

  • oabw的和必须近似于1;
  • kappa*gamma必须近似等于1;

如果我不必考虑最后两个变量,我可能会使用fminconAb参数,如下所示:

A = [-eye(3); ones(1,3)];
b = [(zeros(3,1) + (2 * options.TolCon)); (1 - (2 * options.TolCon))];

但是使用具有两个不同约束(加法约束和乘法约束)的方法非常奇怪,我真的不知道如何设置Ab

似乎fminconnonlcon参数可能是我正在寻找的,但我不清楚如何正确制定它。

谢谢!

使用不等式约束非线性约束是无法解决的。 让我们回顾一下函数调用x_opt = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)假设您的优化向量如下所示x = [o, a, b, w, kappa, gamma].

不等式约束:">oabw的近似总和必须1"......我将其翻译为大小为TOL的公差区域中的某个地方

TOL = 0.01; % your "approximately"
A = [ ones(1,4) 0 0;
-ones(1,4) 0 0];
b = [ 1+TOL
-1+TOL];

现在我很少使用的东西:

非线性约束nonlconkappa*gamma必须近似等于1。这是一个返回布尔标量的函数句柄

nonlcon = @(x) abs(x(5)*x(6)-1) < TOL

相关内容

  • 没有找到相关文章