Skip to main content

Gaining-sharing knowledge algorithm GSK continuous optimization framework

Project description

This an implementation of Gaining-sharing knowledge algorithm (GSK) in python. GSK is a nature inspired algorithm for solving real parameter optimization problems. GSK has two main stages the junior and senior phases each has a different mutation, the dimensions (or parameters) are changed by the mutations of both the junior and senior phases. at the same time. GSK is a reliable and stable optimization algorithm. The repository also includes a visualization module for visualizing GSK runs. The code have been tested on CEC 2017 benchmark functions. The module provide a testbed optimization framework that is easy to use with GSK.

Examples

To run GSK on CEC 2017 or CEC 2020 benchmark functions use run.py example NOTE: the compiled binaries of functions only work in Linux environment

$ python run.py

❤️  How to use GSK as a solver

An objective function of 10 dimensions with -100, 100 as lower and upper bounds Just define your objective_function to have x (numpy array of shape (pop size, dim)) and func_args any function arguments required.

def ackley(x,func_args=[20,0.2,2*pi]):
    #The objective function should take x
    x = np.asarray_chkfinite(x)  # ValueError if any NaN or Inf
    a= func_args[0]
    b= func_args[1]
    c=func_args[2]

    n = len(x[0])
    s1 = sum( x**2 ,axis=1)
    s2 = sum( cos( c * x ),axis=1)
    return -a*exp( -b*sqrt( s1 / n )) - exp( s2 / n ) + a + exp(1)
from GSKpy.BasicGSK import BasicGSK
solver = BasicGSK(objective_function,10,100,[-100]*10,[-100]*10,max_nfes=100000)
g, best , best_fit, errors = solver.run()

you can also use the get_statstics functions and Viz (visualization class) after the run

from GSKpy.viz import Viz
vis = Viz(ackley,-100,100,dim,func_args=[20,0.2,2*pi])
best_hist,fitness_vals, best, middle, worst,junior_dim = solver.getstatistics()

best_hist = np.array(best_hist)
best_hist = np.vstack((best_hist))
best_hist = best_hist.reshape((best_hist.shape[0],dim))
vis.set(dim,best_hist,fitness_vals,best,middle,worst)
vis.build_plot()

There is also an example on using GSK for linear regression using scikit-learn

📫  We would love to hear from you

If you have any comments or questions just email h.nomer@nu.edu.eg We intend to realse a pip package soon with more examples. More work is done to GSK as a solver for different optimization problems.

✅  Requirements

**python 2.7 or higher **matplotlib (for visualization) **CSVDataFrame (or any other package for saving results) **numpy

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

GSKpy-1.3.6.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

GSKpy-1.3.6-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file GSKpy-1.3.6.tar.gz.

File metadata

  • Download URL: GSKpy-1.3.6.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/3.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for GSKpy-1.3.6.tar.gz
Algorithm Hash digest
SHA256 d024f2282c81316d754c496668485b791b9f89ba04f56e0f2cecd7c693b88f2c
MD5 21c27d101b25be580f9c38a05ecf8eab
BLAKE2b-256 69062b961a7e108436acac14cd8dd013a2faf9ee7d11d40509dee7c0ef2e573a

See more details on using hashes here.

File details

Details for the file GSKpy-1.3.6-py3-none-any.whl.

File metadata

  • Download URL: GSKpy-1.3.6-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/3.10.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8

File hashes

Hashes for GSKpy-1.3.6-py3-none-any.whl
Algorithm Hash digest
SHA256 c456fc6e16fbff7fc2705c5ee8746f3f6495c449da98139004efb1590c175d5f
MD5 9070a28a46a34e0475413eb558ce047d
BLAKE2b-256 96d94e4a6d484d1d26f6d582ec04587897875fbd79a7c315d8de5b7ccafb0280

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page