Learning Expert Patterns of Behaviour from Multi-objective Design
Kushlendra Mishra
Supervisor: Prof. Amitabha Mukerjee
Documents
Multi-objective optimization: Example Problems
We use the NSGA code from
Kanpur Genetic Algorithms Laboratory.
Download our code:
[designProbs.zip]
To run the code on any of the problems below:
- uncomment the relevant constant (e.g. GT = gear train problem) in global.h
and comment out all others. These constants are used in deciding the mutation
and crossover aspects for certain problems.
- note that the file "problemdefs.c" from the original NSGA code has been
replaced by "designProbs.c"
- at runtime, call the ./nsga2r <randseed> < inputfile (e.g. "nsga2r 0.654 < bdcpm.in" for the BDCPM problem)
- to edit the problem behaviour, search for the relevant constant and edit.
The design codes for the following systems are included:
- Brushless DC Permanent Magnet motor (chapter 2 of thesis): constant: BDCPM, inputfile = brushless.in
- Gearbox design (chapter 3): constant GT, inputfile = gt11.in for eleven variable problem or gtvo.in for 29 variable problem
- Clutch brake design(chapter 4): constant CLUTCH, inputfile = clutch.in
- Welded beam design(chapter 4): constant WBEAM, inputfile = wbeam.in
The code generates a file "myout.out" which contains the estimated
pareto solutions. The first n columns are the n objectives, and the
last d columns are the design variables. You may now wish to change
the filename to "clutch.out", say.
You may need to run local search on this (p. 18-19 of thesis). The
code for localsearch is
here. Follow
the instructions in the README file to run local search. Local search
code writes its output in the "lsout.txt" file.
The non-dominated fronts computed in this process are now passed to
the clustering and manifold discovery computation.
Clustering
The clustering algorithm is a derivative of DBSCAN as described in
p.21-25 of thesis. The code is written in python.
Download:
[mfcluster.zip].
The parameters of the algorithm are specified in the class "glb".
To run the code...
python mfcluster.py <
no of columns to skip in
distance calculation> <inputfilepath>
Two output files are produced in the same directory as the input file.
One file has the input data points with cluster labels in the first
column The other file has information on the clusters. Names of the
output files are similar to the input files. objective values as well
as the decision variable values.
Manifold discovery
You can run the manifold discovery algorithm on the entire dataset or
on the clusters as discovered using the clustering algorithm
above. This part of the code is in MATLAB.
You select clusters from the output of the above using this MATLAB
script xclusters.m. It generates a
cell-array with each cell containing the indices of points in one
cluster.
Manifolds are discovered only in the decision space (last d columns of
the output file)
We use a variety of manifold discovery algorithms. We either use PCA
(MATLAB function princomp) for linear manifolds, or Isomap for
non-linear. For Isomap, we use the code from
Isomap website. Just add
the relevant calls to the .m file above. The plots are generated using
matlab plotting functions.
Old results
See here for older results.