Skip to content

Commit 46d0edc

Browse files
authored
Merge branch 'industrial-optimization-group:master' into reference-point
2 parents 1e4eba8 + d1f54db commit 46d0edc

116 files changed

Lines changed: 5710 additions & 3475 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
name: Bug report
3+
about: Report a problem to help us improve DESDEO
4+
title: "[BUG] "
5+
labels: bug
6+
assignees: ''
7+
8+
---
9+
10+
* **Describe the bug**
11+
A clear and concise description of what the bug is.
12+
13+
* **To reproduce**
14+
Steps (or a minimal code example) to reproduce the behavior:
15+
16+
```python
17+
# minimal reproducible example
18+
```
19+
20+
* **Expected behavior**
21+
A clear and concise description of what you expected to happen.
22+
23+
* **Actual behavior / error output**
24+
What actually happened. Include the full traceback or error message if applicable.
25+
26+
* **Environment**
27+
- DESDEO version (e.g. output of `pip show desdeo`):
28+
- Python version:
29+
- Operating system:
30+
- Installation method (PyPI / from source, uv / poetry / pip):
31+
- Relevant optional solvers installed (Gurobi, IPOPT, BONMIN, CBC, ...):
32+
33+
* **Additional context**
34+
Add any other context about the problem here (screenshots, related issues, etc.).

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: true
2+
contact_links:
3+
- name: Questions and support (Discord)
4+
url: https://discord.gg/uGCEgQTJyY
5+
about: For general questions, usage help, and discussion, please join our Discord server.
6+
- name: Documentation
7+
url: https://desdeo.readthedocs.io/en/latest/
8+
about: Check the DESDEO documentation before opening an issue.

