Skip to main content

Pijavski

This is an example of how to use CFFI to call a Pijavski function written in C++ that optimises a test function and returns the minimum.

Installation

To install simply type:

$ pip install pijavski

Usage

To test, open a python console and import the package. The function pijavski.get_minimum, with arguments lip, xl, xu, precision and maxiter, prints res, x0, f, prec, maxit as result.

>>> import pijavski
>>> pijavski.get_minimum()
0 -5323.428786928975 1.2546522006214123e-09 3.5218863499790176 65533

Defining custom functions to optimise

The function to optimise needs to be declared as a callback function for CFFI so that the Pijavski program can process it. The user can implement up to 20 functions following the conditions below:

  • The function definition needs to be preceeded by @ffi.def_extern().

  • The function name must be fun[1-20] (suffix between 1 and 20) as this is how the callback function is defined in the CFFI builder.

  • When writing the function, arguments f and x need to be declared as if they were pointers using the bracket notation f[] and x[].

  • Use numpy math functions.

Example:

>>> import numpy as np
>>> from pijavski import get_minimum, ffi, lib
>>> # Simple declaration of f = -cos^2(x) as callback function.
>>> @ffi.def_extern()
... def fun1(f, x):
...     f[0] = (-1)*np.cos(x[0])**2
>>> # Simple declaration of f = sin^2(x) as callback function.
>>> @ffi.def_extern()
... def fun2(f, x):
...     f[0] = np.sin(x[0])**2
>>> # Call get_minimum for fun1
>>> get_minimum(func=lib.fun1, xl=-100, xu=100)
0 -1.0 4.6838846e-317 4.6838846e-317 1 
>>> # Call get_minimum for fun2
>>> get_minimum(func=lib.fun2, xl=-100, xu=100)
0 -1.0 4.6838846e-317 4.6838846e-317 1 

Metadata

Release files for pijavski 0.0.6

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

Source distribution (sdist)

Source distribution for pijavski 0.0.6
File Size Uploaded Provenance
pijavski-0.0.6.tar.gz 267.1 kB Without provenance Details

Release files / pijavski-0.0.6.tar.gz

Download URL pijavski-0.0.6.tar.gz
Size 267.1 kB
Tags Source
SHA-256 checksum
How to use checksums
cc8f6f053d5ff40bb2221d98c4cc6a7fd8f0baa49d6232914c5a7ca2a90a94f0
BLAKE2b-256 checksum
How to use checksums
88488db79c67ae8ec82218673fed7aaf14ce97540e2de88c56d7b79771870983
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.8.5

Security for pijavski 0.0.6

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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