Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
f209b17
squash: docs/working-with-solvers (#685)
FBumann May 19, 2026
bbb54d4
squash: refactor/oetc-as-solver (#697)
FBumann May 19, 2026
947f0d2
docs: restructure toctree into 5 sections; new quick-start + dispatch…
FBumann May 19, 2026
fb53670
docs: move coming-from-other-tools to Getting Started
FBumann May 19, 2026
4c6b797
docs(notebooks): reframe creating-variables; tighten quick-start and …
FBumann May 19, 2026
808627d
docs: reframe creating-expressions; show H3 in right-sidebar TOC
FBumann May 19, 2026
d7ec8fa
docs: reframe creating-constraints
FBumann May 20, 2026
b1f7258
docs(creating-expressions): cover .sel/.isel for selection
FBumann May 20, 2026
9baf7e9
docs: reframe coordinate-alignment
FBumann May 20, 2026
6ec9943
docs(first-real-model): fix stale "(free)" in recap
FBumann May 20, 2026
705e052
docs: tidy Solving-section pages
FBumann May 20, 2026
019578e
docs(transport-tutorial): frame as a GAMS migration aid
FBumann May 20, 2026
609d22c
docs: split User Guide into Creating/Modifying sections; tidy install…
FBumann May 20, 2026
b2f6b09
docs: split using-solvers into solving and solver-api guides
FBumann May 20, 2026
8b4b49b
docs: merge solving troubleshooting into one notebook; reorder toctree
FBumann May 20, 2026
7d43526
docs(troubleshooting): use format_* API and tighten the infeasibility…
FBumann May 20, 2026
9a99360
docs: add a "Coming from Other Tools" section
FBumann May 20, 2026
1d1013c
docs(gpu-acceleration): rename page title to "GPU acceleration"
FBumann May 20, 2026
85ad530
docs: fix stale solving link and garbled remote docstring
FBumann May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/test-notebooks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ jobs:

# Skip notebooks that require credentials or special setup
case "$name" in
solve-on-oetc.ipynb|solve-on-remote.ipynb)
echo "Skipping $name (requires credentials or special setup)"
remote-machines.ipynb)
echo "Skipping $name (requires credentials or remote machine)"
continue
;;
esac
Expand Down
82 changes: 81 additions & 1 deletion doc/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ Modifying a model
model.Model.remove_objective
model.Model.remove_sos_constraints
model.Model.copy
model.Model.apply_sos_reformulation
model.Model.undo_sos_reformulation
model.Model.reformulate_sos_constraints

Solving
Expand Down Expand Up @@ -498,10 +500,75 @@ Type aliases
Solvers
========

The stateful :class:`~linopy.solvers.Solver` instance owns the solver-side
model and exposes a two-step :meth:`~linopy.solvers.Solver.from_name` /
:meth:`~linopy.solvers.Solver.solve` workflow. :meth:`Model.solve` is a
thin wrapper around it.

.. autosummary::
:toctree: generated/

solvers.Solver

Construction
------------

.. autosummary::
:toctree: generated/

solvers.Solver.from_name
solvers.Solver.from_model

Solving
-------

.. autosummary::
:toctree: generated/

solvers.Solver.solve
solvers.Solver.update_solver_model
solvers.Solver.close

Post-solve state
----------------

.. autosummary::
:toctree: generated/

solvers.Solver.status
solvers.Solver.solution
solvers.Solver.report
solvers.Solver.solver_model

Capabilities
------------

.. autosummary::
:toctree: generated/

solvers.Solver.is_available
solvers.Solver.license_status
solvers.Solver.supports
solvers.Solver.supported_features
solvers.Solver.runtime_features

Discovery
---------

.. autosummary::
:toctree: generated/

solvers.available_solvers
solvers.licensed_solvers
solvers.SolverFeature
solvers.LicenseStatus

Implementations
---------------

.. autosummary::
:toctree: generated/

solvers.CBC
solvers.COPT
solvers.Cplex
Expand All @@ -519,17 +586,29 @@ Solvers
Remote solving
==============

Solve a model on a remote machine via SSH or on the OET Cloud (OETC).
See :doc:`remote-machines` for usage.

.. autosummary::
:toctree: generated/

remote.SSH
remote.SshSettings
remote.Oetc
remote.OetcSettings
remote.RemoteHandler
remote.OetcHandler
remote.OetcCredentials


Solver status and result types
==============================

Types returned by or compared against :attr:`Model.status`,
:attr:`Model.termination_condition`, and :attr:`Model.solution`.
:attr:`Model.termination_condition`, and :attr:`Model.solution`, plus
:class:`~linopy.constants.SolverReport` surfaced on
:attr:`Solver.report <linopy.solvers.Solver.report>` and
:attr:`Result.report <linopy.constants.Result.report>`.

.. autosummary::
:toctree: generated/
Expand All @@ -538,6 +617,7 @@ Types returned by or compared against :attr:`Model.status`,
constants.TerminationCondition
constants.Status
constants.Solution
constants.SolverReport
constants.Result


Expand Down
27 changes: 0 additions & 27 deletions doc/benchmark.rst

This file was deleted.

1 change: 1 addition & 0 deletions doc/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@
html_theme_options = {
"repository_url": "https://github.com/pypsa/linopy",
"use_repository_button": True,
"show_toc_level": 2,
}


Expand Down
3 changes: 0 additions & 3 deletions doc/create-a-model-with-coordinates.nblink

This file was deleted.

3 changes: 0 additions & 3 deletions doc/create-a-model.nblink

This file was deleted.

3 changes: 3 additions & 0 deletions doc/first-real-model.nblink
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"path": "../examples/first-real-model.ipynb"
}
16 changes: 8 additions & 8 deletions doc/gpu-acceleration.rst
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
========================
GPU-Accelerated Solving
========================
================
GPU acceleration
================

.. warning::

This feature is **experimental** and not tested in CI due to the lack of GPU-enabled machines. Use with caution and please report any issues.

Linopy supports GPU-accelerated optimization solvers that can significantly speed up solving large-scale linear programming problems by leveraging the parallel processing capabilities of modern GPUs.

Supported GPU Solvers
Supported GPU solvers
=====================

cuPDLPx
Expand Down Expand Up @@ -42,7 +42,7 @@ To install it, you have to have the `CUDA Toolkit <https://developer.nvidia.com/

For a complete list of cuPDLPx parameters, see the `cuPDLPx documentation <https://github.com/MIT-Lu-Lab/cuPDLPx/tree/main/python#parameters>`_.

Xpress with GPU Acceleration
Xpress with GPU acceleration
-----------------------------

`FICO Xpress <https://www.fico.com/en/fico-xpress-trial-and-licensing-options>`_ version 9.8 and later includes GPU acceleration support for certain operations.
Expand All @@ -56,7 +56,7 @@ Xpress with GPU Acceleration
Prerequisites
=============

Hardware Requirements
Hardware requirements
---------------------

GPU solvers require:
Expand All @@ -65,13 +65,13 @@ GPU solvers require:
- Sufficient GPU memory for your problem size (varies by problem)
- PCIe 3.0 or higher for optimal data transfer

Software Requirements
Software requirements
---------------------

1. **CUDA Toolkit**: Most GPU solvers require CUDA 11.0 or later
2. **Compatible GPU drivers**: Match your CUDA version

Verifying Installation
Verifying installation
======================

To verify that the GPU solvers are properly installed and detected:
Expand Down
26 changes: 0 additions & 26 deletions doc/gurobi-double-logging.rst

This file was deleted.

48 changes: 20 additions & 28 deletions doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -98,69 +98,61 @@ This package is published under MIT license.
:maxdepth: 2
:caption: Getting Started

prerequisites
create-a-model
create-a-model-with-coordinates
installation
quick-start
first-real-model

.. toctree::
:hidden:
:maxdepth: 2
:caption: User Guide
:caption: Creating a Model

user-guide
creating-variables
creating-expressions
creating-constraints
coordinate-alignment
manipulating-models

.. toctree::
:hidden:
:maxdepth: 2
:caption: Examples

transport-tutorial
migrating-from-pyomo

.. toctree::
:hidden:
:maxdepth: 2
:caption: Advanced Features
:caption: Solving a Model

sos-constraints
piecewise-linear-constraints
testing-framework
solving
solver-api
remote-machines
gpu-acceleration
solving-troubleshooting

.. toctree::
:hidden:
:maxdepth: 2
:caption: Solving
:caption: Modifying a Model

solve-on-remote
solve-on-oetc
gpu-acceleration
manipulating-models

.. toctree::
:hidden:
:maxdepth: 2
:caption: Troubleshooting
:caption: Advanced Formulations

infeasible-model
gurobi-double-logging
sos-constraints
piecewise-linear-constraints

.. toctree::
:hidden:
:maxdepth: 2
:caption: Comparisons
:caption: Coming from Other Tools

benchmark
syntax
tool-comparison
migrating-from-pyomo
transport-tutorial

.. toctree::
:hidden:
:maxdepth: 2
:caption: Reference

testing-framework
api
release_notes
contributing
3 changes: 0 additions & 3 deletions doc/infeasible-model.nblink

This file was deleted.

Loading