Effacer les filtres
Effacer les filtres

Equality contrains ignored by fmincon

3 vues (au cours des 30 derniers jours)
John Hoop
John Hoop le 20 Avr 2020
Commenté : Matt J le 20 Avr 2020
I use fmincon to minize a function with 250 variables. Some variables are dependent, but the degree of freedom is still very high. I put equality constrains to fix some varibles to constants. When I run fmincon, I received the following error from Matlab
"Solver stopped prematurely.
fmincon stopped because it exceeded the function evaluation limit,
options.MaxFunctionEvaluations = 3.000000e+03."
I checked the premature x variable. It did not meet the equality constrains at all. The elements that were set to zeros all are non-zero number. I am wondering what would be possible causes? The equality constrains seem so straight forward, but still ignored by fmincon. Could someone advise me please?
  8 commentaires
John Hoop
John Hoop le 20 Avr 2020
Hi Walter, Thank you very much for your suggestion. I thought about this. But, I would like to keep these variables in the system, because I eventually want to use all as optimization variables. For now, I fix these only for testing purposes.
darova
darova le 20 Avr 2020
This looks strange. Just 100 zero variables? What is the point?
for i=1:100
Aeq(i,i)=1;
end

Connectez-vous pour commenter.

Réponses (2)

BALAJI KARTHEEK
BALAJI KARTHEEK le 20 Avr 2020
I hope u can use this code, i too have the same problem while solving the problem with 130 variables and nearly 200 constraints, but when i used this it worked fine with me... if u want further details, u cann contact me through watsapp +91 7893397808 or try it by urself. It will work for sure
opts = optimoptions('fmincon','Display','iter','MaxFunctionEvaluations',10e+10);
problem = createOptimProblem('fmincon','objective',obj2,'x0',your_initial_point,'lb',LB,'ub',UB,'nonlcon',constraints1,'options',opts);
ms = GlobalSearch;
[x,f] = run(ms,problem);
  1 commentaire
John Hoop
John Hoop le 20 Avr 2020
Hi Balaji, thank you very much for suggestions. I am going to have some tries and may contact you via whatapp. Cheers, Jun

Connectez-vous pour commenter.


Matt J
Matt J le 20 Avr 2020
You cannot use the Aeq, beq constraint parameters to force exact equality. You could instead try setting the upper and lower bounds,
lb(1:100)=0;
ub(1:100)=0;
but if you are reaching the function evaluation limit, it may be that a feasible solution with the parameters you've set to zero simply does not exist.
  2 commentaires
John Hoop
John Hoop le 20 Avr 2020
Hi Matt, Thank you very much. This is very good to know. Equality constrains are a bit misleading.
Matt J
Matt J le 20 Avr 2020
You should be mindful that all of the constraints (except usually the bounds) are subject to the ConstraintTolerance parameter listed here,

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by