Changelog#

All notable changes to CVXlab will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]#

Added#

  • variable_domain field for data tables: replaces the old boolean integer field. Accepted values: integer (integer variables, $\mathbb{Z}$) or boolean (binary variables, ${0,1}$). Omitting the field keeps the default continuous domain. The deprecated integer: true syntax is still accepted with a warning and automatically migrated to variable_domain: integer.

  • Installation docs: new Install from Dev Branch section with git+https install instructions for users who want the latest unreleased features.

  • Possibility to run only a selection of scenarios from Model.run_model() method, by specifying the scenario_idx attribute as integer or list of integers corresponding to the index of scenarios in the Model.scenarios property.

  • Per-problem solver and solver-settings routing for multi-problem runs (backend: core.py, problem.py, database.py).

Changed#

  • Reorganized backend solve flow; moved database comparison/cleanup into dedicated helpers (backend/database.py, backend/core.py).

  • Split nonlinear tutorial assets into separate model_nonlinear and model_decomposition sets under docs/source/tutorials/production_planning_nonlinear.

  • Bumped minimum cvxpy version to >=1.9.1 (see pyproject.toml).

  • Adjusted numerical default: Defaults.NumericalSettings.SPARSE_MATRIX_ZEROS_THRESHOLD changed from 0.3 to 0.7 (defaults.py).

Fixed#

  • Backward-compatibility migration for integer field: the migration block that converts integer: truevariable_domain: integer.

  • README images now use absolute raw GitHub URLs so they render correctly on PyPI.

  • Corrected GitHub organization URL (cvxgrpcvxlab) throughout installation docs.

  • Replaced unsupported tab-set/tab-item directives (sphinx-design) with plain RST in the citation section of the resources page.

  • Integration tests and CI: integration tests now run across tutorial models and were updated to cover solver routing and tutorial assets (tests/integration/test_integration.py).

[1.0.1] - 11 June 2026#

Added#

  • Frontend CLI (cvxlab.frontend.run()): interactive menu-driven interface for model setup and execution. Modules: interface, session, actions, display.

  • User-defined constants and operators: template modules (user_defined_constants.py, user_defined_operators.py) for custom symbolic extensions; auto-imported when present in the model directory (issue #109).

  • CSV input data support: models can now use CSV files as input data sources (issue #103).

  • Model.update_sets_tables(): update set definitions in an existing SQLite database without full regeneration.

  • skip_tables argument in Model.run_model() / Core.solve_integrated_problems(): selectively exclude tables from convergence checks.

Changed#

  • Python ≥ 3.11 required: bumped requires-python; removed from __future__ import annotations across the codebase.

  • Integrated-solving convergence refactored: reworked algorithm in Core.solve_integrated_problems().

  • Centralized Defaults.LiteralTypes: shared Literal type aliases consolidated, replacing scattered definitions.

  • Identity matrix constant: now accepts a single set as dimensional argument (issue #101).

  • description columns in data structures are no longer processed, allowing free text (issue #105).

  • Removed CRITICAL log level from Logger.

  • Pinned pandas==2.3.3; removed deprecated errors='ignore' arguments (pandas 3.0 compatibility).

Fixed#

  • util.normalize_dataframe(): improved NaN handling and blank-fill logic.

  • SQLManager.dataframe_to_table(): string-type conversion and batch flag reset.

  • Database.load_data_input_files_to_database(): input directory path reference and NaN replacement before SQLite export.

  • Database.generate_blank_data_input_files(): corrected excel_dir_path argument.

  • Model.run_model(): selected solver now correctly logged.

  • util.pivot_dataframe_to_data_structure(): handle missing primary key column in Excel setup files.

  • Various error-catching improvements for symbolic expression validation and settings inconsistencies (issues #102, #104, #106, #107, #108).

Documentation#

  • Tutorials merged into resources page; standalone tutorials.rst removed.

  • Added production planning (non-linear) tutorial.

  • Added Models gallery and Publications sections to resources page.

  • Restructured index.rst: workflow figure promoted, navigation table updated.

[1.0.1b1] - 17 December 2025#

Fixed#

  • Bug fix following 1.0.0b1 (incremented beta to 1.0.1b1)

[1.0.0b1] - 14 November 2025#

Added#

  • Model class for optimization problem management

  • SQLite-backed data management via Database and SQLManager

  • CVXPY integration for convex optimization solving

  • Support for independent and integrated (coupled) problem solving

  • Excel and YAML-based model settings definition

  • Symbolic expression parsing and validation

  • Initial set of built-in operators and constants

  • Basic logging and error handling framework

Documentation#

  • Initial user guide with workflow steps

  • API reference documentation

  • Tutorial: Simple model example

  • Installation guide

  • Contributing guidelines

Known Limitations#

  • Documentation under active development

  • API subject to change before 1.0.0 stable

  • Limited tutorial coverage

  • Limited test converage