Skip to content

Highs Solver support - #30

Open
schel337 wants to merge 5 commits into
wagnerlab-berkeley:masterfrom
schel337:dev/schel337/highs-upgrade
Open

Highs Solver support#30
schel337 wants to merge 5 commits into
wagnerlab-berkeley:masterfrom
schel337:dev/schel337/highs-upgrade

Conversation

@schel337

@schel337 schel337 commented May 5, 2026

Copy link
Copy Markdown
Contributor

Adds support for highs LP solver. Seems to be a bit faster than the cuOpt simplex.

@leiwenpua1251-create

leiwenpua1251-create commented Aug 13, 2026

Copy link
Copy Markdown

Hey @schel337, think there might be an issue in the high_flux handling in solve(). It reuses _base_ub[col] as the upper bound when pinning a column's lower bound near its optimum:

self.problem.changeColBounds(col, limit, self._base_ub[col])

For synthetic exchange columns (added_secretion/added_uptake), _base_ub[col] is 0 (they're pre-allocated disabled). So when limit > 0, this sets bounds to [positive, 0] — infeasible by construction, regardless of the actual LP. Reproduced it on RECON1 (metabolite dopasf[c]): a feasible secretion_max of ~1.0 followed by an infeasible high_flux solve at limit=0.95.

My thinking: track a separate upper bound for high_flux (real max for structural reactions, model.maximum_flux/EXCHANGE_LIMIT for synthetic exchange columns) instead of reusing _base_ub.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants