GrafoRVFL (GRAdient Free Optimized Random Vector Functional Link)
📑 Overview
GrafoRVFL is an open-source Python library designed to optimize Random Vector Functional Link (RVFL) networks using various gradient-free metaheuristic algorithms such as GA, PSO, WOA, TLO, DE, etc. It is fully implemented in NumPy and seamlessly integrates with the Scikit-Learn interface, making it easy to plug into standard ML workflows. GrafoRVFL enables hyperparameter tuning for RVFL networks without relying on gradient-based methods.
✨ Features
- ✅ Free software under GNU GPL v3
- 📘 Full documentation: https://graforvfl.readthedocs.io
- 🧠 Estimators:
RvflRegressorRvflClassifierGfoRvflCVGfoRvflTunerGfoRvflComparator
- 🐍 Python compatibility:
>= 3.8 - 🧩 Dependencies:
numpy,scipy,scikit-learn,pandas,mealpy,permetrics,matplotlib
📖 Citation Request
Please include these citations if you plan to use this library:
@software{nguyen_van_thieu_2023_10258280,
author = {Nguyen Van Thieu},
title = {GrafoRVFL: A Gradient-Free Optimization Framework for Boosting Random Vector Functional Link Network},
month = June,
year = 2025,
publisher = {Zenodo},
doi = {10.5281/zenodo.10258280},
url = {https://github.com/thieu1995/GrafoRVFL}
}
@article{van2023mealpy,
title={MEALPY: An open-source library for latest meta-heuristic algorithms in Python},
author={Van Thieu, Nguyen and Mirjalili, Seyedali},
journal={Journal of Systems Architecture},
year={2023},
publisher={Elsevier},
doi={10.1016/j.sysarc.2023.102871}
}
@inproceedings{nguyen2019building,
title={Building resource auto-scaler with functional-link neural network and adaptive bacterial foraging optimization},
author={Nguyen, Thieu and Nguyen, Binh Minh and Nguyen, Giang},
booktitle={International Conference on Theory and Applications of Models of Computation},
pages={501--517},
year={2019},
organization={Springer}
}
@inproceedings{nguyen2018resource,
title={A resource usage prediction system using functional-link and genetic algorithm neural network for multivariate cloud metrics},
author={Nguyen, Thieu and Tran, Nhuan and Nguyen, Binh Minh and Nguyen, Giang},
booktitle={2018 IEEE 11th conference on service-oriented computing and applications (SOCA)},
pages={49--56},
year={2018},
organization={IEEE},
doi={10.1109/SOCA.2018.00014}
}
-
Learn more about Random Vector Functional Link from this paper
-
Learn more about on how to use Gradient Free Optimization to fine-tune the hyper-parameter of RVFL networks from this paper
🔧 Installation
Install the latest version from PyPI:
$ pip install graforvfl
Verify installation:
$ python
>>> import graforvfl
>>> graforvfl.__version__
🧪 Example Usage
Below is a simple example code of how to use Gradient Free Optimization to tune hyper-parameter of RVFL network.
from sklearn.datasets import load_breast_cancer
from graforvfl import Data, GfoRvflCV, StringVar, IntegerVar, FloatVar
## Load data object
X, y = load_breast_cancer(return_X_y=True)
data = Data(X, y)
## Split train and test
data.split_train_test(test_size=0.2, random_state=2, inplace=True)
print(data.X_train.shape, data.X_test.shape)
## Scaling dataset
data.X_train, scaler_X = data.scale(data.X_train, scaling_methods=("standard", "minmax"))
data.X_test = scaler_X.transform(data.X_test)
data.y_train, scaler_y = data.encode_label(data.y_train)
data.y_test = scaler_y.transform(data.y_test)
# Design the boundary (parameters)
my_bounds = [
IntegerVar(lb=3, ub=50, name="size_hidden"),
StringVar(valid_sets=("none", "relu", "leaky_relu", "celu", "prelu", "gelu", "elu",
"selu", "rrelu", "tanh", "hard_tanh", "sigmoid", "hard_sigmoid",
"log_sigmoid", "silu", "swish", "hard_swish", "soft_plus", "mish",
"soft_sign", "tanh_shrink", "soft_shrink", "hard_shrink",
"softmin", "softmax", "log_softmax"), name="act_name"),
StringVar(valid_sets=("orthogonal", "he_uniform", "he_normal", "glorot_uniform",
"glorot_normal", "lecun_uniform", "lecun_normal", "random_uniform",
"random_normal"), name="weight_initializer"),
FloatVar(lb=0, ub=10., name="reg_alpha"),
]
model = GfoRvflCV(problem_type="classification", bounds=my_bounds,
optim="OriginalWOA", optim_params={"name": "WOA", "epoch": 10, "pop_size": 20},
scoring="AS", cv=3, seed=42, verbose=True)
model.fit(data.X_train, data.y_train)
print(model.best_params)
print(model.best_estimator)
print(model.best_estimator.scores(data.X_test, data.y_test, list_metrics=("PS", "RS", "NPV", "F1S", "F2S")))
👉 The more complicated cases in the folder: examples. You can also read the documentation for more detailed installation instructions, explanations, and examples.
📎 Official channels
- 🔗 Official source code repository
- 📘 Official document
- 📦 Download releases
- 🐞 Issue tracker
- 📝 Notable changes log
- 💬 Official discussion group
Developed by: Thieu @ 2025
Metadata
Release files for graforvfl 2.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| graforvfl-2.2.0.tar.gz | 51.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| graforvfl-2.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 100.6 kB
Release files / graforvfl-2.2.0.tar.gz
| Download URL | graforvfl-2.2.0.tar.gz |
|---|---|
| Size | 51.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f001c3035f9c7993642f9ca2a323232d55844df1b530b2da4ec36af16ea41753
|
|
BLAKE2b-256 checksum How to use checksums |
14a0c9d33d88236a9ca9326727fc79b974006aeb82091a1276a7f206adb02724
|
| 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 Jun 16, 2025.
Transparency logRelease files / graforvfl-2.2.0-py3-none-any.whl
| Download URL | graforvfl-2.2.0-py3-none-any.whl |
|---|---|
| Size | 49.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2d0904dd1b2fbd27ee8f4b1e3410265050dbfe713a3e42590de16e1eb8066a97
|
|
BLAKE2b-256 checksum How to use checksums |
0a90439b73cf3ddb97b65c27223f3b24acbd3b4bdc09e059e32d76e0cd99e4c3
|
| 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 Jun 16, 2025.
Transparency log