Performance Improvements for Evolutionary Strategy-based One-Class Constraint Synthesis

Tomasz P. Pawlak


Mathematical Programming (MP) models are common in optimization of systems. Designing those models, however, is challenging for human experts facing deficiencies in domain knowledge, rigorous technical requirements for the model (e.g., linearity) or lack of experience. Evolutionary Strategy-based One-Class Constraint Synthesis (ESOCCS) is a recently proposed method for computer-aided modeling, aimed at reduction of the burden on the expert by acquiring the MP constraints from historical data and letting the expert to freely modify them, supplement with an objective function and optimize using an off-the-shelf solver. In this study, we extend ESOCCS with five improvements aimed at increasing its performance in typical problems. Three of them turn out beneficial in a rigorous experimental evaluation and one prevents ESOCCS from producing degenerate models.

Access full text

Full text is available at ACM digital library.


 author = {Pawlak, Tomasz P.},
 title = {Performance Improvements for Evolutionary Strategy-based One-class Constraint Synthesis},
 booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference},
 series = {GECCO '18},
 year = {2018},
 isbn = {978-1-4503-5618-3},
 location = {Kyoto, Japan},
 pages = {873--880},
 numpages = {8},
 url = {},
 doi = {10.1145/3205455.3205504},
 acmid = {3205504},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {classification, constraint learning, linear programming, model acquisition, optimization},

Supplementary material

Source code

The C# source code of the experimental suite presented in the paper is available under conditions of Academic Free License. Visual Studio 2015+ is required to compile binaries from the source. Gurobi Solver 7.5 is required to run the software. This software runs on Mono 4.4+ under Linux.

Run the software using the following command:

Modeling.MP.exe seed=[random_seed] benchmark=Modeling.Common.Benchmarks.[benchmark] feasibleSamples=[ushort] synthesizer=MP.ES.EsoccsMultiUseSynthesizer InitializationPipeline=Modeling.GP.ES.MP.GIBBox UnlabelledRatio=[float] MaxUseTimes=[uint] CM=[probability] HR=[probability] LambdaMuRatio=[double] RemoveRedundantConstraints=False linear=True quadratic=[Boolean] MaxGenerations=[uint] PopulationSize=[uint] output=statistics.sqlite