Clear Filters
Clear Filters

When using simbiology, I have a species that calls a function that uses a linear programming solver (glpk) and when I use it, the dosing stops working

1 view (last 30 days)
The ultimate goal is to make a hybrid dynamic model and a steady-state model. So, at each step, the model runs, one of the species will be the input to the steady-state model that runs using LP, but doesn't affect
I have a species that calls a repeated assignmet and I made a custom MATLAB function that uses linear programming (glpk). I even set it so that the actual function doesn't affect the model. However, I think the glpk is messing up with the ODE solver. When I don't call the LP solver, the model runs as expected.
  • Are there setting that I can adjust to limit this? I already tried disabling absolute tolerance scaling.
  • Would there be another LP solver that wouldn't interfere?
  • Does MATLAB have a built in LP solver?
I'm using Matlab and Simbiology 2020b on Windows 10

Accepted Answer

Christopher Nogiec
Christopher Nogiec on 20 Oct 2023
The LP solver slowed down the process. So, when called, It used up the time to run the simulation, without letting the actual time finish. Changing "MaximumWallClock" to Inf resolved the issue.

More Answers (1)

Rick Paxson
Rick Paxson on 4 Oct 2023
Edited: Rick Paxson on 4 Oct 2023
I suspect the issue might be with how glpk is getting called. In particular I wonder if it is called synchronously such that the repeated assingment "blocks" execution of the ODE solver until its done. If that is not the case then there would be an issue as the ODE solver would be out of sync with the results from glpk. I am making a bunch of assumptions here so maybe learning more about how this is set up would help.
In the meantime, the optimization toolbox has a LP solver (linprog is the command).
Let me know if this helps.
  3 Comments
Rick Paxson
Rick Paxson on 12 Oct 2023
I wonder if you are able to share your model and code. We might be able to take a quick look and make suggestions.
Christopher Nogiec
Christopher Nogiec on 12 Oct 2023
Edited: Christopher Nogiec on 14 Oct 2023
Thank you for offerring to look at the code.
I've attached the model and supporting scripts. It's not the best code, it's just a quick proof of concept.
In the model, under the FBA compartment is the repeated function affecting glycogen which calls the LP solver. This is the reaction that you can set to in/active and see where the model falls apart.
You'll also see I don't actually pass variables from the repeated function to the model. That was step two, but I was trying to isolate the problem, so currently it just runs the LP solver at every time point?
Let me know if I'm missing any code or if something isn't running.
Thank you

Sign in to comment.

Communities

More Answers in the  SimBiology Community

Categories

Find more on Scan Parameter Ranges in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!