Apply fmincon nonlinear parameter inequality constraints into SimBiology for parameterization

조회 수: 4 (최근 30일)
I am wanting to enter two nonlinear inequalities into a fitting program for SimBiology. I've built an ODE model and have been able to reproduce simulations of it with a set of constant parameters through the SimBiology app.
I am now hoping to parameterize my model using SimBiology and recreate the work that I've done outside of the app. That is, I have a separate OptimizeThis.m file where I used fmincon to parameterize my ODE model. Turns out it needed a couple constraints in order to give me a relevant set of parameters, thus my OptimizeThis file basically looks like the psuedo-code below:
params = [a1 a2 a3 a4 b1 b2 b3 b4] % Parameters to be optimized
lb = zeros(1,8); % Lower bounds
ub = ones(1,8); % Upper bounds
[param_estimates] = fmincon(@(p) theObjectiveFxn(p),params,[],[],[],[],lb,ub,@nonlincon);
function [c,ceq] = nonlincon(params)
a1 = params(1);
a2 = params(2);
a3 = params(3);
a4 = params(4);
b1 = params(5);
b2 = params(6);
b3 = params(7);
b4 = params(8);
%Nonlinear inequality constraints
c(1) = a1*a2 - b1*b3; % For the constraint b1*b3 >= a1*a2
c(2) = 4*a1*a2*b1*b4 - (b2*a3 - 1*b1*b3)^2; % For the constraint (b2*a3 - 1*b1*b3)^2 >= 4*a1*a2*b1*b4
%Nonlinear equality constraints
ceq=[];
end
To restate my question. How can I enter the nonlincon function above or just the two constraint equations (c(1) and c(2)) into SimBiology while using the fmincon estimation method?
The base and advanced algorithm settings don't appear to have an option for me to specify these constraints, and none of the rule options seem like the right tool to use as they appear to be all equalities and I want inequalities to be applied. I also don’t think I should create an event, since I want the constraints to hold throughout the parameterization.
  댓글 수: 6
Torsten
Torsten 2023년 12월 2일
편집: Torsten 2023년 12월 2일
I don't think anybody in the forum knows SimBiology good enough to answer your question. The easiest way seems for me to contact the developers (especially Arthur Goldsipe) via Technical Support.

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

채택된 답변

Arthur Goldsipe
Arthur Goldsipe 2023년 12월 4일
The estimation program in the SimBiology Model Analyzer app uses the command-line function sbiofit. Unfortunately, this function does not currently support nonlinear constraints.
One workaround would be to use a custom program or script that calls fmincon directly. You would need to write your own objective function that simulates the model and calculates an appropriate objective (for example, the mean square error). If you decide to pursue this route, I recommend using SimBiology's SimFunction for simulations. It provides a function-like interface to simulations that should require less code than than alternatives.
Also, as Torsten mentioned, feel free to reach out to Tech Support or contact me via my community profile if you want more details. I personally would also like to hear more about your nonlinear constraints so I can think about to extend sbiofit to support them.
-Arthur
  댓글 수: 1
DavidSimon
DavidSimon 2023년 12월 5일
Absolutely, Arthur. If you have the time, I have no issue speaking with you about my constraints in more detail. Thank you for your direct answer too.
I do have another program that incorporates fmincon as you suggest, but I don't use the SimFunction for simulations. I may consider that in the very near future.
My hope was to move my model over to SImBiology for parameter sweeps/sensitivity analysis. I think I might still be able to do that, but I'll have to think on that some more.

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

추가 답변 (0개)

커뮤니티

더 많은 답변 보기:  SimBiology Community

카테고리

Help CenterFile Exchange에서 Perform Sensitivity Analysis에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by