Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
152 commits
Select commit Hold shift + click to select a range
bd20969
adding experiments for ipopt with a cvxpy
Transurgeon Jun 16, 2025
73b1301
fixing jacobian sign and putting the constraints in standard form
Transurgeon Jun 17, 2025
c6adb1a
adding some refactoring for automatically calculating bounds
Transurgeon Jun 17, 2025
00304ba
adds two more examples
Transurgeon Jun 17, 2025
ee8b061
adding base files for interface
Transurgeon Jun 18, 2025
b0d0f19
fix rosenbrock with multiple variables
Transurgeon Jun 18, 2025
205ed3e
beginning testing on MLE estimation but encountering errors
Transurgeon Jun 18, 2025
b2fef0c
fixes test for mle-estimation, thanks parth!
Transurgeon Jun 18, 2025
4902202
fixing mle with constraints, but need to generalize
Transurgeon Jun 19, 2025
1339089
add new example and attempt to fix the jacobian variable ordering issue
Transurgeon Jun 19, 2025
905d936
refactor the normalization of constraints
Transurgeon Jun 19, 2025
42f332f
adding new examples and refactoring bounds calculation
Transurgeon Jun 19, 2025
8614f3f
fix issue with bounds creation
Transurgeon Jun 20, 2025
49ffe9a
finish up a portfolio example
Transurgeon Jun 20, 2025
7fc9d88
add example for max
Transurgeon Jun 22, 2025
2e8cd8e
initial attempts at adding a smooth canon for maximum, what's left?
Transurgeon Jun 23, 2025
e5b9352
test with more complex example
Transurgeon Jun 23, 2025
a530fba
testing reduction and it seems to work!
Transurgeon Jun 23, 2025
87ec462
Merge pull request #2 from cvxgrp/expr2smooth
Transurgeon Jun 27, 2025
4544ef7
Merge pull request #1 from cvxpy/ipopt-interface
Transurgeon Jun 27, 2025
41bb677
Merge pull request #3 from cvxgrp/working-on-smooth-canons
Transurgeon Jun 30, 2025
e75df56
Merge branch 'cvxpy:master' into master
Transurgeon Jul 2, 2025
4986956
Adding IPOPT interface as NLP solver (#4)
Transurgeon Jul 7, 2025
1e8c776
Merge branch 'cvxpy:master' into master
Transurgeon Jul 7, 2025
ccf69ad
fix interface issues thanks to parth (#5)
Transurgeon Jul 8, 2025
35ea33e
adding unit-tests and improvements to NLP interface. (#6)
Transurgeon Jul 9, 2025
dcccea0
update solution statuses thanks to odow (#8)
Transurgeon Jul 10, 2025
0a49409
Adding non-linear example of rocket control (#7)
Transurgeon Jul 20, 2025
6ea3605
adding many more example of non-convex functions (#11)
Transurgeon Aug 11, 2025
b9a7e4d
adding some more tests (#12)
Transurgeon Aug 12, 2025
7f44f3e
fix ruff complaints
Transurgeon Aug 12, 2025
d58baf8
Smith form affine (#13)
Transurgeon Aug 15, 2025
5870139
Fix matmul gradient issue (#14)
Transurgeon Aug 15, 2025
dcd73e8
added div and some other small changes (#15)
dance858 Aug 19, 2025
5097446
sparse Jacobian via dok (#16)
dance858 Aug 19, 2025
0756405
div canon stuff (#17)
dance858 Aug 19, 2025
d487954
cleaning up the sandbox and adding more test problems to the test sui…
Transurgeon Aug 21, 2025
f24c8bb
first order deriv check (#21)
Transurgeon Aug 25, 2025
0832230
Setting up smith form for non-affine expressions. (#20)
Transurgeon Aug 25, 2025
5830a8f
Allow matrix variables (#26)
Transurgeon Aug 27, 2025
98c6cd6
Bounds investigation (#29)
dance858 Aug 27, 2025
115bf77
Experiment: Hessian of the lagrangian (#31)
Transurgeon Aug 29, 2025
acb21dc
Bounds investigation (#33)
Transurgeon Sep 5, 2025
7bdbb39
comment out hessian stuff
Transurgeon Sep 5, 2025
263117b
small changes to log
dance858 Sep 5, 2025
bc431ea
canonicalization for exp, and nelson siegel model fitting (#34)
Transurgeon Sep 7, 2025
9d21c4c
Adding solver options (#42)
Transurgeon Sep 15, 2025
573248b
fixing ruff warnings (#35)
Transurgeon Sep 15, 2025
051d1aa
Hessian (#38)
Transurgeon Sep 15, 2025
8f81cf0
Hessian (#43)
dance858 Sep 18, 2025
d9bd0d9
complete merge
Transurgeon Sep 18, 2025
044ae0c
setting up infrastructure for testing NLP on CI
Transurgeon Sep 18, 2025
f9a0108
fixing all not-implemented hessian issues (#45)
Transurgeon Sep 20, 2025
85f4520
Revert "fixing all not-implemented hessian issues (#45)"
dance858 Sep 20, 2025
8e451f2
Raising unimplemented errors (#46)
dance858 Sep 20, 2025
75adf20
clean up code and fixed bug in log-canon. Checked that all tests in N…
dance858 Sep 21, 2025
f77d602
smooth approx. and resolve (#47)
Transurgeon Sep 21, 2025
0344d55
implemented smooth logic for abs and added some lasso tests. All of t…
dance858 Sep 22, 2025
d98cfdb
Sparse hess other approach (#53)
dance858 Sep 28, 2025
8b69565
New jacobian (#55)
dance858 Oct 3, 2025
8aff86c
adding atom name in error for arguments of jacobian and hessian (#57)
Transurgeon Oct 4, 2025
565ef35
special index jacobian (#58)
dance858 Oct 4, 2025
a5ebbdf
Optimal control example and cleaning up sandbox (#59)
Transurgeon Oct 4, 2025
dc117a0
remove space shuttle example
Transurgeon Oct 4, 2025
126943c
fix issue with trig example, remove LS dual initialization (#60)
Transurgeon Oct 5, 2025
90758a4
Fix jacobian of index (#61)
Transurgeon Oct 6, 2025
ec6954f
Add some control examples and fix canon issues (#64)
Transurgeon Oct 9, 2025
ba9a4de
merge cvxpy master to get newest ci changes (#68)
Transurgeon Oct 10, 2025
acf864b
Merge branch 'cvxpy:master' into master
Transurgeon Oct 10, 2025
e76d4d4
cleanup CI and try to make it pass (#67)
Transurgeon Oct 10, 2025
4a2a533
setting up workflow for nlp testing (#69)
Transurgeon Oct 11, 2025
b6f3898
Disciplined nonlinear programming (#70)
Transurgeon Oct 14, 2025
4f101cc
initial changes for dnlp2smooth reduction (#71)
Transurgeon Oct 15, 2025
3b19bb9
Fixing two control examples (#74)
Transurgeon Oct 17, 2025
31e36d5
canonicalization changes for p-norm and power (#72)
Transurgeon Oct 17, 2025
30ad99b
Jacobian of sum of a matrix with index = 0 (or 1) (#75)
Transurgeon Oct 22, 2025
e485146
matmul (#76)
dance858 Oct 24, 2025
499108e
Risk parity new (#77)
dance858 Nov 1, 2025
fc491e0
Adds jacobian/hess_vec for reshape and fixes ACOPF example (finally!)…
Transurgeon Nov 1, 2025
5ffdb1d
Localization (#81)
dance858 Nov 9, 2025
0275c42
Moving bounds class to NLP solver (#82)
Transurgeon Nov 9, 2025
11202d8
NMF and circle packing (#83)
dance858 Nov 10, 2025
c28a106
trivial change
dance858 Nov 11, 2025
f2f4a13
Adds transpose implementation
PTNobel Nov 12, 2025
3eec0e6
Trying master sync (#85)
Transurgeon Nov 12, 2025
1622b3e
adds correct implementation for special index (#87)
Transurgeon Nov 17, 2025
a2b0401
improvements on the formulation to the car control example (#88)
Transurgeon Nov 18, 2025
eeb826f
Merge branch 'master' into master
Transurgeon Nov 19, 2025
b2906c2
move car control to examples (#92)
Transurgeon Nov 21, 2025
ca76581
New NLP solver interfaces for COPT and KNITRO (#89)
Transurgeon Nov 22, 2025
8daad3a
Examples (#93)
dance858 Nov 26, 2025
12b4f63
Adds Logistic function and fixes transpose (#96)
PTNobel Nov 26, 2025
79420f0
[WIP] bug fix in hess_vec of matmul (#98)
dance858 Nov 27, 2025
d7f1726
Cleanup log canon and adds geo_mean canon (#94)
Transurgeon Nov 27, 2025
21b107e
Fixes select_idx for duplicate indices (#97)
PTNobel Nov 27, 2025
3a76b1f
Best of (#100)
dance858 Nov 28, 2025
53a11ab
Knitro interface (#101)
Transurgeon Nov 28, 2025
ef286a3
sparse recovery (#102)
dance858 Nov 30, 2025
59fbe5b
Revise README for DNLP package introduction
dance858 Dec 1, 2025
293564d
readme
dance858 Dec 2, 2025
723acf2
readme
dance858 Dec 2, 2025
3ab8662
update readme with toy example
dance858 Dec 2, 2025
712504e
[Ready for review] Going through all atoms (#104)
dance858 Dec 2, 2025
3d04613
Merge branch 'cvxpy:master' into master
Transurgeon Dec 2, 2025
29a3bb4
[Ready for review] best-of-improvements and hyperbolic atoms (#106)
dance858 Dec 4, 2025
e335ef3
Adds sparsity for powerflow and fix hessian indexing bug (#107)
Transurgeon Dec 5, 2025
8a3cec8
sum-largest/smallest/huber (#108)
dance858 Dec 5, 2025
4134875
Update README.md
stephenpboyd Dec 7, 2025
23d8b88
trimmed logistic regression (#109)
dance858 Dec 8, 2025
ca224d8
adds knitro algorithms as string options (#110)
Transurgeon Dec 8, 2025
88044a9
canonicalization (#111)
dance858 Dec 10, 2025
46d7c05
fix duplicate index in hessian of indexing (#112)
Transurgeon Dec 10, 2025
d147964
[Ready for review] Initialization order (#114)
dance858 Dec 13, 2025
e6c70e3
adds chemistry example (#115)
Transurgeon Dec 14, 2025
b16dbba
Merge branch 'master' of https://github.com/cvxpy/cvxpy into cvxpy-ma…
Transurgeon Dec 16, 2025
4487894
Merge branch 'cvxpy-master'
Transurgeon Dec 16, 2025
a435357
try to fix missed stuff from master merge
Transurgeon Dec 16, 2025
271e6f8
delete sandbox (#117)
Transurgeon Dec 16, 2025
c47e326
Fix Ipopt link in README installation section
dance858 Dec 19, 2025
d7ffb86
Merge branch 'master' of https://github.com/cvxpy/cvxpy
Transurgeon Dec 24, 2025
496bbf3
remove examples for dnlp (#123)
Transurgeon Dec 26, 2025
eb728ff
Uno interface (#119)
Transurgeon Jan 5, 2026
b16501b
Adds prod and hstack/vstack and fixes an issue with the newest versio…
PTNobel Jan 7, 2026
5382605
merge from master
Transurgeon Jan 7, 2026
449b7c1
Fix NaN validation to reject NaN for Parameters while allowing for Va…
Transurgeon Jan 8, 2026
07bd272
Adds COPT solver interface (original PR in #126) (#130)
Transurgeon Jan 10, 2026
6af3241
Implement diag_vec Jacobian for NLP solving (#133)
Transurgeon Jan 19, 2026
f71d351
Merge PR #135: Sync from CVXPY upstream master
Transurgeon Jan 28, 2026
3462e72
change nlp_solver Oracles class to use C diffengine (and adds setup f…
Transurgeon Jan 31, 2026
d33140b
Add diff_engine_core release workflow and documentation (#139)
Transurgeon Feb 1, 2026
150f104
Merge upstream CVXPY master with bounds propagation feature
Transurgeon Feb 1, 2026
441c21a
Remove Python _jacobian and _hess_vec oracle methods (#141)
Transurgeon Feb 1, 2026
7919d4d
Update diff_engine_core to v0.1.1 (#142)
Transurgeon Feb 3, 2026
4641971
Extract diff engine bindings into standalone SparseDiffPy package (#148)
Transurgeon Feb 12, 2026
da4ca72
Merge remote-tracking branch 'upstream/master'
Transurgeon Feb 12, 2026
25d65da
[WIP] Left matmul refactor (#149)
dance858 Feb 13, 2026
0c4f10e
Merge upstream cvxpy/cvxpy master (includes Parameter attribute handl…
Transurgeon Feb 17, 2026
a4d0f00
Merge branch 'cvxpy:master' into master
Transurgeon Feb 19, 2026
de847aa
Rename ESR/HSR to linearizable_convex/linearizable_concave (#152)
Transurgeon Feb 19, 2026
6ea1333
Propagate initial values to reduced variables for diag attribute (#154)
Transurgeon Feb 20, 2026
ae83e18
Make is_linearizable_convex/is_linearizable_concave abstract on Expre…
Transurgeon Feb 20, 2026
4ef4cd1
Add differentiation engine section to README
Transurgeon Feb 21, 2026
8b37442
Move DerivativeChecker from nlp_solver.py to test helper module (#157)
Transurgeon Feb 24, 2026
5f0d38a
remove redundant nonsmooth methods, add types and docs (#158)
Transurgeon Feb 24, 2026
ae6b87f
Extract NLP solving logic from problem.py into nlp_solving_chain.py (…
Transurgeon Feb 25, 2026
0a44098
add init files so tests work
dance858 Feb 25, 2026
9138657
[Ready for review] Integrating the native COO support in SparseDiff (…
dance858 Feb 26, 2026
16c1fb0
Remove conda from CI, use uv + system IPOPT (#162)
Transurgeon Feb 26, 2026
b75b7cb
Merge upstream/master: sync with cvxpy master
Transurgeon Feb 27, 2026
44c9f62
Add Uno solver (unopy) to NLP solver CI workflow
Transurgeon Mar 2, 2026
8d0a903
Use UNO_IPM preset for geo_mean tests (SQP hits iteration limit)
Transurgeon Mar 2, 2026
1de74d7
Add explicit unopy import check to surface macOS wheel failure
Transurgeon Mar 2, 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: 4 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ jobs:

steps:
- uses: actions/checkout@v5
with:
submodules: recursive
- name: Set Additional Envs
run: |
echo "PYTHON_SUBVERSION=$(echo $PYTHON_VERSION | cut -c 3-)" >> $GITHUB_ENV
Expand Down Expand Up @@ -114,6 +116,8 @@ jobs:

steps:
- uses: actions/checkout@v5
with:
submodules: recursive
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test_backends.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ jobs:
with:
python-version: "3.12"
- uses: actions/checkout@v5
with:
submodules: recursive
- name: Install cvxpy dependencies
run: |
pip install -e .
Expand Down
43 changes: 43 additions & 0 deletions .github/workflows/test_nlp_solvers.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: test_nlp_solvers

on:
pull_request:
push:
branches:
- master
tags:
- '*'
jobs:
run_nlp_tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v5
with:
submodules: recursive
- uses: astral-sh/setup-uv@v7
with:
python-version: "3.12"
enable-cache: true
- name: Install IPOPT (Ubuntu)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y coinor-libipopt-dev liblapack-dev libblas-dev
- name: Install IPOPT (macOS)
if: runner.os == 'macOS'
run: brew install ipopt
- name: Install dependencies
run: |
uv venv
uv pip install -e ".[testing]"
uv pip install cyipopt
- name: Install Uno solver
run: uv pip install unopy
- name: Verify Uno import
run: uv run python -c "import unopy; print('unopy imported successfully')"
- name: Print installed solvers
run: uv run python -c "import cvxpy; print(cvxpy.installed_solvers())"
- name: Run nlp tests
run: uv run pytest -s -v cvxpy/tests/nlp_tests/
Loading
Loading