Simmulated Annealing
Project description
Simmulated Annealing package for Python
Installation
pip install frigidum
Example Usage
import frigidum
import random
def random_start():
return 50 + random.random()
def random_small_step(x):
return x + 0.1 * (random.random() - .5)
def random_big_step(x):
return x + 10 * (random.random() - .5)
def obj(x):
return x**2
local_opt = frigidum.sa(random_start=random_start, random_neighbours=[random_small_step, random_big_step], cost_function=obj, T_start=100, T_stop = 0.001, repeats=10**4, copy_state=frigidum.annealing.naked)
Movements
A movement is a when a proposed state is accepted, and the objective function has changed. For each batch of repeats, the proportion of movements are displayed.
In the early phase of annealing, movements should happen >90%.
In the last phase of annealing, movements should happen <5%.
Copy'ing of States
3 most important copy methods are included in the annealing
module,
def copy(state):
return state.copy()
def deepcopy(state):
return state.deepcopy()
def naked(state):
return state
In the example, the argument copy_state=frigidum.annealing.naked
is used.
To-Do:
- Statistics of acceptance of various movements/neighbors
- Multitreadding (N simultanous anneals)
- Drilling (after repeats, re-repeat with low temp)
- Re-Annealing
- Auto-set start Tempreature (Based on >90% movemenets)
- Auto-stop (Based on near 0 movemebts)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.