Error using barrier Objective function is undefined at initial point. Fmincon cannot continue.
정보
This question is locked. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
이전 댓글 표시
Hi, after running my code
R=readmatrix(filename1);
R=R.';
w=readmatrix(filename2);
gamma = 2;
Aeq = ones(1,68);
beq = 1;
lb = zeros(68,1);
ub = ones(68,1);
x0=0.0147*ones(1,68);
u = @(x) 1/(1-gamma)*x.^(1-gamma);
obj = @(x)-sum(u(x*w*R));
x = fmincon(obj,x0,[],[],Aeq,beq,lb,ub);
I recived the following error
Error using barrier
Objective function is undefined at initial point. Fmincon cannot continue.
Error in fmincon (line 824)
[X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] =
barrier(funfcn,X,A,B,Aeq,Beq,l,u,confcn,options.HessFcn, ...
I run the same code before but with a lees number of data and it works perfectly. Can you please help me what is wrong with my code ?
Thanks in advance
:::: UPDATE
I reads my data carefully and found the problem with my data
댓글 수: 3
Walter Roberson
2023년 4월 14일
As the volunteer who worked on your Question and posted the Answer:
No, I do not choose to delete the question. You did not hire me as a private consultant, that you could hide the question and answer away after you have received your solution. I volunteered my time on the condition that the question and response would continue to be available indefinitely, for the benefit of anyone who cared to look.
Az.Sa
2023년 4월 15일
Rik
2023년 4월 17일
Original question:
Error using barrier Objective function is undefined at initial point. Fmincon cannot continue.
Hi, after running my code
R=readmatrix(filename1);
R=R.';
w=readmatrix(filename2);
gamma = 2;
Aeq = ones(1,68);
beq = 1;
lb = zeros(68,1);
ub = ones(68,1);
x0=0.0147*ones(1,68);
u = @(x) 1/(1-gamma)*x.^(1-gamma);
obj = @(x)-sum(u(x*w*R));
x = fmincon(obj,x0,[],[],Aeq,beq,lb,ub);
I recived the following error
Error using barrier
Objective function is undefined at initial point. Fmincon cannot continue.
Error in fmincon (line 824)
[X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] =
barrier(funfcn,X,A,B,Aeq,Beq,l,u,confcn,options.HessFcn, ...
I run the same code before but with a lees number of data and it works perfectly. Can you please help me what is wrong with my code ?
Thanks in advance
답변 (1개)
Walter Roberson
2023년 4월 13일
1 개 추천
Your gamma is 2. 1-gamma is -1. x.^(1-gamma) is then 1./x
But you permit x to start at 0 (your lower bound is 0). That would get you infinity or nan, either of which is going to cause your objective to fail.
Your lb needs to be greater than 0.
댓글 수: 8
Test why fmincon has problems evaluating your objective function by calling it before calling fmincon:
R=readmatrix(filename1);
R=R.';
w=readmatrix(filename2);
gamma = 2;
Aeq = ones(1,68);
beq = 1;
lb = zeros(68,1);
ub = ones(68,1);
x0=0.0147*ones(1,68);
u = @(x) 1/(1-gamma)*x.^(1-gamma);
obj = @(x)-sum(u(x*w*R));
obj(x0)
What does obj(x0) return ? Something senseful ?
Torsten
2023년 4월 14일
Then try in steps.
Evaluate x0*w*R, then u(x0*w*R), then sum(u(x0*w*R)).
And look what you read in as R and w.
Az.Sa
2023년 4월 14일
Torsten
2023년 4월 14일
Then nobody will be able to help you without having access to your data and your complete code.
Az.Sa
2023년 4월 15일
This question is locked.
카테고리
도움말 센터 및 File Exchange에서 Feature Extraction에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!