Skip to content

Latest commit

 

History

History
 
 

amadeus

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Here we combine the global optimization method of conformational space annealing
(CSA) with first-principles quantum calculations and report a new scheme named AMADEUS 
(Ab initio MAterials DEsign Using cSa). Since the current version of AMADEUS
only deals with systems with given compositions and external pressure, we focus on crystal structures. 
For a system with n atoms per unit cell, the structure search is accompanied by optimizing the 6 + 3n 
degrees of freedom that include six lattice parameters (a, b, c, alpha, beta, and gamma) 
and the set of atomic positions ({R_I}).  Here a, b, and c are the lattice constants in the unit cell 
and alpha, beta, and gamma are the angles between the lattice vectors.

Numerous daughter solutions are generated by the aforementioned mutation and crossover procedures, and
they are all subject to the procedure of local energy minimization and subsequent objective function 
evaluation, which constitutes the most time-consuming part of CSA. Since this procedure can be performed in
a separate and independent manner, the whole calculations can be efficiently executed in a highly parallel
fashion even by using a slow node-to-node network communication protocol such as the ethernet connection
are needed: i) a local energy/enthalpy minimizer, ii) a way to generate a daughter solution from one or two
parent solution(s), and iii) a measure to estimate the difference or similarity between two given solutions.
Since CSA follows multiple trajectories of local energy minima, it can be considered as a genetic algorithm
in a broad sense. In the genetic algorithm, a population of current solutions evolves toward the next
generation of better solutions.

We have developed a protocol for computational materials design, called AMADEUS, in which the CSA
algorithm for global optimization is combined with first-principles DFT calculations. We used a variant of
CSA, in which the local energy/enthalpy minimization of trial solutions is performed and their objective
function values are evaluated from first-principles calculations. The goal of AMADEUS was set to obtain
as many distinct solutions as possible not just the most optimal solution.

Although the first-principles DFT calculations are computationally intensive, we can implement the
parallel-in-parallel scheme in AMADEUS, which allows us to utilize thousands of CPU cores efficiently.
Thus, we hope that AMADEUS can expedite the progress of the materials design in near future.

Scripts are taken from the references.
In-Ho Lee: [email protected]
!      Conformational Space Annealing (CSA) with First Principles Electronic Structure Calculations
!      Atomic positions and six lattice parameters (a,b,c, alpha, beta, gamma) are dynamical variables for the CSA.
!      References: Phys. Rev. Lett. 91, 080201 (2003); Phys. Rev. B 90, 115209 (2014);
!      Sci. Rep. 5, 18086 (2015); Phys. Rev. B 93, 085201 (2016); Comput. Phys. Commun. 203, 110 (2016);
!      NPG AsiaMaterials 9, e361 (2017); NPG Asia Materials 9, e400 (2017); Sci.Rep. 7, 7279 (2017);
!      J. Phys. Chem. Lett. 8, 4627 (2017); Phys. Rev. Lett. 120, 157001 (2018); J. Phys. Chem. C 12, 1839 (2019);
!      Nanoscale 11, 5171 (2019).
!
!       ######   ######     ###            ##     ##    ###     ######  ########  
!      ##    ## ##    ##   ## ##           ##     ##   ## ##   ##    ## ##     ## 
!      ##       ##        ##   ##          ##     ##  ##   ##  ##       ##     ## 
!      ##        ######  ##     ## ####### ##     ## ##     ##  ######  ########  
!      ##             ## #########          ##   ##  #########       ## ##        
!      ##    ## ##    ## ##     ##           ## ##   ##     ## ##    ## ##        
!       ######   ######  ##     ##            ###    ##     ##  ######  ##        
!           
!               #     #     #     #     ######   #######  #     #   #####   
!              # #    ##   ##    # #    #     #  #        #     #  #     #  
!             #   #   # # # #   #   #   #     #  #        #     #  #        
!            #     #  #  #  #  #     #  #     #  #####    #     #   #####   
!            #######  #     #  #######  #     #  #        #     #        #         
!            #     #  #     #  #     #  #     #  #        #     #  #     #  
!            #     #  #     #  #     #  ######   #######   #####    #####   
!                        Ab initio MAterials DEsign Using cSa               
!

