Metadata-Version: 2.1
Name: byron
Version: 0.1.dev3
Summary: Multi-purpose extensible self-adaptive optimizer and fuzzer
Home-page: https://squillero.github.io/byron/
License: Apache-2.0
Keywords: Aritificial Intelligence,Evolutionary Computation,Approximate Optimization,Fuzzer
Author: Giovanni Squillero
Author-email: giovanni.squillero@polito.it
Requires-Python: >=3.11,<3.13
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries
Requires-Dist: arcade[plot] (>=2.6.17,<3.0.0)
Requires-Dist: joblib[run] (>=1.3.2,<2.0.0)
Requires-Dist: matplotlib[plot] (>=3.7.2,<4.0.0)
Requires-Dist: networkx (>=3.1,<4.0)
Requires-Dist: numpy (>=1.25.0,<2.0.0)
Requires-Dist: psutil[info] (>=5.9.5,<6.0.0)
Requires-Dist: scipy (>=1.11.1,<2.0.0)
Requires-Dist: tqdm (>=4.65.0,<5.0.0)
Project-URL: Repository, https://github.com/squillero/byron
Description-Content-Type: text/markdown

Byron is an [evolutionary tool](https://en.wikipedia.org/wiki/Evolutionary_algorithm): given a problem, it first creates a set of random solutions, then iteratively refines and enhances them using the result of their evaluations together with structural information. 

Byron is able to tackle problem those solutions are simple fixed-length bit strings, as well as to optimize realistic assembly programs including loops, interrupts and recursive sub routines. It can be exploited as a coverage-driven [fuzzer](https://en.wikipedia.org/wiki/Fuzzing) and as a general-purpose [optimizer](https://en.wikipedia.org/wiki/Engineering_optimization), or as a framework for prototyping and testing new ideas.

Candidate solutions can seamlessly be evaluated in parallel using external scripts, for instance calling proprietary tools. 


### Installation

##### ⚠️ Byron is currently in [pre-alpha](https://en.wikipedia.org/wiki/Software_release_life_cycle#Pre-alpha) and under active development

```
pip install --upgrade byron
```

Few optional dependencies can enhance byron, but are not strictly required:

```
pip install --upgrade matplotlib
pip install --upgrade joblib
pip install --upgrade psutil
```

### Contacts

* [Alberto Tonda](https://github.com/albertotonda/) [<alberto.tonda@inra.fr>](mailto:alberto.tonda@inra.fr)
* [Giovanni Squillero](https://github.com/squillero) [<giovanni.squillero@polito.it>](giovanni.squillero@polito.it)

### License

**Copyright © 2023 [Giovanni Squillero](https://github.com/squillero) and [Alberto Tonda](https://github.com/albertotonda/)**  
byron is [free and open-source software](https://en.wikipedia.org/wiki/Free_and_open-source_software), and it is distributed under the permissive [Apache License 2.0](https://opensource.org/license/apache-2-0/).

