Using Simbiology to estimate parameters based on several variables/rules

Currently I am trying to use Simbiology to model a few sets of data. The PBPK model that I am using has 5 compartments with 3-4 species in each compartment. I've figured out how to use the sbionlinfit function and I do not have problems when I estimate parameters based on 'fake' data for individual species in the PBPK model. However, the data that I will obtain experimentally will be a bulk measurement, so it will be the sum of the species in each compartment. I've tried making this a parameter that is defined as a repeated assignment (i.e. compartment_total = species1+species2+... where compartment_total is a parameter), but when I try fitting data using this the estimations are nonsensical. Is there a better way to define a parameter so that it is a function of several species in the model, or is this possible with simbiology?

 채택된 답변

Arthur Goldsipe
Arthur Goldsipe 2014년 7월 1일
편집: Arthur Goldsipe 2014년 7월 2일

0 개 추천

Hi Corey,
No, I think you're doing the right thing by using a repeated assignment rule to define the compartment total. What do you mean by "the estimations are nonsensical"?
I'm guessing you're saying that the estimated parameter values are not physically reasonable. This can occur for a number of reasons, but it is usually a problem with the estimation rather than a problem with the SimBiology model itself. One thing on the model that occasionally helps is tightening the simulation tolerances, for example reducing the relative tolerance from the default of 1e-3 to something like 1e-6.
Here are some things you can try to improve the estimation:
  • Try different initial values for the estimated parameters.
  • Set the options to display the results at each iteration to see how the estimation is proceeding and what might be going wrong. You can do this by setting options.Display = 'iter', where options is the struct of options that you pass to sbionlinfit.
  • If you are using the R2014a of MATLAB, you can try using sbiofit instead of sbionlinfit. This will let you use different MATLAB functions for the estimation, some of which may converge to a more reasonable result. For example, you can try fminsearch. If you have the Optimization Toolbox, you can also use fminunc. And if you have the Global Optimization Toolbox, you can use methods like genetic algorithms (ga), particle swarm optimization (pso), or pattern search (patternsearch).
Good luck!
-Arthur

댓글 수: 1

Arthur,
Thank you so much for your help. I thought about changing the tolerances but I think I changed the tolerances for the solver ('TolFun', 'TolX') and not the simulation. Playing around with the absolute and relative tolerances did the trick though!
Thanks again! Corey

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Extend Modeling Environment에 대해 자세히 알아보기

제품

질문:

2014년 7월 1일

편집:

2014년 7월 2일

Community Treasure Hunt

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

Start Hunting!

Translated by