This is the github repository for the code to run simulations for chain unlocking using optimization methods.
The following packages must be installed in the system:
- ArgParse
- BenchmarkTools
- Distributions
- IterativeSolvers
- Plots
- StaticArrays
From julia, you can install all of these packages using
import Pkg
Pkg.add("ArgParse")
Pkg.add("BenchmarkTools")
Pkg.add("Distributions")
Pkg.add("IterativeSolvers")
Pkg.add("Plots")
Pkg.add("StaticArrays")The main scripts needed used to run the code are located in the src folder. Here we provide a simple description of each of them:
| File | description |
|---|---|
runSimple.jl |
Run a set of optimization runs for independent replicas over a set of values of l for a parametrized knot knot(l). All of the replicas will run sequentially over the same process. |
runDistributed.jl |
Run a set of optimization runs for independent replicas over a set of values of l for a parametrized knot knot(l). All of the replicas will be launched in a distributed way over different processes. |
runGenetic.jl |
Run an optmiztion using a Genetic algorithm for a knitting needle knot. |
runSobolev.jl |
Run an optmiztion using a Sobolev fractional gradient descent algorithm for a modified knitting needle knot. |
Each of these scripts can be called with a --help flag to see what arguments they take. The arguments are also detailed in argumentParsing.jl. The full list of algorithms possible for runSimple.jl and runDistributed.jl can be checked in algorithms.jl
Folder outputs must be created and exist in the same level than src. All of the scripts will create folders here named after the date and time in format YYYY-MM-DD hh:mm. For obvious reasons, its not recommended to launch more than one simulation per minute, otherwise files might get overwritten.
The output folder can also be specified using the --output argument
For running a sequential run for the knittingNeedle(l) knot, with 5 equally-spaced l values between 1.3 and 1.5 until the function gets minimized to a value of 0.001, and doing 3 replicas per l value:
julia runSimple.jl --chain knittingNeedle --lmin 1.3 --lmax 1.5 --lvals 5 --indep_simuls 3 --tolerance 0.001To run the exact same thing, but also distributing the simulations over 7 processors:
julia runSimple.jl --chain knittingNeedle --lmin 1.3 --lmax 1.5 --lvals 5 --indep_simuls 3 --tolerance 0.001 --processes 7