Group Constraints for FMINCON
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Tommaso Belluzzo
el 26 de Abr. de 2020
Editada: Tommaso Belluzzo
el 26 de Abr. de 2020
Hi all! I'm writing a model that needs to minimize 6 variables through FMINCON: o, a, b, w, kappa, gamma. The variable options is defined as follows:
optimset(optimset(@fmincon),'Diagnostics','off','Display','off','LargeScale','off','MaxSQPIter',1000,'TolFun',1e-6)
The variables are already subject to the following lower/upper boundaries:
- o, a, b, w between 0 and Inf;
- kappa, gamma strictly positive between (2 * options.TolCon) and Inf;
I need to ensure a few constraints are respected:
- o, a, b, w must approximately sum to 1;
- kappa * gamma must be approximately equal to 1;
If I didn't have to consider the last two variables, I would have probably used A and b parameters of FMINCON as follows:
A = [-eye(3); ones(1,3)];
b = [(zeros(3,1) + (2 * options.TolCon)); (1 - (2 * options.TolCon))];
But going for that approach with two distinct constraints (an additive one and a multiplicative one) is pretty weird and I really have no clue about how to set A and b.
It seems that the nonlcon parameter may be what I'm looking for, but it's unclear to me how to formulate it properly.
Thanks!
0 comentarios
Respuesta aceptada
John D'Errico
el 26 de Abr. de 2020
Approximately equals is NOT an equality constraint.
But you can write it as TWO inequality constraints. So if you want kappa*gamm approximately equal to 1, then that means you want the product to be within some given tolerance of 1. That is:
kappa*gamm >= 1 - tol
kappa*gamm <= 1 + tol
You can then swap the inequality direction on the first constraint by multiplying by -1.
-kappa*gamm <= -(1 - tol)
Note my use of gamm as a variable name, instead of gamma. Since there is a function called gamma that is often quite useful, I strongly suggest not using a variable named gamma.
1 comentario
Tommaso Belluzzo
el 26 de Abr. de 2020
Editada: Tommaso Belluzzo
el 26 de Abr. de 2020
Más respuestas (0)
Ver también
Categorías
Más información sobre Solver Outputs and Iterative Display en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!