The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Sim::OPT.

SYNOPSIS

  use Sim::OPT;
  opt;

DESCRIPTION

Sim::OPT is an optimization and morphing program that can be used with any kind of simulation program that can receive text files as input and emit text files as output. Some of its optimization modules (Sim::OPT, Sim::OPT::Descent) pursue optimization by overlapping block coordinate descent (inexact Gauss-Seidel method). The Another optimization module (Sim::OPT::Takechange) seeks for the least explored search paths when exploring new search spaces. A morphing module (Sim::OPT::Morph) manipulates text files by targeting specific variables position and applying to them generic interpolation rules. The Sim::OPT::Parcoord3d module is dedicated to reporting and creating parallel coordinates plots in 3D.

At a more specific level, Sim::OPT is aimed to assist the detailed metadesign of buildings by managing the ESP-r building performance simulation platform. For that specific target, it offers several additional morphing functions besides the generic one. Because of that, a working knowledge of ESP-r (http://www.esru.strath.ac.uk/Programs/ESP-r.htm) is presently necessary to use most functionalitues of OPT. (Note that ESP-r must be compiled for text, not graphics, and for Linux).

To install Sim::OPT, the command <cpanm Sim::OPT> has to be issued as a superuser. OPT can then be loaded through the command <use Sim::OPT> in a Perl repl. To ease the launch, the batch file "opt" (which can be found packed in the "optw.tar.gz" file in "examples" folder in this distribution) may be copied in a work directory and the command <opt> may be issued (not as a superuser). That command will call the OPT's functions, following the settings specified in the configuration file, which has to be prepared in advance. When launched, OPT will ask the path to that file, which must contain a suitable description of the operations to be accomplished and point to an existing simulation model.

In "optw.tar.gz" there is an example of OPT configuration file for an ESP-r model and another one for EnergyPlus (another building performance simulation program). The defined configuration file may be copied in a chosen work folder for OPT, in which the ESP-r models to be worked may reside. The "$mypath" variable in the configuration file must be set to that work directory.

To run the morphing functions of OPT without making OPT launch the simulation program, the setting <$exeonfiles = "n";> should be specified in the configuration file. That way the commands will only be printed to a file. This can be aimed to inspect the commands that OPT would give the simulation program.

Besides an OPT configuration file, separate configuration files for propagation of constraints may be created. Those can be useful to give the morphing operations greater flexibility. Propagation of constraints can regard the geometry of a model, solar shadings, mass/flow network, and generic text files descripting a simulation model.

The simulation model folders and the result files that will be created in a parametric search will be named as the base model, plus numbers and other characters naming model instances. For example, the instance produced in the first iteration for a root model named "model" in a search constituted by 3 morphing phases and 5 iteration steps each will be named "model_1-1_2-1_3-1"; and the last one "model_1-5_2-5_3-5".

The structure of block searches is described through the variable "@sweeps". Each case is listed inside square brackets. And each search subspace (block) in them is listed inside square brakets, nested in cases. For example: a sequence constituted by two brute force searches, one regarding parameters 1, 2, 3 and the other regarding parameters 1, 4, 5, 7 would be described with: @sweeps = ( [ [ 1, 2, 3 ] ] , [ [ 1, 4, 5, 7 ] ] ). And a block search with the first subspace regarding parameters 1, 2, 3 and the second regarding parameters 3, 4, 5, 6 would be described with: @sweeps = ( [ [ 1, 2, 3 ] , [ 3, 4, 5, 6 ] ] ).

The number of iterations to be taken into account for each parameter for each case is specified in the "@varinumbers" variable. To specifiy that the parameters of the last example are to be tried for three values (iterations) each, @varinumbers has to be set to ( { 1 => 3, 2 => 3, 3 => 3, 4 => 3, 5 => 3, 6 => 3 } ).

The instance number that has to considered the basic one, corresponding to the root case, is specified by the variable "@miditers". "@miditers" for the last example may be for instance set to ( { 1 => 2, 2 => 2, 3 => 2, 4 => 2, 5 => 2, 6 => 2 } ).

Where Sim::OPT may be fit for a task? Where a certain exploration is complex and/or when it is to be confronted through decomposition, by dividing a problem in overlapping subproblems; when there aren't slick tools suitable to decomposition-based, simulation-based optimization; when spending a day, or two, or three setting up a model may spare months of work.

Where Sim::OPT may not be fit for the task? Due to its crude interface, for quick shots at small explorations.

Gian Luca Brunetti

gianluca.brunetti@polimi.it

EXPORT

"opt".

SEE ALSO

Examples can be found in the "examples" directory in this distribution.

AUTHOR

Gian Luca Brunetti, <gianluca.brunetti@polimi.it>

COPYRIGHT AND LICENSE

Copyright (C) 2008-2015 by Gian Luca Brunetti and Politecnico di Milano. This is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2 or later.