Optimize cost function to obtain optimal value of the optimization variable.
33 views (last 30 days)
Show older comments
The problem is to find a and b such that the cost function is minimized. The cost function is defined as,
The dynamical equations are:
I tried to use the ode45 to solve the the dynamical equations but was unable to solve using the ode45 as it has a and b also as variables, which are needed to optimize the cost function. Can someone help to solve the equations by ode45 and minimize the cost function at the same time? I am trying to use fminsearch but how to use it?
0 Comments
Accepted Answer
Walter Roberson
on 3 Oct 2022
Create a function that accepts a and b and uses ode45() to run the system to tspan 10. Return the values of y1(end) and y2(end) for those particular a and b
Now write a caller to that function that accepts a vector of two values, a and b, runs the function mentioned above, calculates C and returns the value.
Now use fminunc() or fmincon() on that second function. The vector of coordinates that minimizes the function will be the a and b values you are looking for.
3 Comments
Walter Roberson
on 3 Oct 2022
init_ab = [0 1];
best_ab = fminunc(@cost_ab, init_ab);
a = best_ab(1); b = best_ab(2);
function cost = cost_ab(ab)
[t,y]=ode45(@(t,y) ques1(t,y,ab(1),ab(2)), [0 10], [1,2]');
cost = (y(end,1) - 1500).^2 + (y(end,2) - pi/2).^2;
end
Torsten
on 3 Oct 2022
init_ab = [0 1];
[best_ab,cost] = fminunc(@cost_ab, init_ab)
a = best_ab(1); b = best_ab(2);
function cost = cost_ab(ab)
ques1 = @(t,y)[cos(ab(1)+ab(2)*t)-sin(y(2));(sin(ab(1)+ab(2)*t)-cos(y(2)))/y(1)];
[t,y]=ode45(ques1, [0 10], [1,2]');
cost = (y(end,1) - 1500).^2 + (y(end,2) - pi/2).^2;
end
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!