Skip to main content

PyPI - Version Python versions License Python application DOI

Algorithm Selection Framework (ASF)

ASF is a lightweight yet powerful Python library for algorithm selection and empirical performance prediction. It implements various algorithm selection methods, along with algorithm pre-selection, pre-solving schedules and more features to easily create algorithm selection pipeline. ASF is a modular framework that allows easy extensions to tailor made an algorithm selector for every use-case. While ASF includes several built-in machine learning models through scikit-learn and XGBoost, it supports every model that complies with the scikit-learn API. ASF also implements empirical performance prediction, allowing to use different performance scalings.

ASF is written in Python 3 and is intended to use with Python 3.10+. It requires only scikit-learn, NumPy as Pandas as basic requirements. More advanced features (such as hyperparameter optimisation) requires additional dependencies.

You can find full documentation in: https://hadarshavit.github.io/asf/

Installation

ASF is written in Python3 and requires Python version 3.10+. The basic installation is lightweight and requires only NumPy, Pandas and scikit-learn.

ASF is currently tested on Linux machines. Mac and Windows (official) support will be released in the near future.

To install the base version run

pip install asf-lib

Additional options

Additional options include:

  • XGBoost model suppot pip install asf-lib[xgb]
  • PyTorch-based models pip install asf-lib[nn]
  • ASlib scenarios reading pip install asf-lib[aslib]

Quick start

The first step is to define a the data. It can be either NumPy array or Pandas DataFrame. The data contains of (at least) two matrices. The first defines the instance features with a row for every instance and each column defines one feature. The second is the performance data, which for which every row describes an instance and each column the performance of a single algorithm.

Here, we define some toy data on three instances, three features and three algorithms.

data = np.array(
    [
        [10, 5, 1],
        [20, 10, 2],
        [15, 8, 1.5],
    ]
)
features = pd.DataFrame(data, columns=["feature1", "feature2", "feature3"])
performance = np.array(
    [
        [120, 100, 110],
        [140, 150, 130],
        [180, 170, 190],
    ]
)
performance = pd.DataFrame(data, columns=["algo1", "algo2", "algo3"])

We can then define a selector:

from asf.selectors import PairwiseClassifier
from sklearn.ensemble import RandomForestClassifier

selector = PairwiseClassifier(model_class=RandomForestClassifier)

selector.fit(features, performance)

Next, we can use the selector to predict on unseen dta:

selector.predict(features)

Currently, ASF always returns the prediction in the ASlib format: a dictionary which has the instance id (row index, in case of a numpy array or the index of the row for a pandas dataframe) as keys and an array of tuples (predicted algorithm, budget). The selectors has only one tuple in the array, which is the selected algorithm. An example output is:

{
    0: [('algo2', None)], 
    1: [('algo3', None)], 
    2: [('algo2', None)]
}

The budget is set by default to None. To change the budget, you can pass it as an argument for the selector initialisation. Similarly, ASF minimises the performance by default. To change it, pass maxmimize=True to the selector.

Cite Us

If you use ASF, please cite the Zenodo DOI. We are currently working on publishing a paper on ASF, but by then a Zenodo citation will do it.

@software{ASF,
	author = {Hadar Shavit and Holger Hoos},
	doi = {10.5281/zenodo.15288151},
	title = {ASF: Algorithm Selection Framework},
	url = {https://doi.org/10.5281/zenodo.15288151},
	year = {in progress},
}

Metadata

Release files for asf-lib 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for asf-lib 0.1.1
File Size Uploaded
asf_lib-0.1.1.tar.gz 49.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for asf-lib 0.1.1
File Interpreter ABI Platform
asf_lib-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 124.7 kB

Release files / asf_lib-0.1.1.tar.gz

Download URL asf_lib-0.1.1.tar.gz
Size 49.9 kB
Tags Source
SHA-256 checksum
How to use checksums
80da6712d7b48624ff36bba8678125b012277dc336d4ad0c1c4c522bb4cce617
BLAKE2b-256 checksum
How to use checksums
98e77e66db7d82f8d56a2320f3f111060b1b4f2d7e01152c627390c33348a878
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2025.

Transparency log

Release files / asf_lib-0.1.1-py3-none-any.whl

Download URL asf_lib-0.1.1-py3-none-any.whl
Size 74.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f4420415337af45a9c960d3342172cab18d3ad4b7c85df077b9ceebfd48b340c
BLAKE2b-256 checksum
How to use checksums
394029c0b7973cc7c4e8169d5788f93f8e7e09ef32f74b2960e9ff422d1fb918
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2025.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page