Metadata-Version: 2.4
Name: pycsp3-solvers-extra
Version: 0.1.2
Summary: Extra solver backends for pycsp3 (OR-Tools, IBM CPO)
Author: Sohaib AFIFI
License: MIT
Project-URL: Homepage, https://github.com/sohaibafifi/pycsp3-solvers-extra
Project-URL: Documentation, https://github.com/sohaibafifi/pycsp3-solvers-extra
Project-URL: Repository, https://github.com/sohaibafifi/pycsp3-solvers-extra
Keywords: constraint-programming,csp,xcsp3,pycsp3,or-tools,cplex,optimization
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Scientific/Engineering :: Mathematics
Requires-Python: <=3.12,>=3.10
Description-Content-Type: text/markdown
Requires-Dist: pycsp3>=2.2
Provides-Extra: ortools
Requires-Dist: ortools>=9.0; extra == "ortools"
Provides-Extra: cpo
Requires-Dist: docplex>=2.25; extra == "cpo"
Provides-Extra: all
Requires-Dist: ortools>=9.0; extra == "all"
Requires-Dist: docplex>=2.25; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"

# pycsp3-solvers-extra

Extension library that adds some extra solver backends to [pycsp3](https://github.com/xcsp3team/pycsp3).

## Supported Solvers

- **OR-Tools CP-SAT** - Google's constraint programming solver
- **IBM DOcplex CP Optimizer** - IBM's CP solver (requires CPLEX Studio)

## Installation

```bash
pip install pycsp3-solvers-extra
```

### Dependencies

- `pycsp3` - base constraint modeling library
- `ortools` - for OR-Tools backend
- `docplex` - for CPO backend (requires IBM CPLEX Studio installed separately)

## Usage

```python
from pycsp3 import *
from pycsp3_solvers_extra import solve

# Define your model
x = VarArray(size=3, dom=range(1, 10))
satisfy(AllDifferent(x))
minimize(Sum(x))

# Solve with OR-Tools
status = solve(solver="ortools")

# Or solve with CPO
status = solve(solver="cpo")

# Of course, you still can use the native supported pycsp3 solvers as well ('ace', 'choco')
status = solve(solver="ace")

# Access solution values
print([v.value for v in x])
```

## API

```python
solve(
    solver="ortools",  # "ortools" or "cpo"
    time_limit=None,   # seconds
    sols=None,         # number of solutions to find
    verbose=0,         # verbosity level (0-2)
    options=""         # solver-specific options
)
```

Returns `TypeStatus.SAT`, `TypeStatus.OPTIMUM`, `TypeStatus.UNSAT`, or `TypeStatus.UNKNOWN`.

## Examples

See the `examples/` directory:

```bash
python examples/send_more_money.py --solvers ortools cpo
```

## Running Tests

```bash
pytest tests/ -v
```

## License
This project is licensed under the MIT License.
