Please help!!!!Error: Failure in initial nonlinear constraint function evaluation. FMINCON cannot continue.
5 ビュー (過去 30 日間)
古いコメントを表示
I am trying to run this code but Im getting a bunch of errors.
t=0:.1:5;
u(1:25)=.1;
u(26:51)=-.1;
plot(t,u);
[to,yo]=sim('hw',5,[],[t',u']);
%Finding u_final and cost
l_b=ones(51,1)*(-50);
u_b=ones(51,1)*50;
options=optimset('Display','iter','PlotFcns','optimplotx');
[u_final,cost]=fmincon('find_cost',u,[],[],[],[],l_b,u_b,'find_constraint',options);
[t_f,x_f,y_f]=sim('hw',5,[],[t' u_final']);
These are the functions used
%Cost function
function cost=find_cost(u)
cost=(1/2)*.1*trapz(u.*u);
end
%Constraint function with constraint x(5)=15
function [cineq,ceq]=find_constraint(u)
cineq=[];
t=0:.1:5;
[tout,yout]=sim('hw',t',[],[t',u']);
ceq(1)=15-yout(end,1);
ceq(2)=yout(end,2);
ceq(3)=yout(end,3);
ceq(4)=yout(end,4);
ceq(5)=yout(end,5);
end
Kindly help me I need to do this..
0 件のコメント
回答 (1 件)
Walter Roberson
2018 年 2 月 23 日
Your code assumes that find_constraint is being passed a row vector, u, but fmincon makes not such guarantee. The documentation says that the nonlinear constraint function must accept a vector or array, but there is no documentation about when it will be any particular shape.
I recommend that you use
[tout,yout]=sim('hw',t',[],[t',u(:)]);
6 件のコメント
参考
カテゴリ
Help Center および File Exchange で Get Started with Simulink についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!