.github/workflows/draft-pdf.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Draft PDF
2+
3+
on:
4+
push:
5+
paths:
6+
- paper.md
7+
- paper.bib
8+
- paper/**
9+
- .github/workflows/draft-pdf.yml
10+
11+
jobs:
12+
paper:
13+
runs-on: ubuntu-latest
14+
name: Paper Draft
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v4
18+
19+
- name: Build draft PDF
20+
uses: openjournals/openjournals-draft-action@master
21+
with:
22+
journal: joss
23+
paper-path: paper.md
24+
25+
- name: Upload PDF artifact
26+
uses: actions/upload-artifact@v4
27+
with:
28+
name: paper-pdf
29+
path: paper.pdf

.github/workflows/unit_tests.yaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,11 @@ jobs:
5555
5656
- name: Run unit tests
5757
run: |
58-
uv run pytest -n auto -m "not githubskip and not fixme" --disable-warnings --maxfail=5
58+
uv run pytest -n auto -m "not githubskip and not fixme" --disable-warnings --maxfail=5 --cov=desdeo --cov-report=xml --cov-report=term
59+
60+
- name: Upload coverage to Codecov
61+
uses: codecov/codecov-action@v5
62+
with:
63+
files: ./coverage.xml
64+
fail_ci_if_error: false
65+
token: ${{ secrets.CODECOV_TOKEN }}

CHANGELOG.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,72 @@ This project follows **Keep a Changelog** and **Semantic Versioning**:
5454

5555
---
5656

57+
## [2.6.0] - 18.6.2026
58+
59+
### Core logic
60+
61+
#### Added
62+
63+
- Added the **ZDT4** and **ZDT6** benchmark test problems, with tests
64+
(`desdeo/problem/testproblems/zdt_problem.py`) (#512, #515).
65+
- Added the **DTLZ1** and **DTLZ4** benchmark test problems and consolidated the
66+
DTLZ family into a single `desdeo/problem/testproblems/dtlz_problems.py`
67+
module, with tests (#517, #518).
68+
- Added the **Lamé superspheres** test problem
69+
(`desdeo/problem/testproblems/lame_superspheres_problem.py`), with tests (#529).
70+
- Added an optional `seed` argument to the nevergrad solver interface
71+
(`NevergradGenericOptions` / `NevergradGenericSolver` in
72+
`desdeo/tools/ng_solver_interfaces.py`) for reproducible gradient-free solves;
73+
the caller's NumPy RNG state is saved and restored around the solve.
74+
75+
#### Changed
76+
77+
- Renamed the artificial decision maker (ADM) modules to snake_case:
78+
`ADMAfsar` -> `adm_afsar`, `ADMChen` -> `adm_chen`, and `BaseADM` -> `base_adm`
79+
(`desdeo/adm/`).
80+
- Renamed `desdeo/tools/GenerateReferencePoints.py` to `generateReferencePoints.py`
81+
(#520).
82+
- Improvements and fixes to the Gurobi and CVXPY evaluators and the Gurobi
83+
solver interface (#520).
84+
- Resolved mypy type-checking issues in `desdeo/tools/patterns.py` (#511).
85+
86+
#### Removed
87+
88+
- Removed the standalone `dtlz2_problem.py`; DTLZ2 now lives in the unified
89+
`dtlz_problems.py` (#517).
90+
- Removed unused ideal-point handling from `desdeo/tools/group_scalarization.py`
91+
(#537).
92+
93+
#### Fixed
94+
95+
- Corrected LaTeX notation and formulas for several benchmark test problems
96+
(ZDT4, ZDT6, DTLZ4), and fixed a logic issue in the ZDT6 `g` function so the
97+
implementation matches its documented definition (#512, #515, #517).
98+
- Fixed an incorrect pytest marker on the ZDT4 problem test.
99+
- Fixed tests that failed due to an incomplete function refactoring.
100+
101+
#### Security
102+
103+
- Removed a reference to a broken/compromised `polyfill` script (the polyfill.io
104+
supply-chain risk) from the documentation site configuration (`mkdocs.yml`)
105+
(#516).
106+
107+
### Web API
108+
109+
#### Fixed
110+
111+
- The API test suite is now skipped automatically when the optional `web` extra
112+
(FastAPI) is not installed, so a core-logic-only installation can run the
113+
documented `pytest` / `just test` without a collection-time import error.
114+
115+
### Web GUI
116+
117+
#### Removed
118+
119+
- Removed scenario keys from the problem-definition view (#480).
120+
121+
---
122+
57123
## [2.5.0] - 9.6.2026
58124

59125
### Core logic

CITATION.cff

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
cff-version: 1.2.0
2+
title: "DESDEO: the open-source software framework for interactive multiobjective optimization"
3+
message: >-
4+
If you use DESDEO in your work, please cite it. See the "Citing DESDEO"
5+
section of the documentation for the current recommended reference:
6+
https://desdeo.readthedocs.io/en/latest/home/citing/
7+
type: software
8+
authors:
9+
- given-names: Giovanni
10+
family-names: Misitano
11+
affiliation: "University of Jyväskylä"
12+
- given-names: Bhupinder Singh
13+
family-names: Saini
14+
affiliation: "University of Jyväskylä"
15+
- given-names: Giomara
16+
family-names: Lárraga
17+
affiliation: "University of Jyväskylä"
18+
- given-names: Juho
19+
family-names: Roponen
20+
affiliation: "University of Jyväskylä"
21+
- given-names: Matias
22+
family-names: Nieminen
23+
affiliation: "University of Jyväskylä"
24+
- given-names: Juuso
25+
family-names: Pajasmaa
26+
affiliation: "University of Jyväskylä"
27+
- given-names: Babooshka
28+
family-names: Shavazipour
29+
affiliation: "University of Jyväskylä"
30+
- given-names: Vili
31+
family-names: Kärkkäinen
32+
affiliation: "University of Jyväskylä"
33+
- given-names: Kaisa
34+
family-names: Miettinen
35+
affiliation: "University of Jyväskylä"
36+
repository-code: "https://github.com/industrial-optimization-group/DESDEO"
37+
url: "https://desdeo.readthedocs.io/en/latest/"
38+
doi: 10.5281/zenodo.20748206
39+
license: MIT
40+
keywords:
41+
- multiobjective optimization
42+
- interactive methods
43+
- decision support
44+
- evolutionary optimization
45+
- optimization
46+
# Preferred citation until the JOSS paper is published. Once the JOSS paper is
47+
# available, update `preferred-citation` to point to it (and its DOI).
48+
preferred-citation:
49+
type: article
50+
title: "DESDEO: The Modular and Open Source Framework for Interactive Multiobjective Optimization"
51+
authors:
52+
- given-names: Giovanni
53+
family-names: Misitano
54+
- given-names: Bhupinder Singh
55+
family-names: Saini
56+
- given-names: Bekir
57+
family-names: Afsar
58+
- given-names: Babooshka
59+
family-names: Shavazipour
60+
- given-names: Kaisa
61+
family-names: Miettinen
62+
journal: "IEEE Access"
63+
volume: 9
64+
start: 148277
65+
end: 148295
66+
year: 2021
67+
publisher:
68+
name: "IEEE"
69+
doi: 10.1109/ACCESS.2021.3123825

CODE_OF_CONDUCT.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Code of Conduct
2+
3+
## Our pledge
4+
5+
We, as members, contributors, and maintainers of the DESDEO project, pledge to
6+
make participation in our community a welcoming, respectful, and harassment-free
7+
experience for everyone, regardless of background, identity, or level of
8+
experience.
9+
10+
We are committed to fostering an open and friendly environment in which people
11+
can collaborate on interactive multiobjective optimization research and software.
12+
13+
## Our standards
14+
15+
Examples of behavior that contributes to a positive environment include:
16+
17+
- Being respectful and considerate toward others.
18+
- Welcoming newcomers and helping them get started.
19+
- Giving and gracefully accepting constructive feedback.
20+
- Focusing on what is best for the community and the project.
21+
- Showing empathy toward other community members.
22+
23+
Examples of unacceptable behavior include any form of harassment, insulting or
24+
derogatory comments, personal or political attacks, publishing others' private
25+
information without permission, and any other conduct that would reasonably be
26+
considered inappropriate in a professional setting.
27+
28+
## Scope
29+
30+
This Code of Conduct applies within all project spaces, including the GitHub
31+
repository (issues, pull requests, discussions), the project's Discord server,
32+
and any other official channels, and also applies when an individual is
33+
representing the project in public spaces.
34+
35+
## Enforcement
36+
37+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
38+
reported to the project maintainers by email at **optim@jyu.fi** or via the
39+
project's [Discord server](https://discord.gg/uGCEgQTJyY). All complaints will be
40+
reviewed and investigated promptly and fairly, and the privacy and security of
41+
the reporter will be respected.
42+
43+
Maintainers are responsible for clarifying and enforcing these standards and
44+
may take appropriate corrective action, including: removing comments, commits,
45+
or contributions, or temporarily or permanently banning a contributor, in
46+
response to behavior they deem inappropriate.
47+
48+
## Attribution
49+
50+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
51+
version 2.1, available at
52+
<https://www.contributor-covenant.org/version/2/1/code_of_conduct/>.
53+
54+
[homepage]: https://www.contributor-covenant.org

CONTRIBUTING.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Contributing to DESDEO
2+
3+
Thank you for your interest in contributing to DESDEO! Contributions of all
4+
kinds are welcome: bug reports, bug fixes, new features, new interactive
5+
methods, documentation improvements, and more.
6+
7+
This file is a short overview. The full, detailed contribution guide lives in
8+
the documentation:
9+
10+
**[Contributing to DESDEO](https://desdeo.readthedocs.io/en/latest/tutorials/contributing/)**
11+
(source: [`docs/tutorials/contributing.md`](docs/tutorials/contributing.md))
12+
13+
The full guide covers, step by step: installing the required software,
14+
setting up a development environment with `uv`, the fork, branch, and pull
15+
request workflow, code style and linting (`ruff`, `mypy`), running the test
16+
suite, pre-commit hooks, docstring conventions, and building the documentation.
17+
18+
## Quick start for contributors
19+
20+
1. Fork the repository and clone your fork.
21+
2. Set up a development environment and install all dependencies:
22+
```bash
23+
uv sync
24+
```
25+
(`uv` also installs the `just` task runner used below.)
26+
3. Create a feature branch off `master`.
27+
4. Make your changes, keeping commits focused and well described.
28+
5. Run the test suite:
29+
```bash
30+
just test
31+
```
32+
Run `just --list` to see all available recipes.
33+
6. Push your branch and open a pull request against `master`.
34+
35+
## Reporting issues and getting help
36+
37+
- **Found a bug?** Open a [bug report](https://github.com/industrial-optimization-group/DESDEO/issues/new/choose).
38+
- **Have an idea or feature request?** Open an
39+
[idea discussion](https://github.com/industrial-optimization-group/DESDEO/issues/new/choose).
40+
- **Need help or want to discuss?** Join our
41+
[Discord server](https://discord.gg/uGCEgQTJyY).
42+
43+
## Code of Conduct
44+
45+
By participating in this project you agree to abide by our
46+
[Code of Conduct](CODE_OF_CONDUCT.md).

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2023 The Multiobjective Optimization Group (http://www.mit.jyu.fi/optgroup/).
3+
Copyright (c) 2026 The Multiobjective Optimization Group (https://optgroup.it.jyu.fi/).
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

Makefile

Lines changed: 0 additions & 56 deletions
This file was deleted.

0 commit comments

Comments
 (0)