Metadata-Version: 2.4
Name: information-gain-aml
Version: 0.1.1
Summary: CNF/SAT-based information-theoretic online action model learning
License-Expression: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: python-sat>=1.8.dev22
Requires-Dist: unified-planning>=1.2.0
Requires-Dist: typing-extensions>=4.0.0
Provides-Extra: experiments
Requires-Dist: unified-planning[fast-downward]>=1.2.0; extra == "experiments"
Requires-Dist: numpy<3.0.0,>=1.21.0; extra == "experiments"
Requires-Dist: pandas>=1.3.0; extra == "experiments"
Requires-Dist: matplotlib>=3.5.0; extra == "experiments"
Requires-Dist: pyyaml>=6.0; extra == "experiments"
Provides-Extra: minimization
Requires-Dist: pyeda>=0.28.0; extra == "minimization"
Dynamic: license-file

# Online Action Model Learning Experiment Framework

## Overview
A framework for online action model learning in PDDL domains, using a CNF/SAT solver-based information-theoretic approach for uncertainty representation.

## Algorithm
**Information-Theoretic Selection** - CNF-based approach using expected information gain with SAT solver integration

## Getting Started

For detailed architecture and design principles, see [DEVELOPMENT_RULES.md](docs/DEVELOPMENT_RULES.md)

## Installation

```bash
# Install core dependencies
pip install unified-planning pysat numpy pandas matplotlib

# Install additional UP integrations (optional)
pip install unified-planning[pyperplan,tamer]

# Install requirements
pip install -r requirements.txt
```

## Usage

```python
from src.experiments.runner import ExperimentRunner
from src.algorithms.information_gain import InformationGainLearner

# Configure experiment
config = {
    'domain': 'blocksworld',
    'problems': ['p01', 'p02', 'p03'],
    'algorithms': ['information_gain'],
    'metrics': ['sample_complexity', 'time_to_goal', 'model_accuracy', 'cnf_formula_size'],
    'seed': 42,
    'cnf_settings': {
        'solver': 'minisat',
        'minimize_formulas': True,
        'max_clauses': 1000
    }
}

# Run experiments
runner = ExperimentRunner(config)
results = runner.run()
runner.visualize_results(results)
```

## Code Examples

For detailed examples and code patterns, see [QUICK_REFERENCE.md](docs/QUICK_REFERENCE.md)

## Project Status

For current implementation status and roadmap, see [IMPLEMENTATION_TASKS.md](docs/IMPLEMENTATION_TASKS.md)

## Testing

```bash
# Run curated test suite (51 tests, 100% pass rate)
make test

# Run with Docker for consistent environment
make docker-test
```

For complete testing options and Docker usage, see [QUICK_REFERENCE.md](docs/QUICK_REFERENCE.md#commands)
