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 

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
pijavski-0.0.6.tar.gz 267.1 kB 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

Release history Release notifications | RSS feed

This release

0.0.6 This release

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

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