Optimize two dependent equations
5 views (last 30 days)
Show older comments
I am trying to fit two curves that are dependent on each other. Following are the equations:
y1(t+1) = (param1 * y1(t) * (param2-y1(t))) + (param3 * y2(t) * (param2-y1(t)))
y2(t+1) = (param4 * y2(t) * (param5-y2(t))) + (param6 * y1(t) * (param5-y2(t)))
Our aim is to optimize the values of all the parameters such that we are able to model y1 and y2 sequence close to observed. We have ground truth to compute error (SSE).
How can we optimize two sets of questions that are dependent on each other? I have been looking at lsqnonlin but I am not sure how to optimize in this setup.
0 Comments
Answers (2)
Mukul Rao
on 6 Dec 2017
Hi, if you are looking to optimize both equations together, I would recommend looking at some of the multi-objective optimization functions in MATLAB.
Your goal would be to minimize a vector of [SSE(y1) ; SSE(y2) ], unlike a scalar which is typical of single objective optimization problems.
0 Comments
Torsten
on 7 Dec 2017
Edited: Torsten
on 7 Dec 2017
Use lsqnonlin with the f-vector defined as
f=[y1(t1)-y1_obs(t1),y1(t2)-y1_obs(t2),...,y1(tn)-y1_obs(tn),y2(t1)-y2_obs(t1),y2(t2)-y2_obs(t2),...,y2(tn)-y2_obs(tn)]
Here, given the parameters from lsqnonlin, y1(t1),...,y1(tn),y2(t1),...,y2(tn) are calculated from your above formulae starting from y1(t0) and y2(t0).
If y1(t0) and y2(t0) are also unknown, you can include them in the vector of unknown parameters.
Best wishes
Torsten.
0 Comments
See Also
Categories
Find more on Multiobjective Optimization in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!