feror43 downloadsSolve GMPL linear programs and visualize two-variable feasible regions.
Write a scalar GMPL/MathProg linear model in a fenced code block and see its solution directly in Reading view. Two-variable models also get a theme-aware feasible-region plot.
```gmpl
var x1 >= 0;
var x2 >= 0;
maximize z: 30*x1 + 40*x2;
subject to c11: 2*x1 + x2 <= 100;
subject to c12: x1 + 3*x2 <= 120;
subject to c13: 2*x1 + 2*x2 <= 100;
end;
```
The plugin reports the objective, variable values, bounds/basis-style statuses, constraint activity and slack. It accepts gmpl, mathprog, and mod fence names.
var declarations with >=, <=, or fixed (=) numeric boundsinteger and binary variable modifiersmaximize or minimize objectivesubject to constraints using <=, >=, or =+, -, *, /, and parentheses# line commentsIndexed sets, parameters, summations, conditional expressions, and nonlinear terms are intentionally not supported yet. The plugin shows a precise parse error instead of silently misreading them.
npm install
npm run check
Copy or symlink this directory into <vault>/.obsidian/plugins/linear-solver, then enable Linear Solver in Obsidian’s Community plugins settings. The runtime files are manifest.json, main.js, and styles.css.
Or build and install it into a vault in one step:
./scripts/install-vault.sh /path/to/your/vault
# Equivalent: npm run install:vault -- /path/to/your/vault
The installer validates that the destination contains .obsidian, builds the current source, and installs only the three runtime files under .obsidian/plugins/linear-solver.
During development, npm run dev watches and rebuilds main.js.
Pushing a version tag such as 0.1.1 runs the full check suite and publishes a GitHub release containing the three Obsidian runtime files. The workflow also creates GitHub build-provenance attestations for main.js and styles.css. Obsidian requires the tag to match the version in manifest.json exactly, without a v prefix.
To create the same package locally:
npm run package