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..

回答 (1 件)

Walter Roberson
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 件のコメント
Aishwarya Bangalore Kumar
Aishwarya Bangalore Kumar 2018 年 2 月 24 日
i think its because i could not attach the format of a simulink model the 'slx' its simfg.slx
Walter Roberson
Walter Roberson 2018 年 2 月 24 日
You can zip the model and attach the zip

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeGet Started with Simulink についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by