Skip to main content

Qualitative and quantitative optimization in answer set programming

Project description

# asprin
> A general framework for qualitative and quantitative optimization in answer set programming.

## Description
`asprin` is a general framework for optimization in ASP that allows:
* computing optimal stable models of logic programs with preferences, and
* defining new preference types in a very easy way.
Some preference types (`subset`, `pareto`...) are already defined in `asprin`'s library,
but many more can be defined simply writing a logic program.

For a formal description of `asprin`, please read our [paper](http://www.cs.uni-potsdam.de/wv/pdfformat/brderosc15a.pdf) ([bibtex](http://www.cs.uni-potsdam.de/wv/bibtex/brderosc15a.bib)).

The User Guide of `asprin` appears in Section 10.2 of the Potassco User Guide, available [here](https://sourceforge.net/projects/potassco/files/guide/).

## Usage
```bash
$ asprin [number_of_models] [options] [files]
```
By default, asprin loads its library `asprin_lib.lp`. This may be disabled with option `--no-asprin-lib`.

Option `--help` prints help.

## Building
`asprin` requires Python (version 2.7 is tested), and
the python module of [clingo](https://github.com/potassco/clingo) (version 5.2.0 is tested),
whose directory should be in the environment variable `PYTHONPATH`:

* On Windows,
you can download the corresponding [clingo release](https://github.com/potassco/clingo/releases/download/v5.2.0/clingo-5.2.0-macos-10.9.tar.gz),
uncompress it in some directory `dir`,
and set `PYTHONPATH` to `dir\clingo-5.2.0-win64\python-api` (with `set PYTHONPATH=dir\clingo-5.2.0-win64\python-api`).

* On Mac,
you can download the corresponding [clingo release](https://github.com/potassco/clingo/releases/download/v5.2.0/clingo-5.2.0-macos-10.9.tar.gz),
uncompress it in some directory `dir`,
and set `PYTHONPATH` to `dir\clingo-5.2.0-macos-10.9\python-api` (with `export PYTHONPATH=dir\clingo-5.2.0-macos-10.9\python-api`).

* On Unix, you can download the [source code](https://github.com/potassco/clingo/archive/v5.2.0.tar.gz),
build it following the instructions in `INSTALL.md`, and set `PYTHONPATH` accordingly.

`asprin` can be installed with [pip](https://pip.pypa.io) via
```pip install asprin```.

For a local installation, add option ```--user```.
In this case, setting environment variable `PYTHONUSERBASE` to `dir` before running `pip`,
`asprin` will be installed in `dir/bin/asprin`.

If that does not work,
you can always download the sources from [here](https://pypi.org/project/asprin/#files) in some directory `dir`,
and run `asprin` with `python dir/asprin/asprin/asprin.py`.

System tests may be run with ```asprin --test```.

For older releases, please click [here](https://pypi.org/project/asprin/#history).

## Examples
```
$ cat examples/example1.lp
dom(1..3).
1 { a(X) : dom(X) }.
#show a/1.

#preference(p,subset) {
a(X)
}.
#optimize(p).


$ asprin examples/example1.lp 0
asprin version 3.0.0
Reading from examples/example1.lp
Solving...
Answer: 1
a(3)
OPTIMUM FOUND
Answer: 2
a(2)
OPTIMUM FOUND
Answer: 3
a(1)
OPTIMUM FOUND

Models : 3
Optimum : yes
Optimal : 3

$ cat examples/example2.lp
%
% base program
%

dom(1..3).
1 { a(X) : dom(X) } 2.
1 { b(X) : dom(X) } 2.
#show a/1.
#show b/1.

%
% basic preference statements
%

#preference(p(1),subset){
a(X)
}.

#preference(p(2),less(weight)){
X :: b(X)
}.

#preference(p(3),aso){
a(X) >> not a(X) || b(X)
}.

#preference(p(4),poset){
a(X);
b(X);
a(X) >> b(X)
}.

%
% composite preference statements
%

#preference(q,pareto){
**p(X)
}.

#preference(r,neg){
**q
}.

%
% optimize statement
%

#optimize(r).

$ asprin examples/example2.lp
asprin version 3.0.0
Reading from examples/example2.lp
Solving...
Answer: 1
a(3) b(1)
OPTIMUM FOUND

Models : 1+
Optimum : yes
```

## Contributors

* Javier Romero


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asprin-3.0.0.5.tar.gz (92.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

asprin-3.0.0.5-py2-none-any.whl (145.7 kB view details)

Uploaded Python 2

File details

Details for the file asprin-3.0.0.5.tar.gz.

File metadata

  • Download URL: asprin-3.0.0.5.tar.gz
  • Upload date:
  • Size: 92.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for asprin-3.0.0.5.tar.gz
Algorithm Hash digest
SHA256 7cbeebf10a42337bee7f350274c105a68546b1f9a08de0d593bf3a2d56cb6d93
MD5 9f3a295df98ad97c488037a8165c1761
BLAKE2b-256 94abf098df2191f835520993b92e966a529d2b1fc30b4a5c8ede3f89cb0b5b17

See more details on using hashes here.

File details

Details for the file asprin-3.0.0.5-py2-none-any.whl.

File metadata

File hashes

Hashes for asprin-3.0.0.5-py2-none-any.whl
Algorithm Hash digest
SHA256 57de905a3de87be02092bacf428e670253660b969116309be5b7725a4650c6f6
MD5 8d0af48b25827b8d6f59eb2722fee7f1
BLAKE2b-256 1ef5290403975106f0e2279a86deeeb4df14d147911afb3ae02c4e50949045be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page