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.4.0.tar.gz (12.5 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.4.0-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: GSKpy-1.4.0.tar.gz
  • Upload date:
  • Size: 12.5 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.4.0.tar.gz
Algorithm Hash digest
SHA256 d435ef206425af68aa2f4194f324411a9e4be35c1a88c35702e880a802ac643d
MD5 126e42085515f80e62aa8983aec4377d
BLAKE2b-256 d1043c5b8f15b723b47d1be8f35da875465ddd6aae1028e9f59d8b27c01ff423

See more details on using hashes here.

File details

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

File metadata

  • Download URL: GSKpy-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 14.3 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3be479e9ad74b9a2b728b3c8e29ab32286795fe6d81cc0e167bfefc56f00cd62
MD5 c0ae7608d431373ce1c8af4f86f7a708
BLAKE2b-256 7a577d3ca66fb4bb1f09960cbf785e26d0e5ceb9e7b697dd09bf4e3a18b01421

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