/coil

Code for paper: P.J. Bentley, S.L. Lim, A. Gaier and L. Tran. (2022). COIL: Constrained Optimization in Learned Latent Space. Learning Representations for Valid Solutions. ACM Genetic and Evolutionary Computation Conference (GECCO'22) Companion, ACM, pp. 1870–1877.

Primary LanguagePython

README
------
Code for the paper entitled "COIL: Constrained Optimization in Learned Latent Space. Learning Representations for Valid Solutions."

Please cite:
Peter J Bentley, Soo Ling Lim, Adam Gaier and Linh Tran. 2022. COIL: Constrained Optimization in Workshop on Learned Latent Space: Learning Representations for Valid Solutions. In Genetic and Evolutionary Computation Conference Companion (GECCO ’22 Companion). ACM, Boston, USA.


Top-level directory
.
├── COIL                   	# COIL code (C1 and C2)
└── README.txt            	# README file

Required packages:
deap==1.3.1
pytorch==1.9.0 
numpy==1.18.5
matplotlib==3.4.3


----
Directory: COIL
----
.
├── ...
├── COIL            		# COIL code (C1 and C2)
│   ├── c1.py         		# Specifies objective, constraint and settings for C1
│   ├── c2.py          		# Specifies objective, constraint and settings for C2
│   ├── generate_data.py	# COIL Step 1 for C1: generates data for C1
│   ├── generate_data_c2.py	# COIL Step 1 for C2: generates data specifically for C2
│   ├── learn_representation.py# COIL Step 2: learns representation
│   ├── optimise.py		# COIL Step 3: optimise
│   ├── ga.py			# Standard GA
│   ├── analyse.py             # Compares results from GA and COIL and produces charts
│   ├── data             	# Folder containing data generated by generate_data.py
│   ├── vae             	# Folder containing VAEs generated by learn_representation.py
│   ├── results             	# Folder containing results generated by optimse.py and ga.py
│   └── image                	# Folder containing images generated by analyse.py
└── ...


* To run COIL for C1 with 3 variables:

>> python generate_data.py -e c1 -v 3
>> python learn_representation.py -e c1 -v 3
>> python optimise.py -e c1 -v 3 -r 100


* To run COIL for C2 with 3 variables:

>> python generate_data_c2.py -e c2 -v 3
>> python learn_representation.py -e c2 -v 3
>> python optimise.py -e c2 -v 3 -r 100