cd source0  
vi makefile  
make   
make a2ps (only for program analysis)   
 
cd util1   
vi makefile   
make   
make a2ps (only for program analysis)  

cd util2   
vi makefile   
make  
make a2ps (only for program analysis, see exam2)  

cd util3 
vi makefile   
make  
make a2ps (only for program analysis, see exam3)   

example folders  
exam0 --> enthalpy optimization for a given external pressure (e.g., PSTRESS = 400. in INCAR_*)   
exam1 --> direct band gap crystal structures, three dimensional bulk   
exam2 --> quasi two dimensional crystal structures or surfaces   
exam3 --> effective mass minimization   

Reference computer programs for generating random symmetric structures   
See http://elk.sourceforge.net/spacegroup.pdf   

evince toposcar.ps  
in vi/vim you can use  
:syntax off  
:syntax on  

Linux/Unix commands:   
/bin/nice          <---- for the csa_vasp.x run
/usr/bin/nohup     <---- for the csa_vasp.x run
/usr/sbin/pidof    <---- to get the process ID of csa_vasp.x run, OR, you can use touch commmand, e.g., touch process_ID
/usr/bin/make  
/opt/intel/Compiler/12.1.6/bin/intel64/ifort  
/usr/bin/vim  
/bin/sh   
/opt/intel/MPI/4.0.3.008/bin64/mpirun   
/bin/sleep   
/bin/echo   
/bin/touch   
/bin/awk  
/usr/local/bin/a2ps ( https://www.gnu.org/software/a2ps/ )  <----  useful tool for printing out
/usr/bin/evince    <----- Postscript file viewer
/bin/ps   
e.g.,  
csa_vasp.x job ID : 29861  
CSA_SOLDIER.pbs related Jobname from the PBS 'qstat -a' command : SiC18   
You want to kill the job(csa_vasp.x) including spawned PBS jobs.
kill -9  29861; rm  29861;  qstat -a|grep SiC18 |awk '{split($0,a,"."); print "qdel ", a[1]}' |sh -x  

Sometimes, you can hold/release your job ques.
qstat -a|grep SiC18 |awk '{split($0,a,"."); print "qhold ", a[1]}' |sh -x  
qstat -a|grep SiC18 |awk '{split($0,a,"."); print "qrls ", a[1]}' |sh -x  

head -n 1 CONTCAR > z1  
awk '/entropy=/  {print $7}'  OUTCAR |tail -n 1 >> z1  
awk 'ORS=NR%2?FS:RS' z1 > z2  
tail -n +2 CONTCAR >> z2  
mv z2 CONTCAR  
rm z1  
sleep 0.5  
STAMP=$(date +%Y%m%d_%H%M%S)_$RANDOM  
echo $STAMP  
cp CONTCAR    ../deposit/CONTCAR_$STAMP  
cp OUTCAR     ../deposit/OUTCAR_$STAMP  
cp EIGENVAL   ../deposit/EIGENVAL_$STAMP  
cp DOSCAR     ../deposit/DOSCAR_$STAMP  
nohup nice ~/csa_vasp/csa_vasp.x <csa.in &> csa.out &  
pidof csa_vasp.x |awk '{print $1}'| xargs touch  
ls -ltra 00?? | more  
cp fort.1 fort.1.back  
~/csa_vasp/readfort1.x <csa.in  

To visualize conformations in two-dimensional space, multidimensional scaling (MDS), was performed. 
In this way, relative descriptor-distances are maintained, 
and an accurate two-dimensional representation of the many-dimensional conformations is obtained. 
Thus, distances between points in the plot quantify the similarity between the various conformations.
/home/ihlee/csa_vasp/readfort1.x < csa.in > outputreadfort1
python /home/ihlee/csa_vasp/util1/mds0.py
python /home/ihlee/csa_vasp/util1/abcalbega.py        
python /home/ihlee/csa_vasp/util1/energydensity.py    
python /home/ihlee/csa_vasp/util1/energyhistogram.py  
python /home/ihlee/csa_vasp/util1/status.py
python /home/ihlee/csa_vasp/util1/energyvolume.py     
python /home/ihlee/csa_vasp/util1/structureupdate1.py
python /home/ihlee/csa_vasp/util1/energyvolumesc.py   
python /home/ihlee/csa_vasp/util1/structureupdate.py
python /home/ihlee/csa_vasp/util1/idenergy.py         
python /home/ihlee/csa_vasp/util1/volumehistogram.py
python /home/ihlee/csa_vasp/util1/mdsbank.py

diff fort.1 fort.1.back  
ls -ltr 00??/stdout.log  
ls -ltr 00??/OUTCAR  
rm ./00??/csa_soldBP18.e*  
rm ./00??/csa_soldBP18.o*  
tail -n1 ./00??/STATUS  
grep car csa.out  
grep car csa.out |wc  
ps -u ihlee|awk '/vasp/ {print "kill -9 " $1}' | sh -x  
qstat -a|grep ihlee |grep Q |awk '{split($0,a,"."); print "qhold ", a[1]}' |sh -x  
qstat -a|grep ihlee |grep H |awk '{split($0,a,"."); print "qrls  ", a[1]}' |sh -x  
kill -9 29861; rm 29861; qstat -a| grep SiC18 |awk '{split($0,a,"."); print "qdel  ",a[1]}' |sh -x  
kill -9 22705; rm 22705; qstat -a| grep BP10  |awk '{split($0,a,"."); print "qdel  ",a[1]}' |sh -x  
awk 'BEGIN{min=100000.; mint=" "; t=-100000.} {if( ($3 > t) && ($3 < min) ) {min=$3; mint=$1}}END {print mint, min}' csa.out  
awk 'NR>6 {print ($1-6.1917), $2}' DOSCAR >g1  
awk 'NR>6 {print ($1-6.1917), -$3}' DOSCAR >g2  
awk '{if(NR ==1) {print "some", $0} else { print }}' POSCAR  
awk '{if(NR ==1) {print "12.34", $0} else { print }}' POSCAR  
awk '{if(NF <3) {print}}' g1>g2  

Take a look at a tabulated covalent radius by issuing the following command. 
cat /home/ihlee/csa_vasp/source0/rcrystal.f90 

head -n 1 CONTCAR > z1
awk '/entropy=/  {print $7}'  OUTCAR |tail -n 1 >> z1 
awk 'ORS=NR%2?FS:RS' z1 > z2 
tail -n +2 CONTCAR >> z2
mv z2 CONTCAR
rm z1

head -1 CONTCAR  > ztmp
/usr/local/findSpaceGroup/build/findSpg CONTCAR |grep spg >> ztmp
cat ztmp |awk 'ORS=NR%2?FS:RS' | awk '{print $1, $2, $3, $5}' > zhead
tail -n +2 CONTCAR >> zhead
mv zhead CONTCAR 
rm ztmp

[See https://github.com/psavery/findSpaceGroup]

AMADEUS can do a simple ab initio random structure search, just like an AIRSS (Ab Initio Random Structure Searching).
(1) generate many random structures, e.g., see below. 
./randSpg randSpg.in   [See https://github.com/psavery/randSpg]
(2) CSA_SOLDIER.pbs can take a script below just before the VASP calculation.
mv $(ls /home/ihlee/csa_work/AgSeTe/randSpg/sg14/Ag????* |tail -1 |awk '{print $2}')   ./POSCAR
mv $(ls /home/ihlee/csa_work/AgSeTe/randSpg/sg14/Ag????* |sort -R |tail -1 |awk '{print $2}')   ./POSCAR
Here, we assume that Ag????* are generated file names.
'sort -R' stands for an option for random ordering.

A useful command for copying (copy a file to many different directories, 00??)
ls -db  00?? | xargs -n 1 cp CSA_SOLDIER.pbs

ls -lt   00??
ls -ltr  00??
ls -ltrad  00??


To see a reference sigmamatrix in a input file csa.in
(1) prepare the first two lines in a trial csa.in
(2) mkdir 0000
(3) cd 0000
(4) cp ~/csa_vasp/interven/rescalsigma.f90 .
(5) ifort rescalsigma.f90 
(6) ./a.out
[ihlee@master 0000]$ cp ~/csa_vasp/interven/rescalsigma.f90 .
[ihlee@master 0000]$ ifort rescalsigma.f90 
[ihlee@master 0000]$ ./a.out
 Ag  Se  Te
 reference sigmamatrix from covalent radii table
   1.45000000000000        1.32500000000000        1.41500000000000     
   1.32500000000000        1.20000000000000        1.29000000000000     
   1.41500000000000        1.29000000000000        1.38000000000000     
 somehow POSCAR is not present
 otherwise, it is a test run on a test directory, e.g. 0000
 you may consider the pressure value for the sigmamatrix setting
 cut and paste


To put the space group number to the head of the POSCAR_00?? files with findSpg program.
You shold have a double check for the space group with PLATON program.
#!/bin/sh

npop=50
for i in `seq -s " " -f %04g 1 $npop`
do
head -1 POSCAR_$i  > ztmp
/usr/local/findSpaceGroup/build/findSpg POSCAR_$i |grep spg >> ztmp
cat ztmp |awk 'ORS=NR%2?FS:RS' | awk '{print $1, $2, $3, $5}' > zhead
tail -n +2 POSCAR_$i >> zhead
mv zhead POSCAR_$i
rm ztmp
done



AMADEUS installation/user guide
AMADEUS (Ab initio MAterials DEsign Using conformational Space annealing) is a combined computational approach of conformational space annealing (CSA) 
for global optimization and first-principles electronic structure calculations. 
The enthalpy minimization and the analysis of electronic properties were performed, 
within the framework of density functional theory, via VASP. The AMADEUS package is distributed under the BSD license.

AMADEUS installation guide
AMADEUS (csa_vasp.x) is written in FORTRAN 90. This installation guide is designed for the compiler ifort (Intel Fortran compiler) on the Linux/UNIX system. 
A gzipped-tar file amadeus????????.tar.gz will be the starting object of this AMADEUS installation guide.

(1.) $gzip –d amadeus????????.tar.gz 
(2.) $tar xvf amadeus.tar
(3.) $cd csa_vasp
(4.) $cd source0
(5.) $vi makefile
(6.) $make clean; make
(7.) $ls –ltra ../
(8.) $ls CSA_KING.pbs CSA_SOLDIER.pbs csa.in
(9.) $ls INCAR_rlx INCAR_rlxall INCAR_bs 
(10.) The step (2.) will provide a directory with the name of csa_vasp. 
In step (5.), you have to have a configuration setup. Through the command shown in step (7.), an execution file csa_vasp.x will be present.

AMADEUS user guide
For your specific study, you should have a working directory, e.g., /home/ihlee/Si14. 
This full path name will be an input parameter in the file csa.in. POTCAR file cannot be distributed without the permission. 
Thus, POTCAR file is not included in the present tar file.

In your working directory, e.g., /home/ihlee/Si14, you may have to place VASP input files 
such as POTCAR, INCAR_rlx, INCAR_rlxall, and INCAR_bs. Edit files INCAR_rlx, INCAR_rlxall, and INCAR_bs. 
A POTCAR should be prepared before the study. There are real-life examples of AMADUES, exam0, exam1, and exam2. 
It is worthwhile to experiment with these example setups for variables in csa.in. Keep in mind that different problems require different settings.

Two files CSA_KING.pbs and CSA_SOLDIER.pbs are waiting to be edited. The file CSA_SOLDIER.pbs contains a script for VASP run. 
On the other hand, the file CSA_KING.pbs contains a script for the csa_vasp.x run. 
As you expect, cas_vasp.x will spawn many VASP runs in a set of independent working directories. 
Note that csa_vasp.x requires a single CPU. CSA_SOLDIER.pbs is nothing but a script for VASP run. 
Thus, it is related to many CPUs tightly connected. 
Actually, csa_vasp.x generates many working directories and submits many VASP runs in the mode of parallel in parallel.

The following code shows the skeleton of a distributed VASP calculation, executing atomic position relaxation, lattice parameters relaxation 
and/or band structure calculation. It includes the code for the calculation parameters and tasks. 
You should do to put the first thing first. In the first step, we minimize total energy with respect to the atomic positions. 
In the second step, we minimize the enthalpy with respect to the cell-edge vectors (stress tensor) and atomic positions (Hellmann-Feynman forces).

Before you run the csa_vasp.x program, you need to generate a directory named by deposit. 
$mkdir deposit

In case you are not using PBS batch file CSA_KING.pbs, for submitting csa_vasp.x, you may use following Linux command at the prompt. 
$nohup nice ~/csa_vasp/csa_vasp.x < csa.in &> csa.out &; pidof csa_vasp.x |awk '{print $1}'| xargs touch 
(keep running the command no matter the connection is lost or you logout, to keep the process id on the disk)

For a run of csa_vasp.x in a PBS batch mode, you will have the following command on Linux system. CSA_KING.pbs should be a long-time queue. 
In addition, CSA_KING.pbs should take a single CPU.
$qsub CSA_KING.pbs

Monitor the job process, files csa.out and fort.1. 
Thus, in general, input files for csa_vasp.x contains csa.in, POTCAR, INCAR_rlx, INCAR_rlxall, INCAR_bs, and fort.1.

Only for an iterative calculation of csa_vasp.x, file fort.1 will be an additional input file. 
You have to remove fort.1 for a new calculation.

An input file csa.in is key input file for the csa_vasp.x program.

To start a new study, in your working directory, you will have the following commands. 
In your iterative calculation, you will have a file named fort.1. 
$mkdir deposit;ls INCAR_rlx INCAR_rlxall INCAR_bs POTCAR CSA_KING.pbs CSA_SOLDIER.pbs csa.in deposit; qsub CSA_KING.pbs

If we call this file csa.in, we can run the csa_vasp.x by putting it as an input file, and then just place it like so: 
$nohup nice /home/ihlee/csa_vap/csa_vasp.x<csa.in &> csa.out &; pidof csa_vasp.x |awk '{print $1}'| xargs touch 
(keep running the command no matter the connection is lost or you logout)

Note that the extpress is a dummy variable. It should be expressed in the input files (INCAR_rlx, INCAR_rlxall, and INCAR_bs), 
if it is necessary. E.g., external pressure (kbar unit).

Check the file CSA_SOLDIER.pbs. It remains to be seen whether or not the contents can be put into practice. 
It should be compatible with parameter iobj in file csa.in. Iobj=0 stands for an enthalpy minimization for a given external pressure.

voltol, this value is in percent unit, tolerance in volume, cellvol0 (in unit of Å^3^) initial volume setting, 
which is different from the relaxed one, in general. cellvol0 is a reference volume in unit of Å^3^.

lvcs =.true. means variable cell shape calculations. In this case voltol is an important input.

cmatrix(3,3) will be given in Å unit. This is important input in the case of lvcs=.false.

ndirectory, this parameter is useful for limiting the usage of the resources, as an intentional action. 1 <= ndirectory <= npop

lnewjob, this variable can actually be set to .false. any cases. 
You can explicitly remove the file fort.1 by using the command rm fort.1 for a new job.

sigmamatrix(:,:) defines the minimum distance in Å unit between atomic species, before the VASP calculations.

npop means the number of populations in CSA.

nmate : npop x nmate will be the number of crossovers.

npert : nopo x npert will be the number of mutations.

drate : CSA annealing schedule parameter.

nevol : the number of CSA stages

idiff = 3 will be a bond length histogram based discrimination.

amp : a reference amplitude in Å unit for a mutation.

iseed10, iseed20 : random number seeds.

As this example shows, input parameters may not be broken after lines, and a comment may be inserted at the end of each line.

To check the latest calculations. ls -ltr 00??/stdout.log or ls -ltr 00??/OUTCAR

Up to date, crystal structures are saved in the file fort.1 that, roughly, contains a set of candidate solutions from the CSA run. 
Of course, you can backup major output files from VASP calculations in a separate directory named deposit through the commands in the 
[PBS (https://en.wikipedia.org/wiki/Portable_Batch_System) script CSA_SOLDIER.pbs. 
$/home/ihlee/csa_vasp/readfort1.x < csa.in will provide many POSCAR files 
such as POSCAR_0001, POSCAR_0002, .... These file names are compatible format to VESTA, a crystal viewer.

Availability of each directory, the quality of being at hand when needed, can be monitored by using the command. tail -n1 ./00??/STATUS

check list

fort.1 : cp, rm
csa.in : vi
INCAR_rlx : vi
INCAR_rlxall : vi
INCAR_bs : vi
POTCAR : cp
CSA_KING.pbs : vi
CSA_SODIER.pbs : vi
deposit : mkdir
Typical AMADUES job can have many thousands of CPUs-far too many to monitor easily all at once. 
To control PBS jobs, a special script made of an awk computer language can be used. 
The PBS jobs are already categorized and visualized by the prespecified job-identity in the CSA_SOLDIER.pbs. 
Here is an example that defines few operations under the Linux/UNIX protocol. 
A set of useful commands for job hold, release, and cancel in the PBS system.
kill -9 29861; rm 29861; qstat -a|grep SiC18 |awk '{split($0,a,"."); print "qdel ", a[1]}' |sh –x
qstat -a|grep SiC18 |awk '{split($0,a,"."); print "qhold ", a[1]}' |sh –x
qstat -a|grep SiC18 |awk '{split($0,a,"."); print "qrls ", a[1]}' |sh –x
Here, we assume that job id is 29861 and VASP jobnames all contain characters SiC18.

The easiest way to save and restore a crystal structure with energy/enthalpy is to use an awk script. 
You can include the script in your batch file. You can simply regenerate the CONTCAR file just a follows:
head -n 1 CONTCAR > z1;
awk '/entropy=/ {print $7}' OUTCAR |tail -n 1 >> z1; 
awk 'ORS=NR%2?FS:RS' z1 > z2; 
tail -n +2 CONTCAR >> z2;
mv z2 CONTCAR;
rm z1

If you have ndirectory=50 (as an input parameter in csa.in) and each VASP run takes 20 CPUs through the CSA_SOLDIER.pbs 
then you can use about 1,000 CPUs simultaneously.

At the early stage of the csa_vasp.x run, csa_vasp.x generates many directories and subsequently copies of five files, 
CSA_SOLDIER.pbs, INCAR_rlx, INCAR_rlxall, INCAR_bs, and POTCAR. 
Thus, each directory has above five files. The last input file, POSCAR, trial crystal structure for a VASP run, 
will be provided by the csa_vasp.x program as it runs. 
Whenever a new POSCAR file is generated, a new VASP run is involved through the command qsub CSA_SOLDIER.pbs. 
The last job submission command is issued by the csa_vasp.x program. In each directory, except either starting stage or finalizing stage, 
one VASP run calls another VASP run in a successive mode. 
How can this happen? Actually, csa_vasp.x program monitors every VASP job status through the file STATUS placed in each directory. 
In practice, the last line of the STATUS file stands for whether current VASP job is running (queued) or finished.

For a code analysis, you can generate postscript files with the following command in your source code directory. 
$make a2ps

In most cases, integer variables start with [i, j, k, l, m, n], while double precision (real*8) variables start with [a-h, o-z] following the old convention.

A known issue:
It is impossible to build a set of trial unit cells under the unphysically large sigmamatrix(:,:) values with a smaller unit cell volume. 
This results in a status of the computer program for not generating working directories, 0001, 0002, 0003, ... and so on, just after issuing the run command. 
You have to reconfigure the sigmamatrix(:,:) values just along with your current crystal unit cell volume size 
so that the program can generate reasonable random symmetric crystal structures. 
The best solution to this problem is to make sure the reconfigured values for the symmetric sigmamatrix(:,:) are very close to 1.0 Å, in most cases. 
You will have to run the program again, after the killing process of the execution.

AMADUES is a fault-tolerant protocol. AMADUES can abandon conformations related to any kind of fault from the VASP execution, 
including artificial job termination and/or abortion. 
Actually, AMADUES gives up the specific conformation as a high energy/enthalpy (objective function) crystal system. 
A fault recognition in AMADUES is made through the investigation of the files (stdout.log) scattered over working directories, 
in addition, in the case of STATUS file ends with a script DONE.

When using AMADUES, you are expected to cite the reference papers in your publications.

AMADUES is not complete. It is intended to be extended. Both providing feedback and contributing to the source code are the ways to make it better.

A massive parallelization scheme (parallel-in-parallel), tested on up to 1000 CPU cores, enables effective utilization of high performance computing resources.

System requirements
Linux/UNIX operating system
PBS like job submission system
Intel Fortran compiler
VASP
History
The author tried to develop the protocol during the application period (2013) for Samsung Science and Technology Foundation under Grant No.SSTF-BA1401-08.

Disclaimer
It is your responsibility to research the accuracy, completeness, and usefulness of all files, services, 
and other information found on the computer programs, and to consult with your professional research provider 
as to whether the information can benefit you. The present distribution assumes no responsibility or liability 
for any consequence resulting directly or indirectly for any action or inaction you take based on 
or made in reliance on the information, services, or material on or generated from this protocol. 
The author takes no responsibility for any damage incurred by the user as a result of using this protocol. 
No reproduction, republication, and redistribution to third parties of any contents 
is permitted without written permission of the author.


Glossary
A genetic algorithm (GA) is a search heuristic that mimics the process of natural selection. 
In a GA, a population of candidate solutions to an optimization problem is evolved toward better solutions.
A heuristic is a technique designed for solving a problem more quickly when classic methods are too slow, 
or for finding an approximate solution when classic methods fail to find any exact solutions.
An evolutionary algorithm (EA) is a subset of evolutionary computation, a generic population-based metaheuristic optimization algorithm. 
An EA uses mechanisms inspired by biological evolution, such as mutation, crossover, and selection.
Evolutionary algorithms use a population of individuals, where an individual is referred to as a chromosome.
A chromosome (chromo- + -some) is a packaged and organized structure containing most of the DNA of a living organism.
Mutation is a genetic operator used to maintain genetic diversity from one generation of a population of GA chromosomes to the next.
Crossover is a genetic operator used to vary the programming of a chromosome or chromosomes from one generation to the next. 
Crossover and mutation are known as the main genetic operators.
Selection is the stage of a GA in which individual genomes are chosen from a population for later breeding. 
A proportion of the existing population is selected to breed a new generation.
An objective function is either a loss function or its negative, 
in which case it is to be maximized. The survival strength of an individual is measured 
using an objective function which reflects the objectives and restraints of the problem to be solved.