DESDEO 2.1.0
General
Core logic
Added
- Added Group NIMBUS (GNIMBUS) method to the core optimization framework.
- Added new ADM variants (ADM2, ADMAfsar) and refactored the ADM codebase with clearer base abstractions.
- Started work on a resolver–provider–schema–based mechanism for connecting to external test problem libraries without relying on HTTP (initial support for Pymoo-based problems).
- Added preliminary infrastructure for improved solver metadata handling.
Changed
- Reworked the computation of intermediate solutions (WIP) to improve numerical robustness and alignment with theoretical formulations.
- Refactored solver and reference vector handling as part of ongoing structural cleanup.
Fixed
- Fixed division-by-zero issues in the GUESS scalarization (implementation previously deviated from the paper).
- Fixed circular imports, mismatched parentheses, and multiple small numerical and structural issues discovered during refactoring.
Notes
- Several core-logic changes in this release are experimental and may evolve as methodological work continues.
Web API
Added
- Added new endpoints and request models for stepping, reverting, and inspecting E-NAUTILUS iterations (WIP).
- Added endpoints for retrieving all iterations, votes, confirmations, and intermediate solutions in group decision-making workflows.
- Added support for defining optimization problems via JSON file uploads.
- Added new example problems to database initialization scripts.
Changed
- Refactored database session handling to propagate active sessions explicitly instead of relying on implicit generators.
- Improved authentication handling: access and refresh tokens are now supported via cookies and explicit
Authorizationheaders. - Continued work on multi-valued constraint handling and intermediate-result computation.
Fixed
- Fixed multiple issues in Group NIMBUS–related endpoints, including incorrect group ID usage and broken tests.
- Fixed API inconsistencies in
get_or_initialize, utopia, and intermediate-solution endpoints.
Notes
- Several endpoints and request/response models should be considered unstable and subject to change as research workflows mature.
Web GUI
Added
- Added initial GNIMBUS UI (WIP), including:
- Group and method selection views.
- Voting-based decision and compromise phases.
- End-state views with objective and variable tables and CSV export.
- Added iteration history views with the ability to revert to previous iterations (WIP).
- Added real-time updates via WebSockets for phase changes, iteration updates, and voting results.
- Added new visualizations, including vote bar charts and extended parallel coordinate plot features.
Changed
- Migrated OpenAPI client generation to Orval 8.x and regenerated client models.
- Refactored preference sidebars, solution tables, and layout components for clarity and experimentation.
- Continued work on authentication and session handling in the GUI (cookies + token-based access).
- Iteratively refined dashboards, top bars, and phase-specific views.
Fixed
- Fixed WebSocket reconnection and shutdown handling.
- Fixed phase update propagation, layout resizing issues, tooltip rendering, and visualization inconsistencies.
- Fixed UI behavior during compromise and voting phases (e.g., disabled invalid actions, improved feedback).
Notes
- Large parts of the GUI remain research prototypes; UI structure, naming, and interaction patterns may change rapidly.
Rumor has it...
- Single arithmetic and local crossover by @Paurikova in #244
- feat: 2 models and router for nimbus by @StinaSoile in #256
- Power mutation by @Paurikova in #257
- Bounded exponential xover implementation by @pStefanec in #253
- lower and upper bounds are taken from problem variables now by @pStefanec in #264
- Endpoint for intermediate solutions by @StinaSoile in #263
- (GUI) add Topbar component and implement dashboard and home pages by @giomara-larraga in #265
- feat: can add users now by @viljokass in #266
- bug? fix for enautilus and scaling delta for group scalas by @jpajasmaa in #269
- improved delta types and corresponding parts in the weight calculations by @jpajasmaa in #271
- A fix to the installation guide for restricted Windows PCs by @Matskuu in #272
- Fixed excactly one typo by @Mastereeli in #274
- Table model for problem metadata by @viljokass in #273
- Fix: a single typo in documentation by @laitozz in #277
- Update the links in README.md to point to the new documentation by @laitozz in #279
- typo fix: "form Github," -> "from Github," by @bwalie in #280
- Refactored get_corrected_referencepoint by @Mastereeli in #278
- Update the hypervolume indicator to utilize moocore instad of pymoo by @laitozz in #283
- Fix dead links in the documentation by @laitozz in #282
- typos by @bwalie in #284
- A few typos by @bwalie in #285
- Saving solutions to archive by @StinaSoile in #286
- Added logout endpoint and tests for it by @viljokass in #289
- Forbid assigning values to undefined fields in pydantic classes by @laitozz in #290
- Adding simulator file example to the article examples list by @Matskuu in #292
- Add solver option classes to the available_solvers dictionary by @laitozz in #295
- (GUI) Improvements to UI styles and new visualizations by @giomara-larraga in #299
- Add epsilon indicator by @laitozz in #288
- (GUI) Base layout for NIMBUS method by @giomara-larraga in #300
- Changes in layout for EMO method and correction in preference type of NIMBUS by @giomara-larraga in #303
- fixes to desdeo.tools.utils.py by @viljokass in #302
- (GUI) Added buttons at the bottom of preferences sidebar by @giomara-larraga in #305
- Inputs for preferences and numSolutions by @StinaSoile in #306
- Metadata fetch by @viljokass in #301
- Utopia endpoint by @viljokass in #308
- feat: minimal nimbus initialization endpoint by @StinaSoile in #307
- Iteration, solution table, initialization and dummy finish by @StinaSoile in #309
- Define problem using form in UI by @StinaSoile in #304
- (GUI and API) Added basic functionality for EMO methods by @giomara-larraga in #314
- Group scalarization functions for GNIMBUS by @jpajasmaa in #316
- updates and fixes to group scala tests by @jpajasmaa in #320
- Nimbus UI: new endpoints, intermediate, finish and save, graph, map by @StinaSoile in #319
- (GUI) fixed typo in desdeo/api/models/init and problem with a dependency by @giomara-larraga in #321
- Group scalarization function differentiable variants + tests by @jpajasmaa in #322
- group scala agg. variants diff versions and tests by @jpajasmaa in #324
- solution table, remove saved, button for bar chart, finish button change by @StinaSoile in #325
- Adm2 by @giomara-larraga in #326
- API State refactor by @gialmisi in #330
- fix and feat: One more endpoint, fix typos in generic route, change NIMBUSIntermediateSolutionResponse, NIMBUS UI by @StinaSoile in #332
- added test forest problem with metadata to db by @viljokass in #312
- fix my negligent error in get_or_initialize by @StinaSoile in #334
- Updated dependencies for running API through s2i by @juropo in #336
- Building and running in kubernetes working again by @juropo in #337
- new method: added gnimbus to desdeo by @jpajasmaa in #339
- bugfix: fixed naming bug by @jpajasmaa in #340
- Group Decision Making implementation by @viljokass in #315
- (API and GUI) Added SCORE bands visualization and small improvements to UI by @giomara-larraga in #341
- gdm docs, small fixes by @viljokass in #342
- fix: obj.name to obj.symbol in mcdm/gnimbus.py by @StinaSoile in #344
- Gdm fixes by @viljokass in #345
- GO/analyst can now request for a specific phase by @viljokass in #346
- Gdm fixing pt2 by @viljokass in #347
- Config changes relating to running the desdeo on Rahti and some small bugfixes by @juropo in #348
- Now the configs should actually work by @juropo in #351
- Nimbus UI: waiting symbol, shortcut link to nimbus, errors by @StinaSoile in #349
- added cake problem by @viljokass in #352
- bug fix: added if else for delta for agg_diffs by @jpajasmaa in #354
- feature: added GNIMBUS error and check for valid classification by @jpajasmaa in #356
- removed the db adder function. by @viljokass in #357
- Fixed division by 0 error in GUESS scalarization and fixed the broken s2i install after pyproject.toml updates by @juropo in #358
- Updated kubernetes documentation to match the recent changes by @juropo in #360
- Solver metadata by @viljokass in #343
- gnimbus updates and group scala bugfix by @jpajasmaa in #366
- updated tests by @jpajasmaa in #367
- Bugfixes on group nimbus by @jpajasmaa in #368
- Gdm additions 2 by @viljokass in #370
- GNIMBUS pilot experiment voting procedure changes by @jpajasmaa in #374
- Gnimbus updates by @juropo in #375
- Nimbus ending by @viljokass in #371
- Fixed group nimbus tests and some other things by @juropo in #377
- Gnimbus UI by @StinaSoile in #361
- updates for gnimbus compromise phase. test updates by @jpajasmaa in #380
- EMO changes. by @gialmisi in #381
- NSGA2 implementation by @gialmisi in #384
- fixed utopia endpoint not working with nimbus init state by @viljokass in #385
- description field in problem schema -> in database too by @viljokass in #386
- Added some scripts for interacting with the database directly by @juropo in #388
- New shceme to interface to external problems by @gialmisi in #390
- Fix improperly formatted documentation in scalarization.py by @MatiasYli-Hillila in #394
- Bump svelte from 5.46.3 to 5.46.4 in /webui by @dependabot[bot] in #402
- Bump devalue from 5.6.1 to 5.6.2 in /webui by @dependabot[bot] in #401
- Bump @sveltejs/kit from 2.49.4 to 2.49.5 in /webui by @dependabot[bot] in #400
- Bump @sveltejs/adapter-node from 5.5.0 to 5.5.1 in /webui by @dependabot[bot] in #399
- Endpoint for getting available solvers and its unit test. by @PtrBednarik in #398
- Gnimbus + score bands, api + UI by @StinaSoile in #392
- Nimbus finalize and remove saved by @StinaSoile in #387
- Endpoints for Session - get(id), getAll, delete(id) + unit tests by @PtrBednarik in #403
- Bump lodash-es from 4.17.22 to 4.17.23 in /webui by @dependabot[bot] in #408
New Contributors
- @StinaSoile made their first contribution in #256
- @Mastereeli made their first contribution in #274
- @laitozz made their first contribution in #277
- @bwalie made their first contribution in #280
- @MatiasYli-Hillila made their first contribution in #394
- @dependabot[bot] made their first contribution in #402
- @PtrBednarik made their first contribution in #398
Full Changelog: v2.0.0...v2.1.0