From 957400c9f009254c2e2616ff8b006295a21063b6 Mon Sep 17 00:00:00 2001 From: Craig Warren Date: Mon, 9 May 2016 14:23:06 +0100 Subject: [PATCH] Added figure for example Taguchi process. --- .../images/user_libs/taguchi_fitness_hist.png | Bin 0 -> 45659 bytes .../user_libs/taguchi_parameter_hist.png | Bin 0 -> 39904 bytes docs/source/user_libs_opt_taguchi.rst | 44 ++++++++++++++---- 3 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 docs/source/images/user_libs/taguchi_fitness_hist.png create mode 100644 docs/source/images/user_libs/taguchi_parameter_hist.png diff --git a/docs/source/images/user_libs/taguchi_fitness_hist.png b/docs/source/images/user_libs/taguchi_fitness_hist.png new file mode 100644 index 0000000000000000000000000000000000000000..d306c1753e002402889987afa16e8d8284445ae2 GIT binary patch literal 45659 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 literal 0 HcmV?d00001 diff --git a/docs/source/user_libs_opt_taguchi.rst b/docs/source/user_libs_opt_taguchi.rst index f069ec58..ac166f31 100644 --- a/docs/source/user_libs_opt_taguchi.rst +++ b/docs/source/user_libs_opt_taguchi.rst @@ -24,6 +24,14 @@ Information The package features an optimisation technique based on Taguchi's method. It allows users to define parameters in an input file and optimise their values based on a fitness function, for example it can be used to optimise material properties or geometry in a simulation. +.. warning:: + + This package combines a number of advanced features and should not be used without knowledge and familiarity of the underlying techniques. It requires: + + * Knowledge of Python to contruct a model input file to use with the optimisation + * Understanding of optimisation techniques in general, and in particular Taguchi's method + * Care and 'sanity' checking to be made throughout the process + Taguchi's method ---------------- @@ -84,20 +92,14 @@ Parameters and settings for the optimisation process are specified within a spec Optionally a variable called ``maxiterations`` maybe specified which will set a maximum number of iterations after which the optimisation process will terminate irrespective of any other criteria. If it is not specified it defaults to a maximum of 20 iterations. +There is also a builtin criterion to terminate the optimisation process is successive fitness values are within 0.1% of one another. + How to use the package ====================== The package requires ``#python`` and ``#end_python`` to be used in the input file, as well as ``#taguchi`` and ``#end_taguchi`` for specifying parameters and setting for the optimisation process. A Taguchi optimisation is run using the command line option ``--opt-taguchi``. -.. note:: - - A couple of warnings before using this package: - - * It requires a basic knowledge of Python to use the optimisation process and construct models. - * It combines a number of advanced features which must be used carefully, and sanity checks made throughout the process. - - Example ------- @@ -114,7 +116,7 @@ The bowtie design features 3 vertical slots (y-direction) in each arm of the bow :language: none :linenos: -The first part of the input file (lines 1-7) contains the parameters to optimise, their initial ranges, and fitness function information for the optimisation process. Three parameters representing the resistor values are defined with ranges between 0.1 :math:`\Omega` and 5 :math:`k\Omega`. A pre-built fitness function called ``maxabsvalue`` is specified with a stopping criterion of 50V/m. The output point in the model that will be used in the optimisation is specified as having the name ``Ex60mm``. Finally, a limit of 5 iterations is placed on the optimisation process, i.e. it will stop after 5 iterations irrespectively of whether it has reached the target of 50V/m. +The first part of the input file (lines 1-7) contains the parameters to optimise, their initial ranges, and fitness function information for the optimisation process. Three parameters representing the resistor values are defined with ranges between 0.1 :math:`\Omega` and 1 :math:`k\Omega`. A pre-built fitness function called ``maxabsvalue`` is specified with a stopping criterion of 10V/m. The output point in the model that will be used in the optimisation is specified as having the name ``Ex60mm``. The next part of the input file (lines 9-93) contains the model. For the most part there is nothing special about the way the model is defined - a mixture of Python, NumPy and functional forms of the input commands (available by importing the module ``input_cmd_funcs``) are used. However, it is worth pointing out how the values of the parameters to optimise are accessed. On line 29 a NumPy array of the values of the resistors is created. The values are accessed using their names as keys to the ``optparams`` dictionary. On line 30 the values of the resistors are converted to conductivities, which are used to create new materials (line 34-35). The resistors are then built by applying the materials to cell edges (e.g. lines 55-62). The output point in the model in specifed with the name ``Ex60mm`` and as having only an ``Ex`` field output (line 42). @@ -131,4 +133,26 @@ When the optimisation has completed a summary will be printed showing histories .. code-block:: none - python -m user_libs.optimisation_taguchi.plot_results antenna_bowtie_opt_hist.pickle + python -m user_libs.optimisation_taguchi.plot_results user_libs/optimisation_taguchi/antenna_bowtie_opt_hist.pickle + +.. code-block:: none + + Optimisations summary for: antenna_bowtie_opt_hist.pickle + Number of iterations: 4 + History of fitness values: [4.2720928, 5.68856, 5.7023263, 5.7023263] + History of parameter values: + resinner [250.07498, 0.87031555, 0.1, 0.1] + resmiddle [250.07498, 0.87031555, 0.1, 0.1] + resouter [250.07498, 0.87031555, 0.1, 0.1] + +.. figure:: images/user_libs/taguchi_fitness_hist.png + :width: 300 px + + History of fitness (``maxabsvalue``) value. + +.. figure:: images/user_libs/taguchi_parameter_hist.png + :width: 300 px + + History of values of parameters, ``resinner``, ``resmiddle``, and ``resouter``. + +The optimisation process terminated because succcessive fitness values were within 0.1% of one another.