google / google/jaxopt

Constrained optimization using `projection_polyhedron` claims the polyhedron is empty when it is not.

Open
#469 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Python
Stars
1.1k
Forks
76
Avg merge
2d 21h
Merged PRs (30d)
1

Description

A minimal example:

```.py
import jaxopt
import jax.numpy as jnp

def objective(x):
return -jnp.sum(jnp.dot(jnp.array([2, 1], jnp.float32), x))

def main():
a = jnp.array([[0, 0]], jnp.float32)
b = jnp.array([0], jnp.float32)
g = jnp.array([[0, 0], [0, 0]], jnp.float32)
h = jnp.array([0, 0], jnp.float32)

pg = jaxopt.ProjectedGradient(dummy, jaxopt.projection.projection_polyhedron, jit=False)
result = pg.run(jnp.array([0, 0], jnp.float32), hyperparams_proj=(a, b, g, h))
return result
```

The equality and inequality conditions are tautological, but running `main` still results in a raised error:

```py
ValueError: The polyhedron is empty.
```

Other variations of equality and inequality constraints that clearly correspond to non-empty polyhedrons likewise raise the same error. Any guidance or advice would be appreciated. Thank you.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.