http://de.evo-art.org/api.php?action=feedcontributions&user=Gbachelier&feedformat=atomde_evolutionary_art_org - Benutzerbeiträge [de]2020-06-05T14:46:04ZBenutzerbeiträgeMediaWiki 1.27.4http://de.evo-art.org/index.php?title=Hauptseite&diff=15464Hauptseite2015-05-13T15:46:51Z<p>Gbachelier: Änderungen von IvaMerceretya (Diskussion) wurden auf die letzte Version von Gbachelier zurückgesetzt</p>
<hr />
<div>Das Ziel dieses Projektes ist die Erstellung einer Fach-Enzyklopädie für den Bereich '''[[Evolutionäre Kunst]]''' (Visuelle Kunst mit Nachbargebieten wie etwa Design und Architektur), die sich hauptsächlich an die primären Stakeholder wie Wissenschaftler, Studenten und Künstler richtet, aber auch von sekundären Stakeholdern wie Kuratoren, Galeristen, Sammlern und Journalisten genutzt werden sollen ohne allgemein kunstinteressierte Personen auszuschließen.<br />
<br />
In der Enzyklopädie sollen nicht nur alle verfügbaren [[Literatur_zur_Evolution%C3%A4ren_Kunst | Literaturreferenzen]] zur Evolutionären Kunst gesammelt werden, sondern aus unterschiedlichen Gründen in gewissem Umfang auch Literatur angrenzender Gebiete. Hierzu gehören: <br />
* Evolutionäre Bildbearbeitung ([[Image Editing]]) und Bildverarbeitung ([[Image Processing]]), da die dort entwickelten Methoden direkte Relevanz für einen künstlerischen Einsatz besitzen. <br />
* [[Computer-Ästhetik]], da Ästhetik als Fitnessfunktion ein zentrales Element der Evolutionären Kunst darstellt. <br />
* [[Generative Kunst]], da alle Anwendungen in der Generativen Kunst auch durch Evolutionäre Kunst durchgeführt und erweitert werden können.<br />
* [[Computer-Kreativität]] im Bereich der visuellen Kunst, da ein langfristiges Ziel der Evolutionären Kunst die Entwicklung autonomer Künstler ([[Artificial Artist]]) umfasst. <br />
* [[Mathematische Kunst]], da Mathematik eine transfinite Fülle von Formen und Strukturen liefert, die für sich genommen eine innere Ästhetik besitzen und weil Evolutionäre Verfahren ein mächtiges Werkzeug zur Exploration der zugrunde liegenden mathematischen Designräumen darstellt. <br />
<br />
Im weiteren Verlauf der Entwicklung des Wikis soll ein Literatur-Repository der verfügbaren und erlaubten Publikationen (Preprints etc.) aufgebaut werden, damit diese Quellen langfristig an einem Ort verfügbar bleiben.<br />
<br />
Aus dem Kernbereich der Literatur zur Evolutionären Kunst sollen alle [[Personen_zur_Evolution%C3%A4ren_Kunst | Personen]] ermittelt werden, die als Wissenschaftler oder Künstler in diesem Feld tätig sind oder waren. <br />
<br />
Weiterhin sollen Links zu [[Projekte_zur_Evolution%C3%A4ren_Kunst | (Web-)Projekten]] und [[Software_zur_Evolution%C3%A4ren_Kunst | Softwarereferenzen]] zur Evolutionären Kunst gesammelt werden. <br />
<br />
Aktuelle Events wie [[Ausstellungen zur Evolutionären Kunst | Ausstellungen]], [[Wettbewerbe zur Evolutionären Kunst | Wettbewerbe]] , [[Awards zur Evolutionären Kunst | Awards]] und [[Crowdfunding zur Evolutionären Kunst | Crowdfundingprojekte]], die einen Bezug zur Evolutionären Kunst besitzen, sollen ebenfalls referenziert werden.<br />
<br />
<br />
= Liste mit =<br />
<br />
* [[Begriffe zur Evolutionären Kunst | Begriffen]]<br />
<br />
* [[Personen zur Evolutionären Kunst | Personen]]<br />
<br />
* [[Konferenzen_und_Workshops_zur_Evolutionären_Kunst | Konferenzen & Workshops]]<br />
<br />
* [[Literatur zur Evolutionären Kunst | Literatur ]]<br />
<br />
* [[Projekte zur Evolutionären Kunst | Projekten]]<br />
<br />
* [[Software zur Evolutionären Kunst | Software]]<br />
<br />
* [[Ausstellungen zur Evolutionären Kunst | Ausstellungen]]<br />
<br />
* [[Wettbewerbe zur Evolutionären Kunst | Wettbewerben]] <br />
<br />
* [[Awards zur Evolutionären Kunst | Awards]]<br />
<br />
* [[Crowdfunding zur Evolutionären Kunst | Crowdfunding]]<br />
<br />
<br />
=Zugang=<br />
<br />
Es existiert ein freier Lesezugang zu allen Seiten der Enzyklopädie. Zum Schutz vor Vandalismus sind die Schreibrechte eingeschränkt. Ein Stakeholder, der an der Entwicklung teilnehmen will, muss sich zunächst registrieren lassen (mit email-Verifikation). Danach muss er eine email an den [[Name_wiki:Impressum | Administrator]] senden, der gegebenenfalls den User in die Gruppe mit Schreibrechten einfügt. <br />
<br />
=Access=<br />
There is free read access to the encyclopedia. To prevent vandalism the write rights are restricted. A stakeholder who want to participate must register first (with email verification). Then he had to send an email to the [[Name_wiki:Impressum | administrator]] who will put the user in the group with writing rights when appropriate.</div>Gbachelierhttp://de.evo-art.org/index.php?title=Hauptseite&diff=15005Hauptseite2015-05-13T13:01:27Z<p>Gbachelier: </p>
<hr />
<div>Das Ziel dieses Projektes ist die Erstellung einer Fach-Enzyklopädie für den Bereich '''[[Evolutionäre Kunst]]''' (Visuelle Kunst mit Nachbargebieten wie etwa Design und Architektur), die sich hauptsächlich an die primären Stakeholder wie Wissenschaftler, Studenten und Künstler richtet, aber auch von sekundären Stakeholdern wie Kuratoren, Galeristen, Sammlern und Journalisten genutzt werden sollen ohne allgemein kunstinteressierte Personen auszuschließen.<br />
<br />
In der Enzyklopädie sollen nicht nur alle verfügbaren [[Literatur_zur_Evolution%C3%A4ren_Kunst | Literaturreferenzen]] zur Evolutionären Kunst gesammelt werden, sondern aus unterschiedlichen Gründen in gewissem Umfang auch Literatur angrenzender Gebiete. Hierzu gehören: <br />
* Evolutionäre Bildbearbeitung ([[Image Editing]]) und Bildverarbeitung ([[Image Processing]]), da die dort entwickelten Methoden direkte Relevanz für einen künstlerischen Einsatz besitzen. <br />
* [[Computer-Ästhetik]], da Ästhetik als Fitnessfunktion ein zentrales Element der Evolutionären Kunst darstellt. <br />
* [[Generative Kunst]], da alle Anwendungen in der Generativen Kunst auch durch Evolutionäre Kunst durchgeführt und erweitert werden können.<br />
* [[Computer-Kreativität]] im Bereich der visuellen Kunst, da ein langfristiges Ziel der Evolutionären Kunst die Entwicklung autonomer Künstler ([[Artificial Artist]]) umfasst. <br />
* [[Mathematische Kunst]], da Mathematik eine transfinite Fülle von Formen und Strukturen liefert, die für sich genommen eine innere Ästhetik besitzen und weil Evolutionäre Verfahren ein mächtiges Werkzeug zur Exploration der zugrunde liegenden mathematischen Designräumen darstellt. <br />
<br />
Im weiteren Verlauf der Entwicklung des Wikis soll ein Literatur-Repository der verfügbaren und erlaubten Publikationen (Preprints etc.) aufgebaut werden, damit diese Quellen langfristig an einem Ort verfügbar bleiben.<br />
<br />
Aus dem Kernbereich der Literatur zur Evolutionären Kunst sollen alle [[Personen_zur_Evolution%C3%A4ren_Kunst | Personen]] ermittelt werden, die als Wissenschaftler oder Künstler in diesem Feld tätig sind oder waren. <br />
<br />
Weiterhin sollen Links zu [[Projekte_zur_Evolution%C3%A4ren_Kunst | (Web-)Projekten]] und [[Software_zur_Evolution%C3%A4ren_Kunst | Softwarereferenzen]] zur Evolutionären Kunst gesammelt werden. <br />
<br />
Aktuelle Events wie [[Ausstellungen zur Evolutionären Kunst | Ausstellungen]], [[Wettbewerbe zur Evolutionären Kunst | Wettbewerbe]] , [[Awards zur Evolutionären Kunst | Awards]] und [[Crowdfunding zur Evolutionären Kunst | Crowdfundingprojekte]], die einen Bezug zur Evolutionären Kunst besitzen, sollen ebenfalls referenziert werden.<br />
<br />
<br />
= Liste mit =<br />
<br />
* [[Begriffe zur Evolutionären Kunst | Begriffen]]<br />
<br />
* [[Personen zur Evolutionären Kunst | Personen]]<br />
<br />
* [[Konferenzen_und_Workshops_zur_Evolutionären_Kunst | Konferenzen & Workshops]]<br />
<br />
* [[Literatur zur Evolutionären Kunst | Literatur ]]<br />
<br />
* [[Projekte zur Evolutionären Kunst | Projekten]]<br />
<br />
* [[Software zur Evolutionären Kunst | Software]]<br />
<br />
* [[Ausstellungen zur Evolutionären Kunst | Ausstellungen]]<br />
<br />
* [[Wettbewerbe zur Evolutionären Kunst | Wettbewerben]] <br />
<br />
* [[Awards zur Evolutionären Kunst | Awards]]<br />
<br />
* [[Crowdfunding zur Evolutionären Kunst | Crowdfunding]]<br />
<br />
<br />
=Zugang=<br />
<br />
Es existiert ein freier Lesezugang zu allen Seiten der Enzyklopädie. Zum Schutz vor Vandalismus sind die Schreibrechte eingeschränkt. Ein Stakeholder, der an der Entwicklung teilnehmen will, muss sich zunächst registrieren lassen (mit email-Verifikation). Danach muss er eine email an den [[Name_wiki:Impressum | Administrator]] senden, der gegebenenfalls den User in die Gruppe mit Schreibrechten einfügt. <br />
<br />
=Access=<br />
There is free read access to the encyclopedia. To prevent vandalism the write rights are restricted. A stakeholder who want to participate must register first (with email verification). Then he had to send an email to the [[Name_wiki:Impressum | administrator]] who will put the user in the group with writing rights when appropriate.</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=14745Exploring a Design Space for Patterns and Tilings Competition 20152015-05-13T10:32:21Z<p>Gbachelier: /* Public Relation strategy for the Competition */</p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]], [[#Note to pattern | Note to pattern]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a proof of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images) and there is a [[CRMT-bitmap-image-interpreter | reference implementation for an CRMT-bitmap-image-interpreter]] in [http://www.imagemagick.org/script/perl-magick.php PerlMagick]; for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with PearlMagick see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the CMRT command list approach. The environment must be open source or at least freely available and all settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image from the [http://www.tilingsearch.org/ Tiling Database] by Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length which is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce closed forms from measures. The tiles in the Tiling Database are available as hight quality PDF (EPS) so they can be processed in an vector graphic program. This leads to the hypothesis that there are automatic methods to extract the prototiles (vector objects) that are easier and more exact than extraction from hight resolution bitmap images. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. Even the different coloring of the prototiles in the hight quality PDFs could be used to define different protototile types. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Registration of the competition can be made between 01.05.2015 and 01.11.2015. <br />
: Backup-Strategy: Use a competition Web Site like [https://www.kaggle.com/ Kaggle] if no registrations or no serious registrations are made and extend the other dates. <br />
<br />
* Between 01.11.2015 and 15.01.2016 contributions can be made. <br />
<br />
* Announcement of the winner is 15.04.2016. <br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info (24.4.2015)<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 (03.05.2015)<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users (04.05.2015)<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users (04.05.2015)<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab (04.05.2015)<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker (06.05.2015)<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Machine Learning '''<br />
** Google Machine Learning Group: https://groups.google.com/forum/#!forum/ml-news (03.05.2015)<br />
** Yahoo Machine Learning Group: https://groups.yahoo.com/neo/groups/machine-learning/info (26.04.2015)<br />
** Standford ML List: http://cll.stanford.edu/mllist/<br />
** ml-worldwide: https://mailman.cc.gatech.edu/mailman/listinfo/ml-worldwide<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Imape Processing '''<br />
** comp.graphics.algorithms (11.05.2015)<br />
** de.comp.graphik (11.05.2015)<br />
** sci.image.processing (11.05.2015)<br />
<br />
<br />
<br />
* '''Mail in mailing lists (or forums) of Image Editing Libaries and Software '''<br />
** Image Magick: http://www.imagemagick.org/discourse-server (08.05.2015)<br />
** GIMP: https://mail.gnome.org/mailman/listinfo/gimp-developer-list (08.05.2015)<br />
** Inkscape: https://lists.sourceforge.net/lists/listinfo/inkscape-devel (-)<br />
** Photoshop: alt.graphics.photoshop (11.05.2015)<br />
** Photoshop: comp.graphics.apps.photoshop (06.05.2015)<br />
** FilterForge: https://www.filterforge.com/forum/ (11.05.2015)<br />
** Illustrator: alt.graphics.illustrator: (11.05.2015)<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Mathematics (Geometry) '''<br />
** sci.math: (06.05.2015)<br />
<br />
<br />
* '''Twitter'''<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt (27.04.2015)<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier: https://www.researchgate.net/post/How_can_I_promote_a_periodical_programming_competition_involving_Evolutionary_Computation_Machine_Learning_Mathematics_and_Visual_Arts<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab (-)<br />
<br />
<br />
* '''Post in online forum'''<br />
** MS Azure Forum: https://social.msdn.microsoft.com/forums/azure/en-US/home?forum=MachineLearning (-)<br />
<br />
<br />
* '''Use a Machine Learning Competition Web Site'''<br />
** https://www.kaggle.com/ <br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/ (-)<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation Editor-in-Chief: Hans-Georg Beyer (Hans-Georg.Beyer ät fhv.at)<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines Editor-in-Chief: Lee Spector (lspector ät hampshire.edu)<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts Editor-in-Chief: Craig Kaplan (csk ät uwaterloo.ca)<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with extended or other fitness conditions. It is argued that the 2-objective fitness condition is too weak and as a consequence produces too large Pereto sets. To counteract this one or more additional fitness conditions should be introduced for example that recognize symmetries. Another large field is the definition of appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet.<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to pattern==<br />
As a wide ranging working definition of (static) pattern a composition of shapes (or prototiles) is used here. With the attributes gap and overlap there is a classification with four possible types of static patterns:<br />
# gap ∧ overlap<br />
# ¬gap ∧ overlap<br />
# gap ∧ ¬overlap => (generalized) tangram <br />
# ¬gap ∧ ¬overlap => tiles<br />
<br />
Considering a dynamic of patterns the attributes number and form of shapes lead to an additional classification. Let n be the assertion "number of shapes is constant" and f be the assertion "form of shapes is constant" there is a classification with four possible types of dynamic patterns; see [[#Future Directions | Future Directions]]: <br />
# n ∧ f => different configurations of the same shapes<br />
# ¬n ∧ f => growing (and/or shrinking) patterns (see for example: [http://img.webme.com/pic/s/sarah-blumroeder/fibon.jpg Rune Mields: Evolution: Progression + Symmetry (Fibonacci)])<br />
# n ∧ ¬f => deforming patterns<br />
# ¬n ∧ ¬f => subdivision patterns<br />
<br />
One can combine every of the four dynamic pattern types with each of the four static pattern types, for example: <br />
# (n ∧ f) ∧ (gap ∧ ¬overlap) as a generalized tangram that changes it configuration at every time step where the number and the form of the shapes remain constant<br />
# (n ∧ ¬f) ∧ (gap ∧ ¬overlap) as a generalized tangram that changes it configuration at every time step where the number of the shapes remain constant but at least one shape alter its form from one time step to the next<br />
<br />
<br />
It is also possible to define different design spaces of hyderdynamic patterns where every point at such a desin space is a sequence of pattern types. For example if one selects at every time step one of the four dynamic pattern types one gets a nf-Sequence:<br />
<br />
: nf-Sequence = (nf(t), t = 1, ... | nf(t) ∈ {n ∧ f, ¬n ∧ f, n ∧ ¬f, ¬n ∧ ¬f}).<br />
<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The '''definition of gap''' is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The '''definition of overlap''' is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
: The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
: Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
: In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
: Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
: Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction. <br />
<br />
* '''Weakness of fitness condition''': For the general exploration of the design space (not the reproduction of known tiles or tile images) the fitness condition might be too weak resulting in a too large Pareto front. Considering pmm with a square prototile there are 4 possible 90° rotated variants of the prototile for every 4 positions in the tile. The Pareto set has 16 elements if only rotation is taken into account where only one is the symmetry group pmm that con not distinguished from the other elements without an additional fitness condition. And if translation is considered besides rotation the Pareto set is not manageable because it is larger than the number of pixels in the pattern image.<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three.<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=9363Exploring a Design Space for Patterns and Tilings Competition 20152015-05-11T19:38:58Z<p>Gbachelier: /* Public Relation strategy for the Competition */</p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]], [[#Note to pattern | Note to pattern]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a proof of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images) and there is a [[CRMT-bitmap-image-interpreter | reference implementation for an CRMT-bitmap-image-interpreter]] in [http://www.imagemagick.org/script/perl-magick.php PerlMagick]; for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with PearlMagick see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the CMRT command list approach. The environment must be open source or at least freely available and all settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image from the [http://www.tilingsearch.org/ Tiling Database] by Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length which is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce closed forms from measures. The tiles in the Tiling Database are available as hight quality PDF (EPS) so they can be processed in an vector graphic program. This leads to the hypothesis that there are automatic methods to extract the prototiles (vector objects) that are easier and more exact than extraction from hight resolution bitmap images. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. Even the different coloring of the prototiles in the hight quality PDFs could be used to define different protototile types. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Registration of the competition can be made between 01.05.2015 and 01.11.2015. <br />
: Backup-Strategy: Use a competition Web Site like [https://www.kaggle.com/ Kaggle] if no registrations or no serious registrations are made and extend the other dates. <br />
<br />
* Between 01.11.2015 and 15.01.2016 contributions can be made. <br />
<br />
* Announcement of the winner is 15.04.2016. <br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info (24.4.2015)<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 (03.05.2015)<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users (04.05.2015)<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users (04.05.2015)<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab (04.05.2015)<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker (06.05.2015)<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Machine Learning '''<br />
** Google Machine Learning Group: https://groups.google.com/forum/#!forum/ml-news (03.05.2015)<br />
** Yahoo Machine Learning Group: https://groups.yahoo.com/neo/groups/machine-learning/info (26.04.2015)<br />
** Standford ML List: http://cll.stanford.edu/mllist/<br />
** ml-worldwide: https://mailman.cc.gatech.edu/mailman/listinfo/ml-worldwide<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Imape Processing '''<br />
** comp.graphics.algorithms (11.05.2015)<br />
** de.comp.graphik (11.05.2015)<br />
** sci.image.processing (11.05.2015)<br />
<br />
<br />
<br />
* '''Mail in mailing lists (or forums) of Image Editing Libaries and Software '''<br />
** Image Magick: http://www.imagemagick.org/discourse-server (08.05.2015)<br />
** GIMP: https://mail.gnome.org/mailman/listinfo/gimp-developer-list (08.05.2015)<br />
** Inkscape: https://lists.sourceforge.net/lists/listinfo/inkscape-devel (-)<br />
** Photoshop: alt.graphics.photoshop (11.05.2015)<br />
** Photoshop: comp.graphics.apps.photoshop (06.05.2015)<br />
** FilterForge: https://www.filterforge.com/forum/ (11.05.2015)<br />
** Illustrator: alt.graphics.illustrator: (11.05.2015)<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Mathematics (Geometry) '''<br />
** sci.math: (06.05.2015)<br />
<br />
<br />
* '''Twitter'''<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt (27.04.2015)<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier: https://www.researchgate.net/post/How_can_I_promote_a_periodical_programming_competition_involving_Evolutionary_Computation_Machine_Learning_Mathematics_and_Visual_Arts<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab (-)<br />
<br />
<br />
* '''Post in online forum'''<br />
** MS Azure Forum: https://social.msdn.microsoft.com/forums/azure/en-US/home?forum=MachineLearning (-)<br />
<br />
<br />
* '''Use a Machine Learning Competition Web Site'''<br />
** https://www.kaggle.com/ <br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/ (-)<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines Editor-in-Chief: Lee Spector (lspector ät hampshire.edu)<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts Editor-in-Chief: Craig Kaplan<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to pattern==<br />
As a wide ranging working definition of (static) pattern a composition of shapes (or prototiles) is used here. With the attributes gap and overlap there is a classification with four possible types of static patterns:<br />
# gap ∧ overlap<br />
# ¬gap ∧ overlap<br />
# gap ∧ ¬overlap => (generalized) tangram <br />
# ¬gap ∧ ¬overlap => tiles<br />
<br />
Considering a dynamic of patterns the attributes number and form of shapes lead to an additional classification. Let n be the assertion "number of shapes is constant" and f be the assertion "form of shapes is constant" there is a classification with four possible types of dynamic patterns; see [[#Future Directions | Future Directions]]: <br />
# n ∧ f => different configurations of the same shapes<br />
# ¬n ∧ f => growing (and/or shrinking) patterns (see for example: [http://img.webme.com/pic/s/sarah-blumroeder/fibon.jpg Rune Mields: Evolution: Progression + Symmetry (Fibonacci)])<br />
# n ∧ ¬f => deforming patterns<br />
# ¬n ∧ ¬f => subdivision patterns<br />
<br />
One can combine every of the four dynamic pattern types with each of the four static pattern types, for example: <br />
# (n ∧ f) ∧ (gap ∧ ¬overlap) as a generalized tangram that changes it configuration at every time step where the number and the form of the shapes remain constant<br />
# (n ∧ ¬f) ∧ (gap ∧ ¬overlap) as a generalized tangram that changes it configuration at every time step where the number of the shapes remain constant but at least one shape alter its form from one time step to the next<br />
<br />
<br />
It is also possible to define different design spaces of hyderdynamic patterns where every point at such a desin space is a sequence of pattern types. For example if one selects at every time step one of the four dynamic pattern types one gets a nf-Sequence:<br />
<br />
: nf-Sequence = (nf(t), t = 1, ... | nf(t) ∈ {n ∧ f, ¬n ∧ f, n ∧ ¬f, ¬n ∧ ¬f}).<br />
<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The '''definition of gap''' is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The '''definition of overlap''' is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
: The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
: Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
: In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
: Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
: Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction. <br />
<br />
* '''Weakness of fitness condition''': For the general exploration of the design space (not the reproduction of known tiles or tile images) the fitness condition might be too weak resulting in a too large Pareto front. Considering pmm with a square prototile there are 4 possible 90° rotated variants of the prototile for every 4 positions in the tile. The Pareto set has 16 elements if only rotation is taken into account where only one is the symmetry group pmm that con not distinguished from the other elements without an additional fitness condition. And if translation is considered besides rotation the Pareto set is not manageable because it is larger than the number of pixels in the pattern image.<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three.<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=EvoMUSART_2015&diff=4729EvoMUSART 20152015-04-30T20:16:29Z<p>Gbachelier: /* Table of contents (xx chapters) */</p>
<hr />
<div>== Reference ==<br />
{{LitBook |Autor = [[Colin Johnson]] (Herausgeber), [[Adrian Carballal]] (Herausgeber), [[João Correia]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Third European Conference, EvoMUSART 2015 (LNCS 9027) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2015 | ISBN = 978-3-319-16497-7 | Seiten = 235 }}<br />
<br />
== DOI ==<br />
http://link.springer.com/book/10.1007%2F978-3-319-16498-4<br />
<br />
== Abstract ==<br />
This book constitutes the refereed proceedings of the 4th International Conference on Biologically Inspired Music, Sound, Art and Design, EvoMUSART 2015, held in Copenhagen, Denmark, in April 2015, co-located with the Evo* 2015 events EuroGP, EvoCOP and Evo Applications. The 23 revised full papers presented were carefully reviewed and selected from 43 submissions. They cover a wide range of topics and application areas, including generative approaches to music, graphics, game content and narrative; music information retrieval; computational aesthetics; the mechanics of interactive evolutionary computation and the art theory of evolutionary computation.<br />
<br />
== Extended Abstract ==<br />
<br />
== Reviews==<br />
<br />
== Bibtex == <br />
<br />
== Table of contents (23 chapters) ==<br />
[http://link.springer.com/content/pdf/bfm%3A978-3-319-16498-4%2F1.pdf Front Matter]<br />
<br />
Asmaa Majid Al-Rifaie, Mohammad Majid Al-Rifaie: Generative Music with Stochastic Diffusion Search. In: [[EvoMUSART 2015]], 1-14. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_1<br />
<br />
Edward Braund, Eduardo Miranda: Music with Unconventional Computing: Towards a Step Sequencer from Plasmodium of Physarum Polycephalum. In: [[EvoMUSART 2015]], 15-26. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_2<br />
<br />
[[Allan Campbell]], [[Vic Ciesielksi]], [[A. K. Qin]]: [[Feature Discovery by Deep Learning for Aesthetic Analysis of Evolved Abstract Images]]. In: [[EvoMUSART 2015]], 27-38. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_3<br />
<br />
João Cordeiro: FuXi: A Fish-Driven Instrument for Real-Time Music Performance. In: [[EvoMUSART 2015]], 39-49. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_4<br />
<br />
Clelia De Felice, Roberto De Prisco, Delfina Malandrino, Gianluca Zaccagnino…: Chorale Music Splicing System: An Algorithmic Music Composer Inspired by Molecular Splicing. In: [[EvoMUSART 2015]], 50-61. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_5<br />
<br />
Jared Drayton, Eduardo Miranda: Towards an Evolutionary Computational Approach to Articulatory Vocal Synthesis with PRAAT. In: [[EvoMUSART 2015]], 62-70. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_6<br />
<br />
Juan Manuel Escalante: The Sound Digestive System: A Strategy for Music and Sound Composition. In: [[EvoMUSART 2015]], 71-77. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_7<br />
<br />
[[Gary Greenfield]]: [[Avoidance Drawings Evolved Using Virtual Drawing Robots]]. In: [[EvoMUSART 2015]], 78-88. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_8<br />
<br />
David M. Hofmann: A Genetic Programming Approach to Generating Musical Compositions. In: [[EvoMUSART 2015]], 89-100. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_9<br />
<br />
Amy K. Hoover, William Cachia, Antonios Liapis, Georgios N. Yannakakis: AudioInSpace: Exploring the Creative Fusion of Generative Audio, Visuals and Gameplay. In: [[EvoMUSART 2015]], 101-112. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_10<br />
<br />
Seunghun Kim, Juhan Nam, Graham Wakefield: Toward Certain Sonic Properties of an Audio Feedback System by Evolutionary Control of Second-Order Structures. In: [[EvoMUSART 2015]], 113-124. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_11<br />
<br />
Christoph Klemmt, Rajat Sodhi: Echo. In: [[EvoMUSART 2015]], 125-135. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_12<br />
<br />
[[Tiago Martins]], [[João Correia]], [[Ernesto Costa]], [[Penousal Machado]]: [[Evotype: Evolutionary Type Design]]. In: [[EvoMUSART 2015]], 136-147. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_13<br />
<br />
[[Kelly Moylan]], [[Brian J. Ross]]: [[Interior Illumination Design Using Genetic Programming]]. In: [[EvoMUSART 2015]], 148-160. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_14<br />
<br />
Dave Murray-Rust, Rocio von Jungenfeld: Lichtsuchende: Exploring the Emergence of a Cybernetic Society. In: [[EvoMUSART 2015]], 161-174. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_15<br />
<br />
María Navarro, Marcelo Caetano, Gilberto Bernardes, Leandro Nunes de Castro…: Automatic Generation of Chord Progressions with an Artificial Immune System. In: [[EvoMUSART 2015]], 175-186. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_16<br />
<br />
[[Kate Reed]], [[Duncan F. Gillies]]: [[Evolving Diverse Design Populations Using Fitness Sharing and Random Forest Based Fitness Approximation]]. In: [[EvoMUSART 2015]], 187-199. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_17<br />
<br />
Marco Scirea, Mark J. Nelson, Julian Togelius: Moody Music Generator: Characterising Control Parameters Using Crowdsourcing. In: [[EvoMUSART 2015]], 200-211. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_18<br />
<br />
Anna Shvets, Myriam Desainte-Catherine: Schemographe : Application for a New Representation Technique and Methodology of Analysis in Tonal Harmony. In: [[EvoMUSART 2015]], 212-223. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_19<br />
<br />
[[Wim van Eck]], [[Maarten H. Lamers]]: [[Biological Content Generation: Evolving Game Terrains Through Living Organisms]]. In: [[EvoMUSART 2015]], 224-235. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_20<br />
<br />
Igor Vatolkin, Günter Rudolph, Claus Weihs: Interpretability of Music Classification as a Criterion for Evolutionary Multi-objective Feature Selection. In: [[EvoMUSART 2015]], 236-248. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_21<br />
<br />
Valerio Velardo, Mauro Vallati: On the Stylistic Evolution of a Society of Virtual Melody Composers. In: [[EvoMUSART 2015]], 249-260. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_22<br />
<br />
[[Jinhong Zhang]], [[Rasmus Taarnby]], [[Antonios Liapis]], [[Sebastian Risi]]: [[DrawCompileEvolve: Sparking Interactive Evolutionary Art with Human Creations]]. In: [[EvoMUSART 2015]], 261-273. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_23<br />
<br />
[http://link.springer.com/content/pdf/bbm%3A978-3-319-16498-4%2F1.pdf Back Matter] 275-275<br />
<br />
== Links ==<br />
=== Full Text === <br />
[extern file]<br />
<br />
[[intern file]]<br />
<br />
=== Sonstige Links ===</div>Gbachelierhttp://de.evo-art.org/index.php?title=EvoMUSART_2015&diff=4728EvoMUSART 20152015-04-30T15:46:19Z<p>Gbachelier: </p>
<hr />
<div>== Reference ==<br />
{{LitBook |Autor = [[Colin Johnson]] (Herausgeber), [[Adrian Carballal]] (Herausgeber), [[João Correia]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Third European Conference, EvoMUSART 2015 (LNCS 9027) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2015 | ISBN = 978-3-319-16497-7 | Seiten = 235 }}<br />
<br />
== DOI ==<br />
http://link.springer.com/book/10.1007%2F978-3-319-16498-4<br />
<br />
== Abstract ==<br />
This book constitutes the refereed proceedings of the 4th International Conference on Biologically Inspired Music, Sound, Art and Design, EvoMUSART 2015, held in Copenhagen, Denmark, in April 2015, co-located with the Evo* 2015 events EuroGP, EvoCOP and Evo Applications. The 23 revised full papers presented were carefully reviewed and selected from 43 submissions. They cover a wide range of topics and application areas, including generative approaches to music, graphics, game content and narrative; music information retrieval; computational aesthetics; the mechanics of interactive evolutionary computation and the art theory of evolutionary computation.<br />
<br />
== Extended Abstract ==<br />
<br />
== Reviews==<br />
<br />
== Bibtex == <br />
<br />
== Table of contents (xx chapters) ==<br />
[http://link.springer.com/content/pdf/bfm%3A978-3-319-16498-4%2F1.pdf Front Matter]<br />
<br />
Asmaa Majid Al-Rifaie, Mohammad Majid Al-Rifaie: Generative Music with Stochastic Diffusion Search. In: [[EvoMUSART 2015]], 1-14. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_1<br />
<br />
Edward Braund, Eduardo Miranda: Music with Unconventional Computing: Towards a Step Sequencer from Plasmodium of Physarum Polycephalum. In: [[EvoMUSART 2015]], 15-26. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_2<br />
<br />
[[Allan Campbell]], [[Vic Ciesielksi]], [[A. K. Qin]]: [[Feature Discovery by Deep Learning for Aesthetic Analysis of Evolved Abstract Images]]. In: [[EvoMUSART 2015]], 27-38. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_3<br />
<br />
João Cordeiro: FuXi: A Fish-Driven Instrument for Real-Time Music Performance. In: [[EvoMUSART 2015]], 39-49. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_4<br />
<br />
Clelia De Felice, Roberto De Prisco, Delfina Malandrino, Gianluca Zaccagnino…: Chorale Music Splicing System: An Algorithmic Music Composer Inspired by Molecular Splicing. In: [[EvoMUSART 2015]], 50-61. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_5<br />
<br />
Jared Drayton, Eduardo Miranda: Towards an Evolutionary Computational Approach to Articulatory Vocal Synthesis with PRAAT. In: [[EvoMUSART 2015]], 62-70. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_6<br />
<br />
Juan Manuel Escalante: The Sound Digestive System: A Strategy for Music and Sound Composition. In: [[EvoMUSART 2015]], 71-77. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_7<br />
<br />
[[Gary Greenfield]]: [[Avoidance Drawings Evolved Using Virtual Drawing Robots]]. In: [[EvoMUSART 2015]], 78-88. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_8<br />
<br />
David M. Hofmann: A Genetic Programming Approach to Generating Musical Compositions. In: [[EvoMUSART 2015]], 89-100. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_9<br />
<br />
Amy K. Hoover, William Cachia, Antonios Liapis, Georgios N. Yannakakis: AudioInSpace: Exploring the Creative Fusion of Generative Audio, Visuals and Gameplay. In: [[EvoMUSART 2015]], 101-112. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_10<br />
<br />
Seunghun Kim, Juhan Nam, Graham Wakefield: Toward Certain Sonic Properties of an Audio Feedback System by Evolutionary Control of Second-Order Structures. In: [[EvoMUSART 2015]], 113-124. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_11<br />
<br />
Christoph Klemmt, Rajat Sodhi: Echo. In: [[EvoMUSART 2015]], 125-135. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_12<br />
<br />
[[Tiago Martins]], [[João Correia]], [[Ernesto Costa]], [[Penousal Machado]]: [[Evotype: Evolutionary Type Design]]. In: [[EvoMUSART 2015]], 136-147. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_13<br />
<br />
[[Kelly Moylan]], [[Brian J. Ross]]: [[Interior Illumination Design Using Genetic Programming]]. In: [[EvoMUSART 2015]], 148-160. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_14<br />
<br />
Dave Murray-Rust, Rocio von Jungenfeld: Lichtsuchende: Exploring the Emergence of a Cybernetic Society. In: [[EvoMUSART 2015]], 161-174. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_15<br />
<br />
María Navarro, Marcelo Caetano, Gilberto Bernardes, Leandro Nunes de Castro…: Automatic Generation of Chord Progressions with an Artificial Immune System. In: [[EvoMUSART 2015]], 175-186. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_16<br />
<br />
[[Kate Reed]], [[Duncan F. Gillies]]: [[Evolving Diverse Design Populations Using Fitness Sharing and Random Forest Based Fitness Approximation]]. In: [[EvoMUSART 2015]], 187-199. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_17<br />
<br />
Marco Scirea, Mark J. Nelson, Julian Togelius: Moody Music Generator: Characterising Control Parameters Using Crowdsourcing. In: [[EvoMUSART 2015]], 200-211. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_18<br />
<br />
Anna Shvets, Myriam Desainte-Catherine: Schemographe : Application for a New Representation Technique and Methodology of Analysis in Tonal Harmony. In: [[EvoMUSART 2015]], 212-223. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_19<br />
<br />
[[Wim van Eck]], [[Maarten H. Lamers]]: [[Biological Content Generation: Evolving Game Terrains Through Living Organisms]]. In: [[EvoMUSART 2015]], 224-235. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_20<br />
<br />
Igor Vatolkin, Günter Rudolph, Claus Weihs: Interpretability of Music Classification as a Criterion for Evolutionary Multi-objective Feature Selection. In: [[EvoMUSART 2015]], 236-248. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_21<br />
<br />
Valerio Velardo, Mauro Vallati: On the Stylistic Evolution of a Society of Virtual Melody Composers. In: [[EvoMUSART 2015]], 249-260. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_22<br />
<br />
[[Jinhong Zhang]], [[Rasmus Taarnby]], [[Antonios Liapis]], [[Sebastian Risi]]: [[DrawCompileEvolve: Sparking Interactive Evolutionary Art with Human Creations]]. In: [[EvoMUSART 2015]], 261-273. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_23<br />
<br />
[http://link.springer.com/content/pdf/bbm%3A978-3-319-16498-4%2F1.pdf Back Matter] 275-275<br />
<br />
<br />
== Links ==<br />
=== Full Text === <br />
[extern file]<br />
<br />
[[intern file]]<br />
<br />
=== Sonstige Links ===</div>Gbachelierhttp://de.evo-art.org/index.php?title=EvoMUSART_2015&diff=4727EvoMUSART 20152015-04-30T15:38:36Z<p>Gbachelier: </p>
<hr />
<div>== Reference ==<br />
{{LitBook |Autor = [[Colin Johnson]] (Herausgeber), [[Adrian Carballal]] (Herausgeber), [[João Correia]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Third European Conference, EvoMUSART 2015 (LNCS 9027) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2015 | ISBN = 978-3-319-16497-7 | Seiten = 235 }}<br />
<br />
== DOI ==<br />
http://link.springer.com/book/10.1007%2F978-3-319-16498-4<br />
<br />
== Abstract ==<br />
This book constitutes the refereed proceedings of the 4th International Conference on Biologically Inspired Music, Sound, Art and Design, EvoMUSART 2015, held in Copenhagen, Denmark, in April 2015, co-located with the Evo* 2015 events EuroGP, EvoCOP and Evo Applications. The 23 revised full papers presented were carefully reviewed and selected from 43 submissions. They cover a wide range of topics and application areas, including generative approaches to music, graphics, game content and narrative; music information retrieval; computational aesthetics; the mechanics of interactive evolutionary computation and the art theory of evolutionary computation.<br />
<br />
== Extended Abstract ==<br />
<br />
== Reviews==<br />
<br />
== Bibtex == <br />
<br />
== Table of contents (xx chapters) ==<br />
[http://link.springer.com/content/pdf/bfm%3A978-3-319-16498-4%2F1.pdf Front Matter]<br />
<br />
Asmaa Majid Al-Rifaie, Mohammad Majid Al-Rifaie: Generative Music with Stochastic Diffusion Search. In: [[EvoMUSART 2015]], 1-14. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_1<br />
<br />
Edward Braund, Eduardo Miranda: Music with Unconventional Computing: Towards a Step Sequencer from Plasmodium of Physarum Polycephalum. In: [[EvoMUSART 2015]], 15-26. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_2<br />
<br />
[[Allan Campbell]], [[Vic Ciesielksi]], [[A. K. Qin]]: [[Feature Discovery by Deep Learning for Aesthetic Analysis of Evolved Abstract Images]]. In: [[EvoMUSART 2015]], 27-38. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_3<br />
<br />
João Cordeiro: FuXi: A Fish-Driven Instrument for Real-Time Music Performance. In: [[EvoMUSART 2015]], 39-49. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_4<br />
<br />
Clelia De Felice, Roberto De Prisco, Delfina Malandrino, Gianluca Zaccagnino…: Chorale Music Splicing System: An Algorithmic Music Composer Inspired by Molecular Splicing. In: [[EvoMUSART 2015]], 50-61. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_5<br />
<br />
Jared Drayton, Eduardo Miranda: Towards an Evolutionary Computational Approach to Articulatory Vocal Synthesis with PRAAT. In: [[EvoMUSART 2015]], 62-70. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_6<br />
<br />
Juan Manuel Escalante: The Sound Digestive System: A Strategy for Music and Sound Composition. In: [[EvoMUSART 2015]], 71-77. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_7<br />
<br />
[[Gary Greenfield]]: [[Avoidance Drawings Evolved Using Virtual Drawing Robots]]. In: [[EvoMUSART 2015]], 78-88. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_8<br />
<br />
David M. Hofmann: A Genetic Programming Approach to Generating Musical Compositions. In: [[EvoMUSART 2015]], 89-100. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_9<br />
<br />
Amy K. Hoover, William Cachia, Antonios Liapis, Georgios N. Yannakakis: AudioInSpace: Exploring the Creative Fusion of Generative Audio, Visuals and Gameplay. In: [[EvoMUSART 2015]], 101-112. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_10<br />
<br />
Seunghun Kim, Juhan Nam, Graham Wakefield: Toward Certain Sonic Properties of an Audio Feedback System by Evolutionary Control of Second-Order Structures. In: [[EvoMUSART 2015]], 113-124. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_11<br />
<br />
Christoph Klemmt, Rajat Sodhi: Echo. In: [[EvoMUSART 2015]], 125-135. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_12<br />
<br />
[[Tiago Martins]], [[João Correia]], [[Ernesto Costa]], [[Penousal Machado]]: [[Evotype: Evolutionary Type Design]]. In: [[EvoMUSART 2015]], 136-147. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_13<br />
<br />
[[Kelly Moylan]], [[Brian J. Ross]]: [[Interior Illumination Design Using Genetic Programming]]. In: [[EvoMUSART 2015]], 148-160. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_14<br />
<br />
Dave Murray-Rust, Rocio von Jungenfeld: Lichtsuchende: Exploring the Emergence of a Cybernetic Society. In: [[EvoMUSART 2015]], 161-174. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_15<br />
<br />
María Navarro, Marcelo Caetano, Gilberto Bernardes, Leandro Nunes de Castro…: Automatic Generation of Chord Progressions with an Artificial Immune System. In: [[EvoMUSART 2015]], 175-186. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_16<br />
<br />
[[Kate Reed]], [[Duncan F. Gillies]]: [[Evolving Diverse Design Populations Using Fitness Sharing and Random Forest Based Fitness Approximation]]. In: [[EvoMUSART 2015]], 187-199. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_17<br />
<br />
Marco Scirea, Mark J. Nelson, Julian Togelius: Moody Music Generator: Characterising Control Parameters Using Crowdsourcing. In: [[EvoMUSART 2015]], 200-211. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_18<br />
<br />
Anna Shvets, Myriam Desainte-Catherine: Schemographe : Application for a New Representation Technique and Methodology of Analysis in Tonal Harmony. In: [[EvoMUSART 2015]], 212-223. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_19<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
== Links ==<br />
=== Full Text === <br />
[extern file]<br />
<br />
[[intern file]]<br />
<br />
=== Sonstige Links ===</div>Gbachelierhttp://de.evo-art.org/index.php?title=EvoMUSART_2015&diff=4726EvoMUSART 20152015-04-30T15:24:54Z<p>Gbachelier: </p>
<hr />
<div>== Reference ==<br />
{{LitBook |Autor = [[Colin Johnson]] (Herausgeber), [[Adrian Carballal]] (Herausgeber), [[João Correia]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Third European Conference, EvoMUSART 2015 (LNCS 9027) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2015 | ISBN = 978-3-319-16497-7 | Seiten = 235 }}<br />
<br />
== DOI ==<br />
http://link.springer.com/book/10.1007%2F978-3-319-16498-4<br />
<br />
== Abstract ==<br />
This book constitutes the refereed proceedings of the 4th International Conference on Biologically Inspired Music, Sound, Art and Design, EvoMUSART 2015, held in Copenhagen, Denmark, in April 2015, co-located with the Evo* 2015 events EuroGP, EvoCOP and Evo Applications. The 23 revised full papers presented were carefully reviewed and selected from 43 submissions. They cover a wide range of topics and application areas, including generative approaches to music, graphics, game content and narrative; music information retrieval; computational aesthetics; the mechanics of interactive evolutionary computation and the art theory of evolutionary computation.<br />
<br />
== Extended Abstract ==<br />
<br />
== Reviews==<br />
<br />
== Bibtex == <br />
<br />
== Table of contents (xx chapters) ==<br />
[http://link.springer.com/content/pdf/bfm%3A978-3-319-16498-4%2F1.pdf Front Matter]<br />
<br />
Asmaa Majid Al-Rifaie, Mohammad Majid Al-Rifaie: Generative Music with Stochastic Diffusion Search. In: [[EvoMUSART 2015]], 1-14. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_1<br />
<br />
Edward Braund, Eduardo Miranda: Music with Unconventional Computing: Towards a Step Sequencer from Plasmodium of Physarum Polycephalum. In: [[EvoMUSART 2015]], 15-26. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_2<br />
<br />
[[Allan Campbell]], [[Vic Ciesielksi]], [[A. K. Qin]]: [[Feature Discovery by Deep Learning for Aesthetic Analysis of Evolved Abstract Images]]. In: [[EvoMUSART 2015]], 27-38. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_3<br />
<br />
João Cordeiro: FuXi: A Fish-Driven Instrument for Real-Time Music Performance. In: [[EvoMUSART 2015]], 39-49. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_4<br />
<br />
Clelia De Felice, Roberto De Prisco, Delfina Malandrino, Gianluca Zaccagnino…: Chorale Music Splicing System: An Algorithmic Music Composer Inspired by Molecular Splicing. In: [[EvoMUSART 2015]], 50-61. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_5<br />
<br />
Jared Drayton, Eduardo Miranda: Towards an Evolutionary Computational Approach to Articulatory Vocal Synthesis with PRAAT. In: [[EvoMUSART 2015]], 62-70. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_6<br />
<br />
Juan Manuel Escalante: The Sound Digestive System: A Strategy for Music and Sound Composition. In: [[EvoMUSART 2015]], 71-77. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_7<br />
<br />
[[Gary Greenfield]]: [[Avoidance Drawings Evolved Using Virtual Drawing Robots]]. In: [[EvoMUSART 2015]], 78-88. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_8<br />
<br />
David M. Hofmann: A Genetic Programming Approach to Generating Musical Compositions. In: [[EvoMUSART 2015]], 89-100. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_9<br />
<br />
<br />
Amy K. Hoover, William Cachia, Antonios Liapis, Georgios N. Yannakakis: AudioInSpace: Exploring the Creative Fusion of Generative Audio, Visuals and Gameplay. <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
== Links ==<br />
=== Full Text === <br />
[extern file]<br />
<br />
[[intern file]]<br />
<br />
=== Sonstige Links ===</div>Gbachelierhttp://de.evo-art.org/index.php?title=EvoMUSART_2015&diff=4725EvoMUSART 20152015-04-30T15:14:41Z<p>Gbachelier: </p>
<hr />
<div>== Reference ==<br />
{{LitBook |Autor = [[Colin Johnson]] (Herausgeber), [[Adrian Carballal]] (Herausgeber), [[João Correia]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Third European Conference, EvoMUSART 2015 (LNCS 9027) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2015 | ISBN = 978-3-319-16497-7 | Seiten = 235 }}<br />
<br />
== DOI ==<br />
http://link.springer.com/book/10.1007%2F978-3-319-16498-4<br />
<br />
== Abstract ==<br />
This book constitutes the refereed proceedings of the 4th International Conference on Biologically Inspired Music, Sound, Art and Design, EvoMUSART 2015, held in Copenhagen, Denmark, in April 2015, co-located with the Evo* 2015 events EuroGP, EvoCOP and Evo Applications. The 23 revised full papers presented were carefully reviewed and selected from 43 submissions. They cover a wide range of topics and application areas, including generative approaches to music, graphics, game content and narrative; music information retrieval; computational aesthetics; the mechanics of interactive evolutionary computation and the art theory of evolutionary computation.<br />
<br />
== Extended Abstract ==<br />
<br />
== Reviews==<br />
<br />
== Bibtex == <br />
<br />
== Table of contents (xx chapters) ==<br />
[http://link.springer.com/content/pdf/bfm%3A978-3-319-16498-4%2F1.pdf Front Matter]<br />
<br />
Asmaa Majid Al-Rifaie, Mohammad Majid Al-Rifaie: Generative Music with Stochastic Diffusion Search. In: [[EvoMUSART 2015]], 1-14. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_1<br />
<br />
Edward Braund, Eduardo Miranda: Music with Unconventional Computing: Towards a Step Sequencer from Plasmodium of Physarum Polycephalum. In: [[EvoMUSART 2015]], 15-26. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_2<br />
<br />
[[Allan Campbell]], [[Vic Ciesielksi]], [[A. K. Qin]]: [[Feature Discovery by Deep Learning for Aesthetic Analysis of Evolved Abstract Images]]. In: [[EvoMUSART 2015]], 27-38. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_3<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
== Links ==<br />
=== Full Text === <br />
[extern file]<br />
<br />
[[intern file]]<br />
<br />
=== Sonstige Links ===</div>Gbachelierhttp://de.evo-art.org/index.php?title=EvoMUSART_2015&diff=4724EvoMUSART 20152015-04-30T09:26:29Z<p>Gbachelier: /* Table of contents (xx chapters) */</p>
<hr />
<div>== Reference ==<br />
{{LitBook |Autor = [[Colin Johnson]] (Herausgeber), [[Adrian Carballal]] (Herausgeber), [[João Correia]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Third European Conference, EvoMUSART 2015 (LNCS 9027) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2015 | ISBN = 978-3-319-16497-7 | Seiten = 235 }}<br />
<br />
== DOI ==<br />
http://link.springer.com/book/10.1007%2F978-3-319-16498-4<br />
<br />
== Abstract ==<br />
This book constitutes the refereed proceedings of the 4th International Conference on Biologically Inspired Music, Sound, Art and Design, EvoMUSART 2015, held in Copenhagen, Denmark, in April 2015, co-located with the Evo* 2015 events EuroGP, EvoCOP and Evo Applications. The 23 revised full papers presented were carefully reviewed and selected from 43 submissions. They cover a wide range of topics and application areas, including generative approaches to music, graphics, game content and narrative; music information retrieval; computational aesthetics; the mechanics of interactive evolutionary computation and the art theory of evolutionary computation.<br />
<br />
== Extended Abstract ==<br />
<br />
== Reviews==<br />
<br />
== Bibtex == <br />
<br />
== Table of contents (xx chapters) ==<br />
[http://link.springer.com/content/pdf/bfm%3A978-3-319-16498-4%2F1.pdf | Front Matter]<br />
<br />
[[Asmaa Majid Al-Rifaie]], [[Mohammad Majid Al-Rifaie]]: Generative Music with Stochastic Diffusion Search. In: [[EvoMUSART 2015]], 1-14. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_1<br />
<br />
== Links ==<br />
=== Full Text === <br />
[extern file]<br />
<br />
[[intern file]]<br />
<br />
=== Sonstige Links ===</div>Gbachelierhttp://de.evo-art.org/index.php?title=EvoMUSART_2015&diff=4723EvoMUSART 20152015-04-30T09:25:56Z<p>Gbachelier: Die Seite wurde neu angelegt: „== Reference == {{LitBook |Autor = Colin Johnson (Herausgeber), Adrian Carballal (Herausgeber), João Correia (Herausgeber) |Titel = Evolutionary a…“</p>
<hr />
<div>== Reference ==<br />
{{LitBook |Autor = [[Colin Johnson]] (Herausgeber), [[Adrian Carballal]] (Herausgeber), [[João Correia]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Third European Conference, EvoMUSART 2015 (LNCS 9027) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2015 | ISBN = 978-3-319-16497-7 | Seiten = 235 }}<br />
<br />
== DOI ==<br />
http://link.springer.com/book/10.1007%2F978-3-319-16498-4<br />
<br />
== Abstract ==<br />
This book constitutes the refereed proceedings of the 4th International Conference on Biologically Inspired Music, Sound, Art and Design, EvoMUSART 2015, held in Copenhagen, Denmark, in April 2015, co-located with the Evo* 2015 events EuroGP, EvoCOP and Evo Applications. The 23 revised full papers presented were carefully reviewed and selected from 43 submissions. They cover a wide range of topics and application areas, including generative approaches to music, graphics, game content and narrative; music information retrieval; computational aesthetics; the mechanics of interactive evolutionary computation and the art theory of evolutionary computation.<br />
<br />
== Extended Abstract ==<br />
<br />
== Reviews==<br />
<br />
== Bibtex == <br />
<br />
== Table of contents (xx chapters) ==<br />
[[http://link.springer.com/content/pdf/bfm%3A978-3-319-16498-4%2F1.pdf | Front Matter]] <br />
<br />
[[Asmaa Majid Al-Rifaie]], [[Mohammad Majid Al-Rifaie]]: Generative Music with Stochastic Diffusion Search. In: [[EvoMUSART 2015]], 1-14. DOI: http://link.springer.com/chapter/10.1007/978-3-319-16498-4_1<br />
<br />
<br />
<br />
<br />
== Links ==<br />
=== Full Text === <br />
[extern file]<br />
<br />
[[intern file]]<br />
<br />
=== Sonstige Links ===</div>Gbachelierhttp://de.evo-art.org/index.php?title=Konferenzen_und_Workshops_zur_Evolution%C3%A4ren_Kunst&diff=4722Konferenzen und Workshops zur Evolutionären Kunst2015-04-30T09:16:31Z<p>Gbachelier: </p>
<hr />
<div>== EvoMUSART ==<br />
===[[EvoMUSART 2015]]===<br />
{{LitBook |Autor = [[Colin Johnson]] (Herausgeber), [[Adrian Carballal]] (Herausgeber), [[João Correia]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Third European Conference, EvoMUSART 2015 (LNCS 9027) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2015 | ISBN = 978-3-319-16497-7 | Seiten = 236 }}DOI: http://link.springer.com/book/10.1007%2F978-3-319-16498-4<br />
<br />
===[[EvoMUSART 2014]]===<br />
{{LitBook |Autor = [[Juan Romero]] (Herausgeber), [[James McDermott]] (Herausgeber), [[João Correia]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Third European Conference, EvoMUSART 2014 (LNCS 8601) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2014 | ISBN = 978-3662443347 | Seiten = 130 }}DOI: http://link.springer.com/10.1007/978-3-662-44335-4<br />
<br />
=== [[EvoMUSART 2013]] ===<br />
{{LitBook |Autor = [[Penousal Machado]] (Herausgeber)|Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Second International Conference, EvoMUSART 2013 (LNCS 7834) |Auflage = 1 | Verlag = Springer | Ort = Berlin| Jahr = 2013 | ISBN = 978-3642369544 | Seiten = 204 }}DOI: http://link.springer.com/book/10.1007%2F978-3-642-36955-1<br />
<br />
=== [[EvoMUSART 2012]] ===<br />
{{LitBook |Autor = [[Penousal Machado]] (Herausgeber), [[Juan Romero]] (Herausgeber), [[Adrian Carballal]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: First International Conference, EvoMUSART 2012 (LNCS 7247) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2012 | ISBN = 978-3642291418 | Seiten = 236 }}DOI: http://link.springer.com/book/10.1007%2F978-3-642-29142-5<br />
<br />
=== [[EvoMUSART 2011]] ===<br />
{{LitBook |Autor = Cecilia Di Chio et al. (Herausgeber) |Titel = Applications of Evolutionary Computation: EvoApplications 2011: EvoCOMNET, EvoFIN, EvoHOT, EvoMUSART, EvoSTIM, and EvoTRANSLOG (LNCS 6625) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2011 | ISBN = 978-3642205194 | Seiten = 548 }}DOI: http://link.springer.com/book/10.1007/978-3-642-20520-0<br />
<br />
=== [[EvoMUSART 2010]] ===<br />
{{LitBook |Autor = Cecilia Di Chio (Herausgeber), Anthony Brabazon (Herausgeber), Marc Ebner (Herausgeber), Muddassar Farooq (Herausgeber), Andreas Fink (Herausgeber), Jörn Grahl (Herausgeber), Gary Greenfield (Herausgeber), Penousal Machado (Herausgeber), Michael O'Neill (Herausgeber), Ernesto Tarantino (Herausgeber), Neil Urquhart (Herausgeber) |Titel = Applications of Evolutionary Computation: EvoApplications 2010: EvoCOMNET, EvoENVIRONMENT, EvoFIN, EvoMUSART, and EvoTRANSLOG (LNCS 6025) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2010 | ISBN = 978-3642122415 | Seiten = 476 }}DOI: http://link.springer.com/book/10.1007/978-3-642-12242-2<br />
<br />
=== [[EvoMUSART 2009]] ===<br />
{{LitBook |Autor = Mario Giacobini et al. (Herausgeber)|Titel = Applications of Evolutionary Computing: EvoWorkshops 2009: EvoCOMNET, EvoENVIRONMENT, EvoFIN, EvoGAMES, EvoHOT, EvoIASP, EvoINTERACTION, EvoMUSART (LNCS 5484) |Auflage = 1 | Verlag = Springer | Ort = Berlin | Jahr = 2009 | ISBN = 978-3642011283 | Seiten = 831 }}DOI: http://link.springer.com/book/10.1007/978-3-642-01129-0<br />
<br />
=== [[EvoMUSART 2008]] ===<br />
{{LitBook |Autor = Mario Giacobini et al. (Herausgeber) |Titel = Applications of Evolutionary Computing: EvoWorkshops 2008: EvoCOMNET, EvoFIN, EvoHOT, EvoIASP, EvoMUSART, EvoNUM, EvoSTOC, and EvoTransLog (LNCS 4974) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2008 | ISBN = 978-3540787600 | Seiten = 732 }}DOI: http://link.springer.com/book/10.1007/978-3-540-78761-7<br />
<br />
=== [[EvoMUSART 2007]] ===<br />
{{LitBook |Autor = Mario Giacobini et al. (Herausgeber) |Titel = Applications of Evolutionary Computing: EvoWorkshops 2007: EvoCOMNET, EvoFIN, EvoIASP, EvoINTERACTION, EvoMUSART, EvoSTOC, and EvoTransLog (LNCS 4448) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2007 | ISBN = 978-3540718048 | Seiten = 784 }}DOI: http://link.springer.com/book/10.1007/978-3-540-71805-5<br />
<br />
=== [[EvoMUSART 2006]] ===<br />
{{LitBook |Autor = Franz Rothlauf (Herausgeber), Jürgen Branke (Herausgeber) |Titel = Applications of Evolutionary Computing: EvoWorkshops 2006: EvoBIO, EvoCOMNET, EvoHOT, EvoIASP, EvoINTERACTION, EvoMUSART, and EvoSTOC (LNCS 3907) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2006 | ISBN = 978-3540332374 | Seiten = 816 }}DOI: http://link.springer.com/book/10.1007/11732242<br />
<br />
=== [[EvoMUSART 2005]] ===<br />
{{LitBook |Autor = Franz Rothlauf (Herausgeber), Jürgen Branke (Herausgeber)|Titel = Applications of Evolutionary Computing: Evoworkshops: EvoBIO, EvoCOMNET, EvoHot, EvoIASP, EvoMUSART, and EvoSTOC (LNCS 3449) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2005 | ISBN = 978-3540253969 | Seiten = 652 }}DOI: http://link.springer.com/book/10.1007/b106856<br />
<br />
=== [[EvoMUSART 2004]] ===<br />
{{LitBook |Autor = Franz Rothlauf (Herausgeber)|Titel = Applications of Evolutionary Computing: EvoWorkshops 2004: EvoBIO, EvoCOMNET, EvoHOT, EvoIASP, EvoMUSART, and EvoSTOC (LNCS 3005) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2004 | ISBN = 978-3540213789 | Seiten = 588 }}DOI: http://link.springer.com/book/10.1007/b96500<br />
<br />
=== [[EvoMUSART 2003]] ===<br />
{{LitBook |Autor = Günther Raidl (Herausgeber), Stefano Cagnoni (Herausgeber), Juan J. Romero Cardalda (Herausgeber), David W. Corne (Herausgeber) |Titel = Applications of Evolutionary Computing: EvoWorkshop 2003: EvoBIO, EvoCOP, EvoIASP, EvoMUSART, EvoROB, and EvoSTIM (LNCS 2611) | Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2003 | ISBN = 978-3540009764 | Seiten = 712 }}DOI: http://link.springer.com/book/10.1007/3-540-36605-9<br />
<br />
<br />
<br />
== Thematisch verwandte Konferenzen ==<br />
<br />
=== [[Computational Aesthetics Conferences]] ===<br />
<br />
CAe-Proceedingsüberblick: http://www.informatik.uni-trier.de/~Ley/db/conf/cae/index.html<br />
<br />
====[[Computational Aesthetics 2014]]====<br />
<br />
David Mould: Expressive '14 The joint symposium on Computational Aesthetics and Sketch Based Interfaces and Modeling and Non-Photorealistic Animation and Rendering. Vancouver, BC, Canada — August 08 - 10, 2014 ACM, ISBN: 978-1-4503-3019-0 <br />
<br />
====[[Computational Aesthetics 2013]]====<br />
<br />
Donald H. House, Cindy Grimm (Eds.): Workshop on Computational Aesthetics, Anaheim, California, USA, 2013. Proceedings. ACM 2013. ISBN 978-1-4503-2203-4<br />
<br />
====[[Computational Aesthetics 2012]]====<br />
<br />
Douglas W. Cunningham, Donald H. House (Eds.): Computational Aesthetics 2012: Eurographics Workshop on Computational Aesthetics, Annecy, France, 4-6 June 2012. Proceedings. Eurographics Association 2012 ISBN 978-3-905674-43-9<br />
<br />
====[[Computational Aesthetics 2011]]====<br />
<br />
Douglas W. Cunningham, Tobias Isenberg (Eds.): Computational Aesthetics 2011: Eurographics Workshop on Computational Aesthetics, Vancouver, Canada, 2011. Proceedings. Eurographics Association 2011 ISBN 978-1-4503-0908-0<br />
<br />
====[[Computational Aesthetics 2010]]====<br />
<br />
Pauline Jepp, Oliver Deussen (Eds.): Computational Aesthetics 2010: Eurographics Workshop on Computational Aesthetics, London, United Kingdom, 2010. Eurographics Association 2010 ISBN 978-3-905674-24-8<br />
<br />
====[[Computational Aesthetics 2009]]====<br />
<br />
Oliver Deussen, Peter Hall (Eds.): Computational Aesthetics 2009: Eurographics Workshop on Computational Aesthetics, Victoria, British Columbia, Canada, 2009. Eurographics Association 2009 ISBN 978-3-905674-17-0<br />
<br />
====[[Computational Aesthetics 2008]]====<br />
<br />
Douglas W. Cunningham, Victoria Interrante, Paul Brown, [[Jon McCormack]] (Eds.): Computational Aesthetics 2008: Eurographics Workshop on Computational Aesthetics, Lisbon, Portugal, 2008. Eurographics Association 2008 ISBN 978-3-905674-08-8<br />
<br />
====[[Computational Aesthetics 2007]]====<br />
<br />
Douglas W. Cunningham, Gary W. Meyer, László Neumann, Alan Dunning, Raquel Paricio (Eds.): Computational Aesthetics 2007: Eurographics Workshop on Computational Aesthetics in Graphics, Visualization and Imaging, Banff, Alberta, Canada, June 20-22, 2007. Eurographics Association 2007 ISBN 978-3-905673-43-2<br />
<br />
====[[Computational Aesthetics 2006]]====<br />
<br />
Bruce Gooch, Laszlo Neumann, Werner Purgathofer and Mateu Sbert: Computational Aesthetics 2006: Eurographics Workshop on Computational Aesthetics in Graphics, Visualization and Imaging 2006 - 06221 Dagstuhl Report. Internationales Begegnungs- und Forschungszentrum für Informatik (IBFI), Schloss Dagstuhl, 2007, Dagstuhl, ISSN 1862-4405 http://drops.dagstuhl.de/opus/volltexte/2007/875/<br />
<br />
====[[Computational Aesthetics 2005]]====<br />
László Neumann, Mateu Sbert, Bruce Gooch, Werner Purgathofer (Eds.): Computational Aesthetics 2005: Eurographics Workshop on Computational Aesthetics in Graphics, Visualization and Imaging 2005, Girona, Spain, May 18-20, 2005. Eurographics Association 2005 ISBN 3-905673-27-4<br />
<br />
=== Generative Art ===<br />
http://www.generativeart.com/<br />
<br />
==== [[Generative Art 2014]]====<br />
Celestino Soddu, Enrica Colabella: Generative Art 2014 GA2014 - 17th International Conference. Rome 16-19 December 2014. http://www.generativeart.com/GA2014_proceedings.pdf<br />
<br />
==== [[Generative Art 2013]]====<br />
Celestino Soddu and Enrica Colabella (eds.): Generative Art 2013 GA2013 - 16th International Conference. Milano 10, 11 and 12 December 2013. http://www.generativeart.com/ga2013xWEB/proceedings1/index_ok.html http://www.generativeart.com/ga2013xWEB/proceedings1/GA2013_proceedings.pdf<br />
<br />
==== [[Generative Art 2012]]====<br />
Celestino Soddu (ed.): Generative Art 2012 GA2012 - 15th International Conference. Lucca, 11, 12 and 13 December 2012. Foundation Cassa di Risparmio di Lucca San Micheletto, Lucca. http://www.generativeart.com/GA2012/ga2012_participants.html http://www.generativeart.com/bookshop/ga2012_book.htm<br />
<br />
==== [[Generative Art 2011]]====<br />
Celestino Soddu (ed.): Generative Art 2011 GA2011, XIV generative Art Conference 5-7 December 2011, Roma, Italy, at CRUI Frescos Hall, Angelica Library Gallery and Cervantes Institute Gallery. http://www.generativeart.com/GA2011/ga2011_papers.html http://www.generativeart.com/bookshop/ebooks_free/GA2011ebook.pdf<br />
<br />
==== [[Generative Art 2010]]====<br />
Celestino Soddu (ed.): Generative Art 2010 GA2010, XIII generative Art Conference 15-17 December 2010. ISBN 978-88-96610-06-0. http://www.generativeart.com/on/cic/GA2010/GA2010_papers.html http://www.generativeart.com/bookshop/ebooks_free/GA2010ebook.pdf<br />
<br />
==== [[Generative Art 2009]]====<br />
Celestino Soddu (ed.): Generative Art 2009 GA2009, XII generative Art Conference 15-17 December 2009. ISBN: 9788896610008. http://www.generativeart.com/on/cic/GA2009Papers/programGA2009_bis.html http://www.generativeart.com/bookshop/ebooks_free/GA2009ebook.pdf<br />
<br />
==== [[Generative Art 2008]]====<br />
Celestino Soddu (ed.): Generative Art 2008 GA2008, XI generative Art Conference 16-18 December 2008. ISBN: 978-88-96610-01-5. http://www.generativeart.com/on/cic/papersGA2008 http://www.generativeart.com/bookshop/ebooks_free/GA2008ebook.pdf/GA2008_papers.htm<br />
<br />
==== [[Generative Art 2007]]====<br />
Celestino Soddu (ed.): Generative Art 2007 GA2007, X generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/papersGA2007.htm<br />
<br />
==== [[Generative Art 2006]]====<br />
Celestino Soddu (ed.): Generative Art 2006 GA2006, IX generative Art Conference 13-15 December 2006. http://www.generativeart.com/on/cic/papersGA2006/generativeart2006.html<br />
<br />
==== [[Generative Art 2005]]====<br />
Celestino Soddu (ed.): Generative Art 2005 GA2005, VIII generative Art Conference. 14 - 17 December 2005. ISBN 9788896610077. http://www.generativeart.com/on/cic/papers2005/papersGA2005.htm http://www.generativeart.com/bookshop/ebooks_free/GA2005ebook.pdf<br />
<br />
==== [[Generative Art 2004]]====<br />
Celestino Soddu (ed.): Generative Art 2004 GA2004, VII Generative Art Conference. Milan, Italy, 13 - 16. December 2004. ISBN 987.88.96610.11.4. http://www.generativeart.com/on/cic/papersGA2004/index_2004_proceedings.html http://www.generativeart.com/bookshop/ebooks_free/GA2004ebook.pdf<br />
<br />
==== [[Generative Art 2003]]====<br />
Celestino Soddu (ed.): Generative Art 2003 GA2003, VI Generative Art Conference. Milan, Italy, 10 - 13. December 2003. ISBN 987.88.96610.12.1. http://www.generativeart.com/on/cic/papersGA2003/papers_GA2003.htm http://www.generativeart.com/bookshop/ebooks_free/GA2003ebook.pdf<br />
<br />
==== [[Generative Art 2002]]====<br />
http://www.generativeart.com/on/cic/GA2002.htm<br />
<br />
==== [[Generative Art 2001]]====<br />
http://www.generativeart.com/on/cic/GA2001.htm<br />
<br />
==== [[Generative Art 2000]]====<br />
http://www.generativeart.com/on/cic/GA2000.htm<br />
<br />
==== [[Generative Art 1999]]====<br />
http://www.generativeart.com/on/cic/99/papers_GA99.htm<br />
<br />
==== [[Generative Art 1998]]====<br />
Celestino Soddu (ed.): Generative Art 1998 GA1998, 1th Generative Art Conference. Milan, Italy, 16 - 18. December 1998. ISBN 978-88-966-10-03-9. http://www.generativeart.com/on/cic/GA98.htm http://www.generativeart.com/bookshop/ebooks_free/GA98ebook.pdf<br />
<br />
=== The Bridge Conferences: art and mathematics ===<br />
The Bridges Organization: art and mathematics http://www.bridgesmathart.org/<br />
<br />
Conference Archive: http://archive.bridgesmathart.org/<br />
<br />
==== [[Bridges 2014]] ====<br />
[[Gary Greenfield]], George Hart and Reza Sarhangi: Proceedings of Bridges 2014: Mathematics, Music, Art, Architecture, Culture. Tessellations Publishing, Phoenix, Arizona, 2014. ISBN 978-1-938664-11-3 http://bridgesmathart.org/bridges-2014/ http://archive.bridgesmathart.org/2014/index.html<br />
<br />
==== [[Bridges 2013]] ====<br />
George Hart, Reza Sarhangi (eds.): Bridges 2013, Mathematics, Music, Art, Architecture, Culture. Bridges Conference at the University of Twente and Saxion University of Applied Sciences Enschede, the Netherlands, 2013. ISBN: 978-1-938664-06-9 http://bridgesmathart.org/past-conferences/bridges-2013/ http://archive.bridgesmathart.org/2013/index.html<br />
<br />
==== [[Bridges 2012]] ====<br />
Robert Bosch, Douglas McKenna, Reza Sarhangi: Bridges 2012, Mathematics, Music, Art, Architecture, Culture. 15th Annual Bridges Conference at Towson University Towson, Maryland, USA, 2012. ISBN: 978-1-938664-00-7 http://bridgesmathart.org/past-conferences/bridges-2012/ http://archive.bridgesmathart.org/2012/index.html<br />
<br />
==== [[Bridges 2011]] ====<br />
Reza Sarhangi, Carlo Séquin: Bridges 2011, Mathematics, Music, Art, Architecture, Culture. 14th Annual Bridges Conference in the University of Coimbra, Portugal, 2011. ISBN: 978-0-9846042-6-5 http://bridgesmathart.org/past-conferences/bridges-2011/ http://archive.bridgesmathart.org/2011/index.html<br />
<br />
==== [[Bridges 2010]] ====<br />
George W. Hart and Reza Sarhangi: Bridges 2010, Mathematics, Music, Art, Architecture, Culture. 13th Annual Bridges Conference in the City of Pécs, Hungary, 2010. ISBN: 9780984604203 http://bridgesmathart.org/past-conferences/bridges-2010/ http://archive.bridgesmathart.org/2010/index.html<br />
<br />
==== [[Bridges 2009]] ====<br />
[[Craig S. Kaplan]] and Reza Sarhangi: Bridges 2009, Mathematics, Music, Art, Architecture, Culture. 12th Annual Bridges Conference, The Banff Centre, Banff, Alberta, Canada, 2009. ISBN: 978-0-96652-020-0 http://bridgesmathart.org/past-conferences/bridges-2009/ http://archive.bridgesmathart.org/2009/index.html<br />
<br />
==== [[Bridges 2008]] ====<br />
Reza Sarhangi and Carlo Séquin: Bridges 2008, Mathematics, Music, Art, Architecture, Culture. 11th Annual Bridges Conference, Leeuwarden, The Netherlands, 2008. ISBN: 9780966520194 http://www.bridgesmathart.org/2008/2008.html http://archive.bridgesmathart.org/2008/index.html<br />
<br />
==== [[Bridges 2007]] ====<br />
Reza Sarhangi and Javier Barrallo: Bridges 2007, Mathematics, Music, Art, Architecture, Culture. 10th Annual Bridges Conference, School of Architecture, University of the Basque Country<br />
San Sebastian (Donostia), Spain, 2007. ISBN: 0-9665201-8-1 http://www.bridgesmathart.org/2007/2007.html http://archive.bridgesmathart.org/2007/index.html<br />
<br />
==== [[Bridges 2006]] ====<br />
Reza Sarhangi and John Sharp: Bridges 2006, Mathematics, Music, Art, Architecture, Culture. 9th Annual Bridges Conference, London, 2006. ISBN: 0-9665201-7-3 http://www.lkl.ac.uk/events/bridges/index.html http://archive.bridgesmathart.org/2006/index.html<br />
<br />
==== [[Bridges 2005]] ====<br />
Reza Sarhangi and Robert V. Moody: Bridges 2005, Mathematics, Music, Art, Architecture, Culture. 8th Annual Bridges Conference, Banff, 2005. ISBN: 0-9665201-6-5 http://www.bridgesmathart.org/2005_Program.html http://archive.bridgesmathart.org/2005/index.html<br />
<br />
==== [[Bridges 2004]] ====<br />
Reza Sarhangi and Carlo Sequin: Bridges 2004, Mathematics, Music, Art, Architecture, Culture. 7th Annual Bridges Conference, 2004. ISBN: 0-9665201-5-7 http://bridgesmathart.org/past-conferences/2004-2/ http://archive.bridgesmathart.org/2004/index.html<br />
<br />
==== [[Bridges 2003]] ====<br />
Javier Barrallo, Jose Martfnez-Aroza, Nathaniel Friedman, Reza Sarhang, Juan Antonio Maldonado, Carlo Sequin: Bridges 2003, Mathematics, Music, Art, Architecture, Culture. 6th Annual Bridges Conference, FACULTI OF SCIENCES, UNIVERSITI OF GRANADA, Alhambra, 2003. http://www.isama.org/conf/isama03/ http://archive.bridgesmathart.org/2003/index.html<br />
<br />
==== [[Bridges 2002]] ====<br />
Rem Sarhangi: Bridges 2002, Mathematics, Music, Art, Architecture, Culture. 5th Annual Bridges Conference, Towson University, Maryland, 2002. ISBN 0-9665201-4-9. http://bridgesmathart.org/past-conferences/2002-2/ http://archive.bridgesmathart.org/2002/index.html<br />
<br />
==== [[Bridges 2001]] ====<br />
Reza Sarhangi and Slavik Jablan: Bridges 2001, Mathematics, Music, Art, Architecture, Culture. 4th Annual Bridges Conference, 2001. ISBN 0-9665201-3-0. http://bridgesmathart.org/past-conferences/2001-2/ http://archive.bridgesmathart.org/2001/index.html<br />
<br />
==== [[Bridges 2000]] ====<br />
Reza Sarhangi: Bridges 2000, Mathematics, Music, Art, Architecture, Culture. 3th Annual Bridges Conference, 2000. ISBN 0-9665201-2-2. http://bridgesmathart.org/past-conferences/2000-2/ http://archive.bridgesmathart.org/2000/index.html<br />
<br />
==== [[Bridges 1999]] ====<br />
Reza Sarhangi: Bridges 1999, Mathematics, Music, Art, Architecture, Culture. 2th Annual Bridges Conference, 1999. ISBN 0-9665201-1-4. http://bridgesmathart.org/past-conferences/1999-2/ http://archive.bridgesmathart.org/1999/index.html<br />
<br />
==== [[Bridges 1998]] ====<br />
Reza Sarhangi: Bridges 1998, Mathematics, Music, Art, Architecture, Culture. 1th Annual Bridges Conference, 1998. ISBN 0-9665201-0-6. http://bridgesmathart.org/past-conferences/1998-2/ http://archive.bridgesmathart.org/1998/index.html<br />
<br />
=== Computational Creativity ===<br />
The Association for Computational Creativity: http://computationalcreativity.net/<br />
<br />
==== [[Computational Creativity 2014 ICCC 2014]] ====<br />
[[Simon Colton]], Dan Ventura, Nada Lavrač, Michael Cook (eds.): Fifth International Conference on Computational Creativity 2014, [[Computational Creativity 2014 ICCC 2014]], Ljubljana, Slovenia, 9th – 13th June 2014. http://computationalcreativity.net/iccc2014/proceedings/ http://computationalcreativity.net/iccc2014/proceedings/proceedings-pdf/<br />
<br />
==== [[Computational Creativity 2013 ICCC 2013]] ====<br />
<br />
Mary Lou Maher, Tony Veale, [[Rob Saunders]], [[Oliver Bown]]: Fourth International Conference on Computational Creativity, [[Computational Creativity 2013 ICCC 2013]]. Sydney, New South Wales, Australia, June 2013. http://www.computationalcreativity.net/iccc2013/accepted-papers/ http://www.computationalcreativity.net/iccc2013/download/ICCC2013-Proceedings.pdf<br />
<br />
==== [[Computational Creativity 2012 ICCC 2012]] ====<br />
<br />
Mary Lou Maher, Kristian Hammond, Alison Pease, Rafael Pérez y Pérez, Dan Ventura and Geraint Wiggins (eds.): Third International Conference on Computational Creativity [[Computational Creativity 2012 ICCC 2012]]. Dublin, Ireland, May 2012. http://computationalcreativity.net/iccc2012/the-conference-program/ http://www.computationalcreativity.net/proceedings/ICCC-2012-Proceedings.pdf<br />
<br />
==== [[Computational Creativity 2011 ICCC 2011]] ====<br />
<br />
Dan Ventura, Pablo Gervás, D. Fox Harrell, Mary Lou Maher, Alison Pease and Geraint Wiggins (eds.): Second International Conference on Computational Creativity [[Computational Creativity 2011 ICCC 2011]]. México City, México · April 2011. http://iccc11.cua.uam.mx/proceedings/index.html<br />
<br />
==== [[Computational Creativity 2010 ICCC 2010]] ====<br />
<br />
Dan Ventura, Alison Pease, Rafael P ́erez y P ́erez, Graeme Ritchie and Tony Veale (eds.): Proceedings of the First International Conference on Computational Creativity [[Computational Creativity 2010 ICCC 2010]]. Lisbon, Portugal, January 2010 http://creative-systems.dei.uc.pt/ http://eden.dei.uc.pt/~amilcar/ftp/e-Proceedings_ICCC-X.pdf<br />
<br />
==== [[Dagstuhl Seminar 09291 2009: Computational Creativity: An Interdisciplinary Approach]] ====<br />
<br />
Margaret Boden and Mark D'Inverno and [[Jon McCormack]] (Eds.): Computational Creativity: An Interdisciplinary Approach. Dagstuhl Seminar 09291. 2009. http://drops.dagstuhl.de/opus/portals/index.php?semnr=09291</div>Gbachelierhttp://de.evo-art.org/index.php?title=Konferenzen_und_Workshops_zur_Evolution%C3%A4ren_Kunst&diff=4721Konferenzen und Workshops zur Evolutionären Kunst2015-04-30T09:15:28Z<p>Gbachelier: </p>
<hr />
<div>== EvoMUSART ==<br />
===[[EvoMUSART 2015]]===<br />
{{LitBook |Autor = [[Colin Johnson]] (Herausgeber), [[Adrian Carballal]] (Herausgeber), [[João Correia]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Third European Conference, EvoMUSART 2015 (LNCS 9027) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2015 | ISBN = 978-3-319-16497-7 | Seiten = 130 }}DOI: http://link.springer.com/book/10.1007%2F978-3-319-16498-4<br />
<br />
===[[EvoMUSART 2014]]===<br />
{{LitBook |Autor = [[Juan Romero]] (Herausgeber), [[James McDermott]] (Herausgeber), [[João Correia]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Third European Conference, EvoMUSART 2014 (LNCS 8601) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2014 | ISBN = 978-3662443347 | Seiten = 130 }}DOI: http://link.springer.com/10.1007/978-3-662-44335-4<br />
<br />
=== [[EvoMUSART 2013]] ===<br />
{{LitBook |Autor = [[Penousal Machado]] (Herausgeber)|Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: Second International Conference, EvoMUSART 2013 (LNCS 7834) |Auflage = 1 | Verlag = Springer | Ort = Berlin| Jahr = 2013 | ISBN = 978-3642369544 | Seiten = 204 }}DOI: http://link.springer.com/book/10.1007%2F978-3-642-36955-1<br />
<br />
=== [[EvoMUSART 2012]] ===<br />
{{LitBook |Autor = [[Penousal Machado]] (Herausgeber), [[Juan Romero]] (Herausgeber), [[Adrian Carballal]] (Herausgeber) |Titel = Evolutionary and Biologically Inspired Music, Sound, Art and Design: First International Conference, EvoMUSART 2012 (LNCS 7247) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2012 | ISBN = 978-3642291418 | Seiten = 236 }}DOI: http://link.springer.com/book/10.1007%2F978-3-642-29142-5<br />
<br />
=== [[EvoMUSART 2011]] ===<br />
{{LitBook |Autor = Cecilia Di Chio et al. (Herausgeber) |Titel = Applications of Evolutionary Computation: EvoApplications 2011: EvoCOMNET, EvoFIN, EvoHOT, EvoMUSART, EvoSTIM, and EvoTRANSLOG (LNCS 6625) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2011 | ISBN = 978-3642205194 | Seiten = 548 }}DOI: http://link.springer.com/book/10.1007/978-3-642-20520-0<br />
<br />
=== [[EvoMUSART 2010]] ===<br />
{{LitBook |Autor = Cecilia Di Chio (Herausgeber), Anthony Brabazon (Herausgeber), Marc Ebner (Herausgeber), Muddassar Farooq (Herausgeber), Andreas Fink (Herausgeber), Jörn Grahl (Herausgeber), Gary Greenfield (Herausgeber), Penousal Machado (Herausgeber), Michael O'Neill (Herausgeber), Ernesto Tarantino (Herausgeber), Neil Urquhart (Herausgeber) |Titel = Applications of Evolutionary Computation: EvoApplications 2010: EvoCOMNET, EvoENVIRONMENT, EvoFIN, EvoMUSART, and EvoTRANSLOG (LNCS 6025) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2010 | ISBN = 978-3642122415 | Seiten = 476 }}DOI: http://link.springer.com/book/10.1007/978-3-642-12242-2<br />
<br />
=== [[EvoMUSART 2009]] ===<br />
{{LitBook |Autor = Mario Giacobini et al. (Herausgeber)|Titel = Applications of Evolutionary Computing: EvoWorkshops 2009: EvoCOMNET, EvoENVIRONMENT, EvoFIN, EvoGAMES, EvoHOT, EvoIASP, EvoINTERACTION, EvoMUSART (LNCS 5484) |Auflage = 1 | Verlag = Springer | Ort = Berlin | Jahr = 2009 | ISBN = 978-3642011283 | Seiten = 831 }}DOI: http://link.springer.com/book/10.1007/978-3-642-01129-0<br />
<br />
=== [[EvoMUSART 2008]] ===<br />
{{LitBook |Autor = Mario Giacobini et al. (Herausgeber) |Titel = Applications of Evolutionary Computing: EvoWorkshops 2008: EvoCOMNET, EvoFIN, EvoHOT, EvoIASP, EvoMUSART, EvoNUM, EvoSTOC, and EvoTransLog (LNCS 4974) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2008 | ISBN = 978-3540787600 | Seiten = 732 }}DOI: http://link.springer.com/book/10.1007/978-3-540-78761-7<br />
<br />
=== [[EvoMUSART 2007]] ===<br />
{{LitBook |Autor = Mario Giacobini et al. (Herausgeber) |Titel = Applications of Evolutionary Computing: EvoWorkshops 2007: EvoCOMNET, EvoFIN, EvoIASP, EvoINTERACTION, EvoMUSART, EvoSTOC, and EvoTransLog (LNCS 4448) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2007 | ISBN = 978-3540718048 | Seiten = 784 }}DOI: http://link.springer.com/book/10.1007/978-3-540-71805-5<br />
<br />
=== [[EvoMUSART 2006]] ===<br />
{{LitBook |Autor = Franz Rothlauf (Herausgeber), Jürgen Branke (Herausgeber) |Titel = Applications of Evolutionary Computing: EvoWorkshops 2006: EvoBIO, EvoCOMNET, EvoHOT, EvoIASP, EvoINTERACTION, EvoMUSART, and EvoSTOC (LNCS 3907) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2006 | ISBN = 978-3540332374 | Seiten = 816 }}DOI: http://link.springer.com/book/10.1007/11732242<br />
<br />
=== [[EvoMUSART 2005]] ===<br />
{{LitBook |Autor = Franz Rothlauf (Herausgeber), Jürgen Branke (Herausgeber)|Titel = Applications of Evolutionary Computing: Evoworkshops: EvoBIO, EvoCOMNET, EvoHot, EvoIASP, EvoMUSART, and EvoSTOC (LNCS 3449) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2005 | ISBN = 978-3540253969 | Seiten = 652 }}DOI: http://link.springer.com/book/10.1007/b106856<br />
<br />
=== [[EvoMUSART 2004]] ===<br />
{{LitBook |Autor = Franz Rothlauf (Herausgeber)|Titel = Applications of Evolutionary Computing: EvoWorkshops 2004: EvoBIO, EvoCOMNET, EvoHOT, EvoIASP, EvoMUSART, and EvoSTOC (LNCS 3005) |Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2004 | ISBN = 978-3540213789 | Seiten = 588 }}DOI: http://link.springer.com/book/10.1007/b96500<br />
<br />
=== [[EvoMUSART 2003]] ===<br />
{{LitBook |Autor = Günther Raidl (Herausgeber), Stefano Cagnoni (Herausgeber), Juan J. Romero Cardalda (Herausgeber), David W. Corne (Herausgeber) |Titel = Applications of Evolutionary Computing: EvoWorkshop 2003: EvoBIO, EvoCOP, EvoIASP, EvoMUSART, EvoROB, and EvoSTIM (LNCS 2611) | Auflage = 1 |Verlag = Springer | Ort = Berlin | Jahr = 2003 | ISBN = 978-3540009764 | Seiten = 712 }}DOI: http://link.springer.com/book/10.1007/3-540-36605-9<br />
<br />
<br />
<br />
== Thematisch verwandte Konferenzen ==<br />
<br />
=== [[Computational Aesthetics Conferences]] ===<br />
<br />
CAe-Proceedingsüberblick: http://www.informatik.uni-trier.de/~Ley/db/conf/cae/index.html<br />
<br />
====[[Computational Aesthetics 2014]]====<br />
<br />
David Mould: Expressive '14 The joint symposium on Computational Aesthetics and Sketch Based Interfaces and Modeling and Non-Photorealistic Animation and Rendering. Vancouver, BC, Canada — August 08 - 10, 2014 ACM, ISBN: 978-1-4503-3019-0 <br />
<br />
====[[Computational Aesthetics 2013]]====<br />
<br />
Donald H. House, Cindy Grimm (Eds.): Workshop on Computational Aesthetics, Anaheim, California, USA, 2013. Proceedings. ACM 2013. ISBN 978-1-4503-2203-4<br />
<br />
====[[Computational Aesthetics 2012]]====<br />
<br />
Douglas W. Cunningham, Donald H. House (Eds.): Computational Aesthetics 2012: Eurographics Workshop on Computational Aesthetics, Annecy, France, 4-6 June 2012. Proceedings. Eurographics Association 2012 ISBN 978-3-905674-43-9<br />
<br />
====[[Computational Aesthetics 2011]]====<br />
<br />
Douglas W. Cunningham, Tobias Isenberg (Eds.): Computational Aesthetics 2011: Eurographics Workshop on Computational Aesthetics, Vancouver, Canada, 2011. Proceedings. Eurographics Association 2011 ISBN 978-1-4503-0908-0<br />
<br />
====[[Computational Aesthetics 2010]]====<br />
<br />
Pauline Jepp, Oliver Deussen (Eds.): Computational Aesthetics 2010: Eurographics Workshop on Computational Aesthetics, London, United Kingdom, 2010. Eurographics Association 2010 ISBN 978-3-905674-24-8<br />
<br />
====[[Computational Aesthetics 2009]]====<br />
<br />
Oliver Deussen, Peter Hall (Eds.): Computational Aesthetics 2009: Eurographics Workshop on Computational Aesthetics, Victoria, British Columbia, Canada, 2009. Eurographics Association 2009 ISBN 978-3-905674-17-0<br />
<br />
====[[Computational Aesthetics 2008]]====<br />
<br />
Douglas W. Cunningham, Victoria Interrante, Paul Brown, [[Jon McCormack]] (Eds.): Computational Aesthetics 2008: Eurographics Workshop on Computational Aesthetics, Lisbon, Portugal, 2008. Eurographics Association 2008 ISBN 978-3-905674-08-8<br />
<br />
====[[Computational Aesthetics 2007]]====<br />
<br />
Douglas W. Cunningham, Gary W. Meyer, László Neumann, Alan Dunning, Raquel Paricio (Eds.): Computational Aesthetics 2007: Eurographics Workshop on Computational Aesthetics in Graphics, Visualization and Imaging, Banff, Alberta, Canada, June 20-22, 2007. Eurographics Association 2007 ISBN 978-3-905673-43-2<br />
<br />
====[[Computational Aesthetics 2006]]====<br />
<br />
Bruce Gooch, Laszlo Neumann, Werner Purgathofer and Mateu Sbert: Computational Aesthetics 2006: Eurographics Workshop on Computational Aesthetics in Graphics, Visualization and Imaging 2006 - 06221 Dagstuhl Report. Internationales Begegnungs- und Forschungszentrum für Informatik (IBFI), Schloss Dagstuhl, 2007, Dagstuhl, ISSN 1862-4405 http://drops.dagstuhl.de/opus/volltexte/2007/875/<br />
<br />
====[[Computational Aesthetics 2005]]====<br />
László Neumann, Mateu Sbert, Bruce Gooch, Werner Purgathofer (Eds.): Computational Aesthetics 2005: Eurographics Workshop on Computational Aesthetics in Graphics, Visualization and Imaging 2005, Girona, Spain, May 18-20, 2005. Eurographics Association 2005 ISBN 3-905673-27-4<br />
<br />
=== Generative Art ===<br />
http://www.generativeart.com/<br />
<br />
==== [[Generative Art 2014]]====<br />
Celestino Soddu, Enrica Colabella: Generative Art 2014 GA2014 - 17th International Conference. Rome 16-19 December 2014. http://www.generativeart.com/GA2014_proceedings.pdf<br />
<br />
==== [[Generative Art 2013]]====<br />
Celestino Soddu and Enrica Colabella (eds.): Generative Art 2013 GA2013 - 16th International Conference. Milano 10, 11 and 12 December 2013. http://www.generativeart.com/ga2013xWEB/proceedings1/index_ok.html http://www.generativeart.com/ga2013xWEB/proceedings1/GA2013_proceedings.pdf<br />
<br />
==== [[Generative Art 2012]]====<br />
Celestino Soddu (ed.): Generative Art 2012 GA2012 - 15th International Conference. Lucca, 11, 12 and 13 December 2012. Foundation Cassa di Risparmio di Lucca San Micheletto, Lucca. http://www.generativeart.com/GA2012/ga2012_participants.html http://www.generativeart.com/bookshop/ga2012_book.htm<br />
<br />
==== [[Generative Art 2011]]====<br />
Celestino Soddu (ed.): Generative Art 2011 GA2011, XIV generative Art Conference 5-7 December 2011, Roma, Italy, at CRUI Frescos Hall, Angelica Library Gallery and Cervantes Institute Gallery. http://www.generativeart.com/GA2011/ga2011_papers.html http://www.generativeart.com/bookshop/ebooks_free/GA2011ebook.pdf<br />
<br />
==== [[Generative Art 2010]]====<br />
Celestino Soddu (ed.): Generative Art 2010 GA2010, XIII generative Art Conference 15-17 December 2010. ISBN 978-88-96610-06-0. http://www.generativeart.com/on/cic/GA2010/GA2010_papers.html http://www.generativeart.com/bookshop/ebooks_free/GA2010ebook.pdf<br />
<br />
==== [[Generative Art 2009]]====<br />
Celestino Soddu (ed.): Generative Art 2009 GA2009, XII generative Art Conference 15-17 December 2009. ISBN: 9788896610008. http://www.generativeart.com/on/cic/GA2009Papers/programGA2009_bis.html http://www.generativeart.com/bookshop/ebooks_free/GA2009ebook.pdf<br />
<br />
==== [[Generative Art 2008]]====<br />
Celestino Soddu (ed.): Generative Art 2008 GA2008, XI generative Art Conference 16-18 December 2008. ISBN: 978-88-96610-01-5. http://www.generativeart.com/on/cic/papersGA2008 http://www.generativeart.com/bookshop/ebooks_free/GA2008ebook.pdf/GA2008_papers.htm<br />
<br />
==== [[Generative Art 2007]]====<br />
Celestino Soddu (ed.): Generative Art 2007 GA2007, X generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/papersGA2007.htm<br />
<br />
==== [[Generative Art 2006]]====<br />
Celestino Soddu (ed.): Generative Art 2006 GA2006, IX generative Art Conference 13-15 December 2006. http://www.generativeart.com/on/cic/papersGA2006/generativeart2006.html<br />
<br />
==== [[Generative Art 2005]]====<br />
Celestino Soddu (ed.): Generative Art 2005 GA2005, VIII generative Art Conference. 14 - 17 December 2005. ISBN 9788896610077. http://www.generativeart.com/on/cic/papers2005/papersGA2005.htm http://www.generativeart.com/bookshop/ebooks_free/GA2005ebook.pdf<br />
<br />
==== [[Generative Art 2004]]====<br />
Celestino Soddu (ed.): Generative Art 2004 GA2004, VII Generative Art Conference. Milan, Italy, 13 - 16. December 2004. ISBN 987.88.96610.11.4. http://www.generativeart.com/on/cic/papersGA2004/index_2004_proceedings.html http://www.generativeart.com/bookshop/ebooks_free/GA2004ebook.pdf<br />
<br />
==== [[Generative Art 2003]]====<br />
Celestino Soddu (ed.): Generative Art 2003 GA2003, VI Generative Art Conference. Milan, Italy, 10 - 13. December 2003. ISBN 987.88.96610.12.1. http://www.generativeart.com/on/cic/papersGA2003/papers_GA2003.htm http://www.generativeart.com/bookshop/ebooks_free/GA2003ebook.pdf<br />
<br />
==== [[Generative Art 2002]]====<br />
http://www.generativeart.com/on/cic/GA2002.htm<br />
<br />
==== [[Generative Art 2001]]====<br />
http://www.generativeart.com/on/cic/GA2001.htm<br />
<br />
==== [[Generative Art 2000]]====<br />
http://www.generativeart.com/on/cic/GA2000.htm<br />
<br />
==== [[Generative Art 1999]]====<br />
http://www.generativeart.com/on/cic/99/papers_GA99.htm<br />
<br />
==== [[Generative Art 1998]]====<br />
Celestino Soddu (ed.): Generative Art 1998 GA1998, 1th Generative Art Conference. Milan, Italy, 16 - 18. December 1998. ISBN 978-88-966-10-03-9. http://www.generativeart.com/on/cic/GA98.htm http://www.generativeart.com/bookshop/ebooks_free/GA98ebook.pdf<br />
<br />
=== The Bridge Conferences: art and mathematics ===<br />
The Bridges Organization: art and mathematics http://www.bridgesmathart.org/<br />
<br />
Conference Archive: http://archive.bridgesmathart.org/<br />
<br />
==== [[Bridges 2014]] ====<br />
[[Gary Greenfield]], George Hart and Reza Sarhangi: Proceedings of Bridges 2014: Mathematics, Music, Art, Architecture, Culture. Tessellations Publishing, Phoenix, Arizona, 2014. ISBN 978-1-938664-11-3 http://bridgesmathart.org/bridges-2014/ http://archive.bridgesmathart.org/2014/index.html<br />
<br />
==== [[Bridges 2013]] ====<br />
George Hart, Reza Sarhangi (eds.): Bridges 2013, Mathematics, Music, Art, Architecture, Culture. Bridges Conference at the University of Twente and Saxion University of Applied Sciences Enschede, the Netherlands, 2013. ISBN: 978-1-938664-06-9 http://bridgesmathart.org/past-conferences/bridges-2013/ http://archive.bridgesmathart.org/2013/index.html<br />
<br />
==== [[Bridges 2012]] ====<br />
Robert Bosch, Douglas McKenna, Reza Sarhangi: Bridges 2012, Mathematics, Music, Art, Architecture, Culture. 15th Annual Bridges Conference at Towson University Towson, Maryland, USA, 2012. ISBN: 978-1-938664-00-7 http://bridgesmathart.org/past-conferences/bridges-2012/ http://archive.bridgesmathart.org/2012/index.html<br />
<br />
==== [[Bridges 2011]] ====<br />
Reza Sarhangi, Carlo Séquin: Bridges 2011, Mathematics, Music, Art, Architecture, Culture. 14th Annual Bridges Conference in the University of Coimbra, Portugal, 2011. ISBN: 978-0-9846042-6-5 http://bridgesmathart.org/past-conferences/bridges-2011/ http://archive.bridgesmathart.org/2011/index.html<br />
<br />
==== [[Bridges 2010]] ====<br />
George W. Hart and Reza Sarhangi: Bridges 2010, Mathematics, Music, Art, Architecture, Culture. 13th Annual Bridges Conference in the City of Pécs, Hungary, 2010. ISBN: 9780984604203 http://bridgesmathart.org/past-conferences/bridges-2010/ http://archive.bridgesmathart.org/2010/index.html<br />
<br />
==== [[Bridges 2009]] ====<br />
[[Craig S. Kaplan]] and Reza Sarhangi: Bridges 2009, Mathematics, Music, Art, Architecture, Culture. 12th Annual Bridges Conference, The Banff Centre, Banff, Alberta, Canada, 2009. ISBN: 978-0-96652-020-0 http://bridgesmathart.org/past-conferences/bridges-2009/ http://archive.bridgesmathart.org/2009/index.html<br />
<br />
==== [[Bridges 2008]] ====<br />
Reza Sarhangi and Carlo Séquin: Bridges 2008, Mathematics, Music, Art, Architecture, Culture. 11th Annual Bridges Conference, Leeuwarden, The Netherlands, 2008. ISBN: 9780966520194 http://www.bridgesmathart.org/2008/2008.html http://archive.bridgesmathart.org/2008/index.html<br />
<br />
==== [[Bridges 2007]] ====<br />
Reza Sarhangi and Javier Barrallo: Bridges 2007, Mathematics, Music, Art, Architecture, Culture. 10th Annual Bridges Conference, School of Architecture, University of the Basque Country<br />
San Sebastian (Donostia), Spain, 2007. ISBN: 0-9665201-8-1 http://www.bridgesmathart.org/2007/2007.html http://archive.bridgesmathart.org/2007/index.html<br />
<br />
==== [[Bridges 2006]] ====<br />
Reza Sarhangi and John Sharp: Bridges 2006, Mathematics, Music, Art, Architecture, Culture. 9th Annual Bridges Conference, London, 2006. ISBN: 0-9665201-7-3 http://www.lkl.ac.uk/events/bridges/index.html http://archive.bridgesmathart.org/2006/index.html<br />
<br />
==== [[Bridges 2005]] ====<br />
Reza Sarhangi and Robert V. Moody: Bridges 2005, Mathematics, Music, Art, Architecture, Culture. 8th Annual Bridges Conference, Banff, 2005. ISBN: 0-9665201-6-5 http://www.bridgesmathart.org/2005_Program.html http://archive.bridgesmathart.org/2005/index.html<br />
<br />
==== [[Bridges 2004]] ====<br />
Reza Sarhangi and Carlo Sequin: Bridges 2004, Mathematics, Music, Art, Architecture, Culture. 7th Annual Bridges Conference, 2004. ISBN: 0-9665201-5-7 http://bridgesmathart.org/past-conferences/2004-2/ http://archive.bridgesmathart.org/2004/index.html<br />
<br />
==== [[Bridges 2003]] ====<br />
Javier Barrallo, Jose Martfnez-Aroza, Nathaniel Friedman, Reza Sarhang, Juan Antonio Maldonado, Carlo Sequin: Bridges 2003, Mathematics, Music, Art, Architecture, Culture. 6th Annual Bridges Conference, FACULTI OF SCIENCES, UNIVERSITI OF GRANADA, Alhambra, 2003. http://www.isama.org/conf/isama03/ http://archive.bridgesmathart.org/2003/index.html<br />
<br />
==== [[Bridges 2002]] ====<br />
Rem Sarhangi: Bridges 2002, Mathematics, Music, Art, Architecture, Culture. 5th Annual Bridges Conference, Towson University, Maryland, 2002. ISBN 0-9665201-4-9. http://bridgesmathart.org/past-conferences/2002-2/ http://archive.bridgesmathart.org/2002/index.html<br />
<br />
==== [[Bridges 2001]] ====<br />
Reza Sarhangi and Slavik Jablan: Bridges 2001, Mathematics, Music, Art, Architecture, Culture. 4th Annual Bridges Conference, 2001. ISBN 0-9665201-3-0. http://bridgesmathart.org/past-conferences/2001-2/ http://archive.bridgesmathart.org/2001/index.html<br />
<br />
==== [[Bridges 2000]] ====<br />
Reza Sarhangi: Bridges 2000, Mathematics, Music, Art, Architecture, Culture. 3th Annual Bridges Conference, 2000. ISBN 0-9665201-2-2. http://bridgesmathart.org/past-conferences/2000-2/ http://archive.bridgesmathart.org/2000/index.html<br />
<br />
==== [[Bridges 1999]] ====<br />
Reza Sarhangi: Bridges 1999, Mathematics, Music, Art, Architecture, Culture. 2th Annual Bridges Conference, 1999. ISBN 0-9665201-1-4. http://bridgesmathart.org/past-conferences/1999-2/ http://archive.bridgesmathart.org/1999/index.html<br />
<br />
==== [[Bridges 1998]] ====<br />
Reza Sarhangi: Bridges 1998, Mathematics, Music, Art, Architecture, Culture. 1th Annual Bridges Conference, 1998. ISBN 0-9665201-0-6. http://bridgesmathart.org/past-conferences/1998-2/ http://archive.bridgesmathart.org/1998/index.html<br />
<br />
=== Computational Creativity ===<br />
The Association for Computational Creativity: http://computationalcreativity.net/<br />
<br />
==== [[Computational Creativity 2014 ICCC 2014]] ====<br />
[[Simon Colton]], Dan Ventura, Nada Lavrač, Michael Cook (eds.): Fifth International Conference on Computational Creativity 2014, [[Computational Creativity 2014 ICCC 2014]], Ljubljana, Slovenia, 9th – 13th June 2014. http://computationalcreativity.net/iccc2014/proceedings/ http://computationalcreativity.net/iccc2014/proceedings/proceedings-pdf/<br />
<br />
==== [[Computational Creativity 2013 ICCC 2013]] ====<br />
<br />
Mary Lou Maher, Tony Veale, [[Rob Saunders]], [[Oliver Bown]]: Fourth International Conference on Computational Creativity, [[Computational Creativity 2013 ICCC 2013]]. Sydney, New South Wales, Australia, June 2013. http://www.computationalcreativity.net/iccc2013/accepted-papers/ http://www.computationalcreativity.net/iccc2013/download/ICCC2013-Proceedings.pdf<br />
<br />
==== [[Computational Creativity 2012 ICCC 2012]] ====<br />
<br />
Mary Lou Maher, Kristian Hammond, Alison Pease, Rafael Pérez y Pérez, Dan Ventura and Geraint Wiggins (eds.): Third International Conference on Computational Creativity [[Computational Creativity 2012 ICCC 2012]]. Dublin, Ireland, May 2012. http://computationalcreativity.net/iccc2012/the-conference-program/ http://www.computationalcreativity.net/proceedings/ICCC-2012-Proceedings.pdf<br />
<br />
==== [[Computational Creativity 2011 ICCC 2011]] ====<br />
<br />
Dan Ventura, Pablo Gervás, D. Fox Harrell, Mary Lou Maher, Alison Pease and Geraint Wiggins (eds.): Second International Conference on Computational Creativity [[Computational Creativity 2011 ICCC 2011]]. México City, México · April 2011. http://iccc11.cua.uam.mx/proceedings/index.html<br />
<br />
==== [[Computational Creativity 2010 ICCC 2010]] ====<br />
<br />
Dan Ventura, Alison Pease, Rafael P ́erez y P ́erez, Graeme Ritchie and Tony Veale (eds.): Proceedings of the First International Conference on Computational Creativity [[Computational Creativity 2010 ICCC 2010]]. Lisbon, Portugal, January 2010 http://creative-systems.dei.uc.pt/ http://eden.dei.uc.pt/~amilcar/ftp/e-Proceedings_ICCC-X.pdf<br />
<br />
==== [[Dagstuhl Seminar 09291 2009: Computational Creativity: An Interdisciplinary Approach]] ====<br />
<br />
Margaret Boden and Mark D'Inverno and [[Jon McCormack]] (Eds.): Computational Creativity: An Interdisciplinary Approach. Dagstuhl Seminar 09291. 2009. http://drops.dagstuhl.de/opus/portals/index.php?semnr=09291</div>Gbachelierhttp://de.evo-art.org/index.php?title=Design_Space_for_Patterns_and_Tilings_Competition_2015_Multipage&diff=4720Design Space for Patterns and Tilings Competition 2015 Multipage2015-04-29T19:02:58Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
<br />
n image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Design_Space_for_Patterns_and_Tilings_Competition_2015_Multipage&diff=4719Design Space for Patterns and Tilings Competition 2015 Multipage2015-04-29T19:01:09Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Design_Space_for_Patterns_and_Tilings_Competition_2015_Multipage&diff=4718Design Space for Patterns and Tilings Competition 2015 Multipage2015-04-29T19:00:02Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
<br />
n image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Design_Space_for_Patterns_and_Tilings_Competition_2015_Multipage&diff=4717Design Space for Patterns and Tilings Competition 2015 Multipage2015-04-29T18:58:14Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
<br />
n image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Design_Space_for_Patterns_and_Tilings_Competition_2015_Multipage&diff=4716Design Space for Patterns and Tilings Competition 2015 Multipage2015-04-29T18:57:27Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Design_Space_for_Patterns_and_Tilings_Competition_2015_Multipage&diff=4715Design Space for Patterns and Tilings Competition 2015 Multipage2015-04-29T18:55:10Z<p>Gbachelier: Die Seite wurde neu angelegt: „ zurück zur Liste der Wettbewerbe zur Evolutionären Kunst Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zur…“</p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Wettbewerbe_zur_Evolution%C3%A4ren_Kunst&diff=4713Wettbewerbe zur Evolutionären Kunst2015-04-29T17:50:49Z<p>Gbachelier: </p>
<hr />
<div><br />
=2015=<br />
<br />
'''First [[Exploring a Design Space for Patterns and Tilings Competition 2015]]''' - ([[Call for Participation Patterns and Tilings Competition 2015_1 | Call for Participation_1]]) - Multipage Version [[Design Space for Patterns and Tilings Competition 2015 Multipage]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Wettbewerbe_zur_Evolution%C3%A4ren_Kunst&diff=4710Wettbewerbe zur Evolutionären Kunst2015-04-28T07:41:33Z<p>Gbachelier: </p>
<hr />
<div><br />
=2015=<br />
<br />
'''First [[Exploring a Design Space for Patterns and Tilings Competition 2015]]''' - ([[Call for Participation Patterns and Tilings Competition 2015_1 | Call for Participation_1]])</div>Gbachelierhttp://de.evo-art.org/index.php?title=Call_for_Participation_Patterns_and_Tilings_Competition_2015_1&diff=4709Call for Participation Patterns and Tilings Competition 2015 12015-04-28T07:39:15Z<p>Gbachelier: Die Seite wurde neu angelegt: „ zurück zur Liste der Wettbewerbe zur Evolutionären Kunst '''Subject: Call for Participation: A programming co…“</p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
'''Subject: Call for Participation: A programming competition involving Evolutionary Computation, Machine Learning, Math and Visual Arts'''<br />
<br />
<br />
'''Exploring a Design Space for Patterns and Tilings'''<br />
<br />
a periodical programming competition involving Evolutionary Computation, Machine Learning, Mathematics and Visual Arts<br />
(student contributions are welcome)<br />
<br />
<br />
The goal of this periodical programming competition (with some price money) is the exploration of a special design space of patterning & tiling methods and to make selected points of this space (methods that generate interesting and aesthetic results) available for image editing so that contemporary and future artists, illustrators, comic artists, designers, ... can use them under an open source license (CC0 and the like).<br />
<br />
The design space relevant for image editing is based on the idea that patterns and tiles can be generated by basic shapes (prototiles) together with a CRMT command list approach that repeatedly clone, rotate and mirror a prototile and translate it over a finite pattern plane. With this unified approach the centuries of mathematical and artistic knowledge about patters, tilings and ornaments will be usable in image editing for bitmap and vector images. By programming CRMT-image interpreter as standalone programs or Plug-ins in bitmap graphic programs (GIMP, Photoshop, ...) and vector graphic programs (Illustrator, Inkscape) very powerful artistic tools can be made that will be using a growing number of CRMT command lists to generate all sorts of patterns from input images.<br />
<br />
The goal of the first competition is to reproduce known tilings from the Tiling Database (http://www.tilingsearch.org/). This should be done by a learning process because such processes should be the basis for exploration the design space and its extensions in further iterations of the competition. Technically the learning of a CRMT command list for a tiling is viewed as a 2D packing problem with the 2-objective function "gap -> 0 & overlap -> 0".<br />
<br />
The competition is originated in the field of Evolutionary Art therefore the learning process should be preferably done with Evolutionary Computation (EC) methods like Genetic Programming but it is not restricted to this if the learning environment with all aspects and parameters are published under an open source license so that others can use it for further exploration. <br />
<br />
A detailed description of this programming competition with more technical details, winning conditions, price money, and future directions can be found under: http://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015<br />
<br />
Registration starts on 01.05.2015 and ends on 15.11.2016. Contributions can be made until 15.01.2016.<br />
<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org).<br />
<br />
<br />
<br />
Please redistribute this Call for Participation in appropriate mailing lists, blogs, tweets, ... to address and attract as much as possible developer, scientists and students in Evolutionary Computation, Machine Learning, Image Processing and Editing, Mathematics, Media Art, ...<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Wettbewerbe_zur_Evolution%C3%A4ren_Kunst&diff=4708Wettbewerbe zur Evolutionären Kunst2015-04-28T07:36:13Z<p>Gbachelier: </p>
<hr />
<div><br />
=2015=<br />
<br />
First [[Exploring a Design Space for Patterns and Tilings Competition 2015]] [[Call for Participation Patterns and Tilings Competition 2015_1 | Call for Participation_1]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4704Exploring a Design Space for Patterns and Tilings Competition 20152015-04-23T18:17:54Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images) and there is a [[CRMT-bitmap-image-interpreter | reference implementation for an CRMT-bitmap-image-interpreter]] in [http://www.imagemagick.org/script/perl-magick.php PerlMagick]; for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with PearlMagick see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the CMRT command list approach. The environment must be open source or at least freely available and all settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image from the [http://www.tilingsearch.org/ Tiling Database] by Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length which is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce closed forms from measures. The tiles in the Tiling Database are available as hight quality PDF (EPS) so they can be processed in an vector graphic program. This leads to the hypothesis that there are automatic methods to extract the prototiles (vector objects) that are easier and more exact than extraction from hight resolution bitmap images. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. Even the different coloring of the prototiles in the hight quality PDFs could be used to define different protototile types. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Registration of the competition can be made between 01.05.2015 and 01.11.2015. <br />
: Backup-Strategy: Use a competition Web Site like [https://www.kaggle.com/ Kaggle] if no registrations or no serious registrations are made and extend the other dates. <br />
<br />
* Between 01.11.2015 and 15.01.2016 contributions can be made. <br />
<br />
* Announcement of the winner is 15.04.2016. <br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info (24.4.2015)<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Machine Learning '''<br />
** Google Machine Learning Group: https://groups.google.com/forum/#!forum/ml-news<br />
** Yahoo Machine Learning Group: https://groups.yahoo.com/neo/groups/machine-learning/info<br />
** Standford ML List: http://cll.stanford.edu/mllist/<br />
** ml-worldwide: https://mailman.cc.gatech.edu/mailman/listinfo/ml-worldwide<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Imape Processing '''<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Image Editing Libaries and Software '''<br />
** Image Magick:<br />
** Inkscape: <br />
<br />
<br />
<br />
* '''Mail in mailing lists of Mathematics (Geometry) '''<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
** MS Azure Forum: https://social.msdn.microsoft.com/forums/azure/en-US/home?forum=MachineLearning<br />
<br />
<br />
* '''Use a Machine Learning Competition Web Site'''<br />
** https://www.kaggle.com/ <br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4690Exploring a Design Space for Patterns and Tilings Competition 20152015-04-15T20:10:56Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images) and there is a [[CRMT-bitmap-image-interpreter | reference implementation for an CRMT-bitmap-image-interpreter]] in [http://www.imagemagick.org/script/perl-magick.php PerlMagick]; for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with PearlMagick see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the CMRT command list approach. The environment must be open source or at least freely available and all settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image from the [http://www.tilingsearch.org/ Tiling Database] by Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length which is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce closed forms from measures. The tiles in the Tiling Database are available as hight quality PDF (EPS) so they can be processed in an vector graphic program. This leads to the hypothesis that there are automatic methods to extract the prototiles (vector objects) that are easier and more exact than extraction from hight resolution bitmap images. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. Even the different coloring of the prototiles in the hight quality PDFs could be used to define different protototile types. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Registration of the competition can be made between 01.05.2015 and 01.11.2015. <br />
: Backup-Strategy: Use a competition Web Site like [https://www.kaggle.com/ Kaggle] if no registrations or no serious registrations are made and extend the other dates. <br />
<br />
* Between 01.11.2015 and 15.01.2016 contributions can be made. <br />
<br />
* Announcement of the winner is 15.04.2016. <br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Machine Learning '''<br />
** Google Machine Learning Group: https://groups.google.com/forum/#!forum/ml-news<br />
** Yahoo Machine Learning Group: https://groups.yahoo.com/neo/groups/machine-learning/info<br />
** Standford ML List: http://cll.stanford.edu/mllist/<br />
** ml-worldwide: https://mailman.cc.gatech.edu/mailman/listinfo/ml-worldwide<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Imape Processing '''<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Image Editing Libaries and Software '''<br />
** Image Magick:<br />
** Inkscape: <br />
<br />
<br />
<br />
* '''Mail in mailing lists of Mathematics (Geometry) '''<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
** MS Azure Forum: https://social.msdn.microsoft.com/forums/azure/en-US/home?forum=MachineLearning<br />
<br />
<br />
* '''Use a Machine Learning Competition Web Site'''<br />
** https://www.kaggle.com/ <br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4689Exploring a Design Space for Patterns and Tilings Competition 20152015-04-15T20:05:52Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images) and there is a [[CRMT-bitmap-image-interpreter | reference implementation for an CRMT-bitmap-image-interpreter]] in [http://www.imagemagick.org/script/perl-magick.php PerlMagick]; for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with PearlMagick see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the CMRT command list approach. The environment must be open source or at least freely available and all settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image from the [http://www.tilingsearch.org/ Tiling Database] by Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length which is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce closed forms from measures. The tiles in the Tiling Database are available as hight quality PDF (EPS) so they can be processed in an vector graphic program. This leads to the hypothesis that there are automatic methods to extract the prototiles (vector objects) that are easier and more exact than extraction from hight resolution bitmap images. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. Even the different coloring of the prototiles in the hight quality PDFs could be used to define different protototile types. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Registration of the competition can be made between 01.05.2015 and 01.11.2015. <br />
: Backup-Strategy: Use a competition Web Site like [https://www.kaggle.com/ Kaggle] if no registrations or no serious registrations are made and extend the other dates. <br />
<br />
* Between 01.11.2015 and 15.01.2016 contributions can be made. <br />
<br />
* Announcement of the winner is 15.04.2016. <br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Machine Learning '''<br />
** Google Machine Learning Group: https://groups.google.com/forum/#!forum/ml-news<br />
** Yahoo Machine Learning Group: https://groups.yahoo.com/neo/groups/machine-learning/info<br />
** Standford ML List: http://cll.stanford.edu/mllist/<br />
** ml-worldwide: https://mailman.cc.gatech.edu/mailman/listinfo/ml-worldwide<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Imape Processing '''<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Image Editing Libaries and Software '''<br />
** Image Magick:<br />
** Inkscape: <br />
<br />
<br />
<br />
* '''Mail in mailing lists of Mathematics (Geometry) '''<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
** MS Azure Forum: https://social.msdn.microsoft.com/forums/azure/en-US/home?forum=MachineLearning<br />
<br />
<br />
* '''Use a Machine Learning Competition Web Site'''<br />
** https://www.kaggle.com/ <br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4688Exploring a Design Space for Patterns and Tilings Competition 20152015-04-15T20:02:55Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images) and there is a [[CRMT-bitmap-image-interpreter | reference implementation for an CRMT-bitmap-image-interpreter]] in [http://www.imagemagick.org/script/perl-magick.php PerlMagick]; for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with PearlMagick see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the CMRT command list approach. The environment must be open source or at least freely available and all settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image from the [http://www.tilingsearch.org/ Tiling Database] by Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length which is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce closed forms from measures. The tiles in the Tiling Database are available as hight quality PDF (EPS) so they can be processed in an vector graphic program. This leads to the hypothesis that there are automatic methods to extract the prototiles (vector objects) that are easier and more exact than extraction from hight resolution bitmap images. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. Even the different coloring of the prototiles in the hight quality PDFs could be used to define different protototile types. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Registration of the competition can be made between 01.05.2015 and 01.11.2015. <br />
: Backup-Strategy: Use a competition Web Site like Kaggle if no registrations or no serious registrations are made and extend the other dates. <br />
<br />
* Between 01.11.2015 and 15.01.2016 contributions can be made. <br />
<br />
* Announcement of the winner is 15.04.2016. <br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Machine Learning '''<br />
** Google Machine Learning Group: https://groups.google.com/forum/#!forum/ml-news<br />
** Yahoo Machine Learning Group: https://groups.yahoo.com/neo/groups/machine-learning/info<br />
** Standford ML List: http://cll.stanford.edu/mllist/<br />
** ml-worldwide: https://mailman.cc.gatech.edu/mailman/listinfo/ml-worldwide<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Imape Processing '''<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Image Editing Libaries and Software '''<br />
** Image Magick:<br />
** Inkscape: <br />
<br />
<br />
<br />
* '''Mail in mailing lists of Mathematics (Geometry) '''<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
** MS Azure Forum: https://social.msdn.microsoft.com/forums/azure/en-US/home?forum=MachineLearning<br />
<br />
<br />
* '''Use a Machine Learning Competition Web Site'''<br />
** https://www.kaggle.com/ <br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=CRMT-bitmap-image-interpreter&diff=4687CRMT-bitmap-image-interpreter2015-04-15T20:01:56Z<p>Gbachelier: </p>
<hr />
<div>back to [[Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015]]<br />
<br />
<br />
Given: <br />
* a folder with prototile shapes: png images with monochrome shapes on transparent background with no boarders: $prototile_folder_path<br />
* a text file with a CRMT command list: $CRMT_string_path<br />
: example: p3m1 CRMT command list: C0, x0, y0, C0, Fo, R-60, x-1/2*t_w, y0, C0, Fo, R60, x1/2*t_w, y0, C0, Fo, R-60, Fi, xt_w, y0, C0, Fi, x3/2*t_w, y0, C0, Fo, R60, Fi, x2*t_w, y0, C0, Fo, R-60, x5/2*t_w, y0, C0, Fi, x0, yt_h, C0, Fo, R-60, Fi, x-1/2*t_w, yt_h, C0, Fo, R60, Fi, x1/2*t_w, yt_h, C0, Fo, R-60, xt_w, yt_h, C0, x3/2*t_w, yt_h, C0, Fo, R60, x2*t_w, yt_h, C0, Fo, R-60, Fi, x5/2*t_w, yt_h<br />
<br />
The basic ideas is to read the CRMT string, split it into a global list with one CRMT command each and process all the local lists that start with "C" (and end with "y" + something). The x- and y-values can be integers or like in the p3m1-example a variable that codes the width (t_w) and height (t_h) of the one prototile. <br />
<br />
The following code is the main part of the image interpreter without the first part that defines the parameters and last part that defines the subprograms. <br />
<br />
<br />
###MAIN START ###########################################################################################################################################################<br />
# READ PROTOTILE/S FROM $prototile_folder_path IN IMAGE OBJECT $Shape_list<br />
if ($read_prototile == 1) { print "read sorted png prototile/s from $prototile_folder_path in Shape_list\n"; <br />
& read_prototiles; # @_ = ($prototile_folder_path); return($Shape_list); <br />
}; <br />
$nr_Shape_list = @$Shape_list; print "check nr of elements in Shape_list: nr_Shape_list = $nr_Shape_list\n\n"; <br />
# CRMT COMMAND LIST STRING => LIST<br />
# READ TEXT FILE $CRMT_string_path IN STRING $CRMT_string<br />
open (FILEHANDLE,"<$CRMT_string_path");<br />
my $CRMT_string_global = do { local $/; <FILEHANDLE> }; print "read CRMT_string_global: $CRMT_string_path = $CRMT_string_global \n\n";<br />
# SPLIT $CRMT_string_global IN PARTS SEPARATED BY /, / AND PUSH THE PARTS IN LIST @CRMT_list_global<br />
@CRMT_list_global = split(/, /, $CRMT_string_global); print "split string in list: CRMT_list_global = @CRMT_list_global\n";<br />
$nr_CRMT_list_global = @CRMT_list_global; print "nr list elements: nr_CRMT_list_global = $nr_CRMT_list_global\n";<br />
# GET SUB-LIST-STARTPOSITIONS AND NR OF SUB-LISTS IN @CRMT_list_global<br />
& get_sublist_startpositions; # @_ = (@CRMT_list_global); return(@sublist_startposition); <br />
$nr_sublists = @sublist_startposition; print "nr of sublists in CRMT_list_global: nr_sublists = $nr_sublists\n";<br />
# COMPUTE tile_w AND tile_h<br />
& get_tile_wh; # @_ = ($Shape_list, $mult_w, $mult_h); return($tile_w, $tile_h);<br />
for ($q = $composing_number_min; $q <= $composing_number_max; $q++) {<br />
my $time_1 = time;<br />
# CLONE GLOBAL LIST @CRMT_list_global<br />
@CRMT_list_global_clone = @CRMT_list_global; #print "clone CRMT_list_global: CRMT_list_global_clone = @CRMT_list_global_clone\n\n";<br />
# DEFINE OBJECT $tile FOR EVERY ITERATION => undef $tile AT END OF EVERY ITERATION <br />
$tile = new Image::Magick; <br />
$tile->Set(size=>"$tile_w x $tile_h"); print "generate empty tile with tile_w x tile_h = $tile_w x $tile_h \n";<br />
$tile->Read('xc:none'); #$tile->Write(filename=>"$output_meta_folder/tile_AfterGeneration.png");<br />
# PROCESS THE COMMAND ELEMENTS IN EVERY SUBLIST <br />
for ($i = 1; $i <= $nr_sublists; $i++) {<br />
print "\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! processing CRMT_list $i from $nr_sublists !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \n\n";<br />
# SEPERATE FIRST LOCAL COMMAND LIST @CRMT_list_local_1<br />
# DETERMINE POSITION OF SECOND C<br />
if ($i < $nr_sublists) {<br />
for ($j = 1; $j <= @CRMT_list_global_clone-1; $j++) {<br />
if ($CRMT_list_global_clone[$j] =~ /^C/) {<br />
$split_position = $j; print "first split_position = $split_position\n";<br />
last;<br />
}; <br />
}; <br />
} else {$split_position = @CRMT_list_global_clone; print "first split_position = $split_position\n"}; <br />
# COPY FIRST $split_position-1 POSITIONS FROM @CRMT_list_global_clone IN @CRMT_list_local_1<br />
for ($j = 0; $j <= $split_position-1; $j++) {<br />
push(@CRMT_list_local, $CRMT_list_global_clone[$j])<br />
}; print "copy first $split_position elements in local list: CRMT_list_local = @CRMT_list_local\n\n";<br />
# DELETE FIRST $split_position-1 POSITIONS FROM @CRMT_list_global_clone<br />
splice(@CRMT_list_global_clone, 0, $split_position, ()); print "CRMT_list_global_clone after splice(first $split_position) = @CRMT_list_global_clone\n";<br />
$nr_CRMT_list_global_clone = @CRMT_list_global_clone; print "nr_CRMT_list_global_clone after splice(first $split_position) = $nr_CRMT_list_global_clone\n";<br />
$nr_CRMT_list_local = @CRMT_list_local; print "nr_CRMT_list_local = $nr_CRMT_list_local \n";<br />
# GET COMMANDS AND COMMAND PARAMETERS FROM @CRMT_list_local AND MAKE IMAGE PROCESSING<br />
while ($nr_CRMT_list_local >= 0) { <br />
if ($CRMT_list_local[0] =~ /^C/) {<br />
$shape_value = substr($CRMT_list_local[0], 1, length($CRMT_list_local[0])); print "list element $CRMT_list_local[0]: shape_value = $shape_value \n";<br />
@$prototile_crm = (); <br />
$prototile_crm = $Shape_list->[$shape_value]->Clone();#$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterGeneration.png");<br />
}; <br />
if ($CRMT_list_local[0] =~ /^R/) {<br />
$rotate_value = substr($CRMT_list_local[0], 1, length($CRMT_list_local[0])); print "list element $CRMT_list_local[0]: rotate_value = $rotate_value \n";<br />
$prototile_crm->Rotate(degrees=>"$rotate_value", color=>'transparent');<br />
$prototile_crm->Set(page=>'0x0+0+0'); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterRot.png");<br />
$prototile_crm->Trim(); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterTrim.png");<br />
}; <br />
if ($CRMT_list_local[0] =~ /^Fo/) { print "list element $CRMT_list_local[0]: make Flop \n";<br />
$prototile_crm->Flop(); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterFlop.png");<br />
}; <br />
if ($CRMT_list_local[0] =~ /^Fi/) { print "list element $CRMT_list_local[0]: make Flip \n";<br />
$prototile_crm->Flip(); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterFlip.png");<br />
}; <br />
if ($CRMT_list_local[0] =~ /^x/ and $CRMT_list_local[1] =~ /^y/) { print "list element $CRMT_list_local[0]: make translation with \n";<br />
$x_string = substr($CRMT_list_local[0], 1, length($CRMT_list_local[0])); print "x_string = $x_string \n";<br />
$y_string = substr($CRMT_list_local[1], 1, length($CRMT_list_local[1])); print "y_string = $y_string \n";<br />
if (looks_like_number($x_string)) {<br />
$x_value = $x_string; print "x_string = $x_string looks_like_number => use x_string as x_value \n";<br />
} else { <br />
$x_string =~ s/t/$dollar_sign_t/g; print "change t by dollar+t in x_string = $x_string\n";<br />
$x_value = eval $x_string; print "direct eval x_string: x_value = $x_value\n";<br />
}; <br />
if (looks_like_number($y_string)) {<br />
$y_value = $y_string; print "y_string = $y_string looks_like_number => use y_string as y_value \n";<br />
} else {<br />
$y_string =~ s/t/$dollar_sign_t/g; print "change t by dollar+t in y_string = $y_string\n";<br />
$y_value = eval $y_string; print "direct eval y_string: y_value = $y_value\n";<br />
}; <br />
print "make compose=>'over' with translation: x_value = $x_value and y_value = $y_value \n";<br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>"$x_value", y=>"$y_value", color=>'transparent', matte=>'true'); <br />
$tile->Set(page=>'0x0+0+0'); #$tile->Write(filename=>"$output_meta_folder/tile_after_crmt_$i.png");<br />
splice(@CRMT_list_local, 0, 2, ()); print "splice first two elements => CRMT_list_local = ( @CRMT_list_local ) => End of processing $i 'th CRMT_list_local\n";<br />
last; <br />
}; #if ($CRMT_list_local[0] =~ /^x/ and $CRMT_list_local[1] =~ /^y/)<br />
# DELETE FIRST ELEMENT FROM @CRMT_list_local<br />
if ($CRMT_list_local[0] =~ /^C/ or $CRMT_list_local[0] =~ /^R/ or $CRMT_list_local[0] =~ /^Fo/ or $CRMT_list_local[0] =~ /^Fi/) {<br />
splice(@CRMT_list_local, 0, 1, ()); print "splice first element => CRMT_list_local_$i = ( @CRMT_list_local ) \n";<br />
}; <br />
$nr_CRMT_list_local = @CRMT_list_local; print "nr_CRMT_list_local = $nr_CRMT_list_local \n";<br />
}; #while ($nr_CRMT_list_local >= 0)<br />
}; # for ($i = 1; $i <= $nr_sublists; $i++) { <br />
# CORRECTION OF LINE ARTEFACTS (DIAGONAL AND HORIZONTAL) <br />
& process_artefacts_1; # @_ = ($tile, $q); # return($tile);<br />
# WRITE $tile <br />
& make_result_path_CRMT; # @_ = ($output_meta_folder, $resultimage_template, $index_for_result, $q, $make_result_folder, $output_folder_path); # return($result_path);<br />
$tile->Write(filename=>"$result_path", compression=>'JPEG', quality=>"$jpg_output_quality"); # quality=>'98' <br />
# UNDEFINE & EMPTY OBJECTS<br />
undef $tile; #@$tile = (); <br />
$time_2 = time; my $deltatime = $time_2 - $time_1; push(@deltatime_list1, $deltatime);<br />
}; # for ($q = $composing_number_min; $q <= $composing_number_max; $q++)<br />
###MAIN END #############################################################################################################################################################<br />
<br />
<br />
back to [[Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=CRMT-bitmap-image-interpreter&diff=4686CRMT-bitmap-image-interpreter2015-04-15T19:59:31Z<p>Gbachelier: </p>
<hr />
<div>Given: <br />
* a folder with prototile shapes: png images with monochrome shapes on transparent background with no boarders: $prototile_folder_path<br />
* a text file with a CRMT command list: $CRMT_string_path<br />
: example: p3m1 CRMT command list: C0, x0, y0, C0, Fo, R-60, x-1/2*t_w, y0, C0, Fo, R60, x1/2*t_w, y0, C0, Fo, R-60, Fi, xt_w, y0, C0, Fi, x3/2*t_w, y0, C0, Fo, R60, Fi, x2*t_w, y0, C0, Fo, R-60, x5/2*t_w, y0, C0, Fi, x0, yt_h, C0, Fo, R-60, Fi, x-1/2*t_w, yt_h, C0, Fo, R60, Fi, x1/2*t_w, yt_h, C0, Fo, R-60, xt_w, yt_h, C0, x3/2*t_w, yt_h, C0, Fo, R60, x2*t_w, yt_h, C0, Fo, R-60, Fi, x5/2*t_w, yt_h<br />
<br />
The basic ideas is to read the CRMT string, split it into a global list with one CRMT command each and process all the local lists that start with "C" (and end with "y" + something). The x- and y-values can be integers or like in the p3m1-example a variable that codes the width (t_w) and height (t_h) of the one prototile. <br />
<br />
The following code is the main part of the image interpreter without the first part that defines the parameters and last part that defines the subprograms. <br />
<br />
<br />
###MAIN START ###########################################################################################################################################################<br />
# READ PROTOTILE/S FROM $prototile_folder_path IN IMAGE OBJECT $Shape_list<br />
if ($read_prototile == 1) { print "read sorted png prototile/s from $prototile_folder_path in Shape_list\n"; <br />
& read_prototiles; # @_ = ($prototile_folder_path); return($Shape_list); <br />
}; <br />
$nr_Shape_list = @$Shape_list; print "check nr of elements in Shape_list: nr_Shape_list = $nr_Shape_list\n\n"; <br />
# CRMT COMMAND LIST STRING => LIST<br />
# READ TEXT FILE $CRMT_string_path IN STRING $CRMT_string<br />
open (FILEHANDLE,"<$CRMT_string_path");<br />
my $CRMT_string_global = do { local $/; <FILEHANDLE> }; print "read CRMT_string_global: $CRMT_string_path = $CRMT_string_global \n\n";<br />
# SPLIT $CRMT_string_global IN PARTS SEPARATED BY /, / AND PUSH THE PARTS IN LIST @CRMT_list_global<br />
@CRMT_list_global = split(/, /, $CRMT_string_global); print "split string in list: CRMT_list_global = @CRMT_list_global\n";<br />
$nr_CRMT_list_global = @CRMT_list_global; print "nr list elements: nr_CRMT_list_global = $nr_CRMT_list_global\n";<br />
# GET SUB-LIST-STARTPOSITIONS AND NR OF SUB-LISTS IN @CRMT_list_global<br />
& get_sublist_startpositions; # @_ = (@CRMT_list_global); return(@sublist_startposition); <br />
$nr_sublists = @sublist_startposition; print "nr of sublists in CRMT_list_global: nr_sublists = $nr_sublists\n";<br />
# COMPUTE tile_w AND tile_h<br />
& get_tile_wh; # @_ = ($Shape_list, $mult_w, $mult_h); return($tile_w, $tile_h);<br />
for ($q = $composing_number_min; $q <= $composing_number_max; $q++) {<br />
my $time_1 = time;<br />
# CLONE GLOBAL LIST @CRMT_list_global<br />
@CRMT_list_global_clone = @CRMT_list_global; #print "clone CRMT_list_global: CRMT_list_global_clone = @CRMT_list_global_clone\n\n";<br />
# DEFINE OBJECT $tile FOR EVERY ITERATION => undef $tile AT END OF EVERY ITERATION <br />
$tile = new Image::Magick; <br />
$tile->Set(size=>"$tile_w x $tile_h"); print "generate empty tile with tile_w x tile_h = $tile_w x $tile_h \n";<br />
$tile->Read('xc:none'); #$tile->Write(filename=>"$output_meta_folder/tile_AfterGeneration.png");<br />
# PROCESS THE COMMAND ELEMENTS IN EVERY SUBLIST <br />
for ($i = 1; $i <= $nr_sublists; $i++) {<br />
print "\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! processing CRMT_list $i from $nr_sublists !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \n\n";<br />
# SEPERATE FIRST LOCAL COMMAND LIST @CRMT_list_local_1<br />
# DETERMINE POSITION OF SECOND C<br />
if ($i < $nr_sublists) {<br />
for ($j = 1; $j <= @CRMT_list_global_clone-1; $j++) {<br />
if ($CRMT_list_global_clone[$j] =~ /^C/) {<br />
$split_position = $j; print "first split_position = $split_position\n";<br />
last;<br />
}; <br />
}; <br />
} else {$split_position = @CRMT_list_global_clone; print "first split_position = $split_position\n"}; <br />
# COPY FIRST $split_position-1 POSITIONS FROM @CRMT_list_global_clone IN @CRMT_list_local_1<br />
for ($j = 0; $j <= $split_position-1; $j++) {<br />
push(@CRMT_list_local, $CRMT_list_global_clone[$j])<br />
}; print "copy first $split_position elements in local list: CRMT_list_local = @CRMT_list_local\n\n";<br />
# DELETE FIRST $split_position-1 POSITIONS FROM @CRMT_list_global_clone<br />
splice(@CRMT_list_global_clone, 0, $split_position, ()); print "CRMT_list_global_clone after splice(first $split_position) = @CRMT_list_global_clone\n";<br />
$nr_CRMT_list_global_clone = @CRMT_list_global_clone; print "nr_CRMT_list_global_clone after splice(first $split_position) = $nr_CRMT_list_global_clone\n";<br />
$nr_CRMT_list_local = @CRMT_list_local; print "nr_CRMT_list_local = $nr_CRMT_list_local \n";<br />
# GET COMMANDS AND COMMAND PARAMETERS FROM @CRMT_list_local AND MAKE IMAGE PROCESSING<br />
while ($nr_CRMT_list_local >= 0) { <br />
if ($CRMT_list_local[0] =~ /^C/) {<br />
$shape_value = substr($CRMT_list_local[0], 1, length($CRMT_list_local[0])); print "list element $CRMT_list_local[0]: shape_value = $shape_value \n";<br />
@$prototile_crm = (); <br />
$prototile_crm = $Shape_list->[$shape_value]->Clone();#$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterGeneration.png");<br />
}; <br />
if ($CRMT_list_local[0] =~ /^R/) {<br />
$rotate_value = substr($CRMT_list_local[0], 1, length($CRMT_list_local[0])); print "list element $CRMT_list_local[0]: rotate_value = $rotate_value \n";<br />
$prototile_crm->Rotate(degrees=>"$rotate_value", color=>'transparent');<br />
$prototile_crm->Set(page=>'0x0+0+0'); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterRot.png");<br />
$prototile_crm->Trim(); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterTrim.png");<br />
}; <br />
if ($CRMT_list_local[0] =~ /^Fo/) { print "list element $CRMT_list_local[0]: make Flop \n";<br />
$prototile_crm->Flop(); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterFlop.png");<br />
}; <br />
if ($CRMT_list_local[0] =~ /^Fi/) { print "list element $CRMT_list_local[0]: make Flip \n";<br />
$prototile_crm->Flip(); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterFlip.png");<br />
}; <br />
if ($CRMT_list_local[0] =~ /^x/ and $CRMT_list_local[1] =~ /^y/) { print "list element $CRMT_list_local[0]: make translation with \n";<br />
$x_string = substr($CRMT_list_local[0], 1, length($CRMT_list_local[0])); print "x_string = $x_string \n";<br />
$y_string = substr($CRMT_list_local[1], 1, length($CRMT_list_local[1])); print "y_string = $y_string \n";<br />
if (looks_like_number($x_string)) {<br />
$x_value = $x_string; print "x_string = $x_string looks_like_number => use x_string as x_value \n";<br />
} else { <br />
$x_string =~ s/t/$dollar_sign_t/g; print "change t by dollar+t in x_string = $x_string\n";<br />
$x_value = eval $x_string; print "direct eval x_string: x_value = $x_value\n";<br />
}; <br />
if (looks_like_number($y_string)) {<br />
$y_value = $y_string; print "y_string = $y_string looks_like_number => use y_string as y_value \n";<br />
} else {<br />
$y_string =~ s/t/$dollar_sign_t/g; print "change t by dollar+t in y_string = $y_string\n";<br />
$y_value = eval $y_string; print "direct eval y_string: y_value = $y_value\n";<br />
}; <br />
print "make compose=>'over' with translation: x_value = $x_value and y_value = $y_value \n";<br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>"$x_value", y=>"$y_value", color=>'transparent', matte=>'true'); <br />
$tile->Set(page=>'0x0+0+0'); #$tile->Write(filename=>"$output_meta_folder/tile_after_crmt_$i.png");<br />
splice(@CRMT_list_local, 0, 2, ()); print "splice first two elements => CRMT_list_local = ( @CRMT_list_local ) => End of processing $i 'th CRMT_list_local\n";<br />
last; <br />
}; #if ($CRMT_list_local[0] =~ /^x/ and $CRMT_list_local[1] =~ /^y/)<br />
# DELETE FIRST ELEMENT FROM @CRMT_list_local<br />
if ($CRMT_list_local[0] =~ /^C/ or $CRMT_list_local[0] =~ /^R/ or $CRMT_list_local[0] =~ /^Fo/ or $CRMT_list_local[0] =~ /^Fi/) {<br />
splice(@CRMT_list_local, 0, 1, ()); print "splice first element => CRMT_list_local_$i = ( @CRMT_list_local ) \n";<br />
}; <br />
$nr_CRMT_list_local = @CRMT_list_local; print "nr_CRMT_list_local = $nr_CRMT_list_local \n";<br />
}; #while ($nr_CRMT_list_local >= 0)<br />
}; # for ($i = 1; $i <= $nr_sublists; $i++) { <br />
# CORRECTION OF LINE ARTEFACTS (DIAGONAL AND HORIZONTAL) <br />
& process_artefacts_1; # @_ = ($tile, $q); # return($tile);<br />
# WRITE $tile <br />
& make_result_path_CRMT; # @_ = ($output_meta_folder, $resultimage_template, $index_for_result, $q, $make_result_folder, $output_folder_path); # return($result_path);<br />
$tile->Write(filename=>"$result_path", compression=>'JPEG', quality=>"$jpg_output_quality"); # quality=>'98' <br />
# UNDEFINE & EMPTY OBJECTS<br />
undef $tile; #@$tile = (); <br />
$time_2 = time; my $deltatime = $time_2 - $time_1; push(@deltatime_list1, $deltatime);<br />
}; # for ($q = $composing_number_min; $q <= $composing_number_max; $q++)<br />
###MAIN END #############################################################################################################################################################</div>Gbachelierhttp://de.evo-art.org/index.php?title=CRMT-bitmap-image-interpreter&diff=4685CRMT-bitmap-image-interpreter2015-04-15T19:57:29Z<p>Gbachelier: </p>
<hr />
<div>Given: <br />
* a folder with prototile shapes: png images with monochrome shapes on transparent background with no boarders: $prototile_folder_path<br />
* a text file with a CRMT command list: $CRMT_string_path<br />
: example: p3m1 CRMT command list: C0, x0, y0, C0, Fo, R-60, x-1/2*t_w, y0, C0, Fo, R60, x1/2*t_w, y0, C0, Fo, R-60, Fi, xt_w, y0, C0, Fi, x3/2*t_w, y0, C0, Fo, R60, Fi, x2*t_w, y0, C0, Fo, R-60, x5/2*t_w, y0, C0, Fi, x0, yt_h, C0, Fo, R-60, Fi, x-1/2*t_w, yt_h, C0, Fo, R60, Fi, x1/2*t_w, yt_h, C0, Fo, R-60, xt_w, yt_h, C0, x3/2*t_w, yt_h, C0, Fo, R60, x2*t_w, yt_h, C0, Fo, R-60, Fi, x5/2*t_w, yt_h<br />
<br />
The basic ideas is to read the CRMT string, split it into a global list with one CRMT command each and process all the local lists that start with "C" (and end with "y" + something). The x- and y-values can be integers or like in the p3m1-example a variable that codes the width (t_w) and height (t_h) of the one prototile. <br />
<br />
The following code is the main part of the image interpreter without the first part that defines the parameters and last part that defines the subprograms. <br />
<br />
<br />
###MAIN START ###########################################################################################################################################################<br />
# READ PROTOTILE/S FROM $prototile_folder_path IN IMAGE OBJECT $Shape_list<br />
if ($read_prototile == 1) { print "read sorted png prototile/s from $prototile_folder_path in Shape_list\n"; <br />
& read_prototiles; # @_ = ($prototile_folder_path); return($Shape_list); <br />
}; <br />
$nr_Shape_list = @$Shape_list; print "check nr of elements in Shape_list: nr_Shape_list = $nr_Shape_list\n\n"; <br />
<br />
# CRMT COMMAND LIST STRING => LIST<br />
# READ TEXT FILE $CRMT_string_path IN STRING $CRMT_string<br />
open (FILEHANDLE,"<$CRMT_string_path");<br />
my $CRMT_string_global = do { local $/; <FILEHANDLE> }; print "read CRMT_string_global: $CRMT_string_path = $CRMT_string_global \n\n";<br />
<br />
# SPLIT $CRMT_string_global IN PARTS SEPARATED BY /, / AND PUSH THE PARTS IN LIST @CRMT_list_global<br />
@CRMT_list_global = split(/, /, $CRMT_string_global); print "split string in list: CRMT_list_global = @CRMT_list_global\n";<br />
$nr_CRMT_list_global = @CRMT_list_global; print "nr list elements: nr_CRMT_list_global = $nr_CRMT_list_global\n";<br />
<br />
# GET SUB-LIST-STARTPOSITIONS AND NR OF SUB-LISTS IN @CRMT_list_global<br />
& get_sublist_startpositions; # @_ = (@CRMT_list_global); return(@sublist_startposition); <br />
$nr_sublists = @sublist_startposition; print "nr of sublists in CRMT_list_global: nr_sublists = $nr_sublists\n";<br />
<br />
# COMPUTE tile_w AND tile_h<br />
& get_tile_wh; # @_ = ($Shape_list, $mult_w, $mult_h); return($tile_w, $tile_h);<br />
<br />
for ($q = $composing_number_min; $q <= $composing_number_max; $q++) {<br />
my $time_1 = time;<br />
<br />
# CLONE GLOBAL LIST @CRMT_list_global<br />
@CRMT_list_global_clone = @CRMT_list_global; #print "clone CRMT_list_global: CRMT_list_global_clone = @CRMT_list_global_clone\n\n";<br />
<br />
# DEFINE OBJECT $tile FOR EVERY ITERATION => undef $tile AT END OF EVERY ITERATION <br />
$tile = new Image::Magick; <br />
$tile->Set(size=>"$tile_w x $tile_h"); print "generate empty tile with tile_w x tile_h = $tile_w x $tile_h \n";<br />
$tile->Read('xc:none'); #$tile->Write(filename=>"$output_meta_folder/tile_AfterGeneration.png");<br />
<br />
# PROCESS THE COMMAND ELEMENTS IN EVERY SUBLIST <br />
for ($i = 1; $i <= $nr_sublists; $i++) {<br />
<br />
print "\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! processing CRMT_list $i from $nr_sublists !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \n\n";<br />
<br />
# SEPERATE FIRST LOCAL COMMAND LIST @CRMT_list_local_1<br />
# DETERMINE POSITION OF SECOND C<br />
if ($i < $nr_sublists) {<br />
for ($j = 1; $j <= @CRMT_list_global_clone-1; $j++) {<br />
if ($CRMT_list_global_clone[$j] =~ /^C/) {<br />
$split_position = $j; print "first split_position = $split_position\n";<br />
last;<br />
}; <br />
}; <br />
} else {$split_position = @CRMT_list_global_clone; print "first split_position = $split_position\n"}; <br />
<br />
# COPY FIRST $split_position-1 POSITIONS FROM @CRMT_list_global_clone IN @CRMT_list_local_1<br />
for ($j = 0; $j <= $split_position-1; $j++) {<br />
push(@CRMT_list_local, $CRMT_list_global_clone[$j])<br />
}; print "copy first $split_position elements in local list: CRMT_list_local = @CRMT_list_local\n\n";<br />
<br />
# DELETE FIRST $split_position-1 POSITIONS FROM @CRMT_list_global_clone<br />
splice(@CRMT_list_global_clone, 0, $split_position, ()); print "CRMT_list_global_clone after splice(first $split_position) = @CRMT_list_global_clone\n";<br />
$nr_CRMT_list_global_clone = @CRMT_list_global_clone; print "nr_CRMT_list_global_clone after splice(first $split_position) = $nr_CRMT_list_global_clone\n";<br />
$nr_CRMT_list_local = @CRMT_list_local; print "nr_CRMT_list_local = $nr_CRMT_list_local \n";<br />
<br />
# GET COMMANDS AND COMMAND PARAMETERS FROM @CRMT_list_local AND MAKE IMAGE PROCESSING<br />
while ($nr_CRMT_list_local >= 0) { <br />
<br />
if ($CRMT_list_local[0] =~ /^C/) {<br />
$shape_value = substr($CRMT_list_local[0], 1, length($CRMT_list_local[0])); print "list element $CRMT_list_local[0]: shape_value = $shape_value \n";<br />
@$prototile_crm = (); <br />
$prototile_crm = $Shape_list->[$shape_value]->Clone();#$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterGeneration.png");<br />
}; <br />
<br />
if ($CRMT_list_local[0] =~ /^R/) {<br />
$rotate_value = substr($CRMT_list_local[0], 1, length($CRMT_list_local[0])); print "list element $CRMT_list_local[0]: rotate_value = $rotate_value \n";<br />
$prototile_crm->Rotate(degrees=>"$rotate_value", color=>'transparent');<br />
$prototile_crm->Set(page=>'0x0+0+0'); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterRot.png");<br />
$prototile_crm->Trim(); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterTrim.png");<br />
}; <br />
<br />
if ($CRMT_list_local[0] =~ /^Fo/) { print "list element $CRMT_list_local[0]: make Flop \n";<br />
$prototile_crm->Flop(); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterFlop.png");<br />
}; <br />
<br />
if ($CRMT_list_local[0] =~ /^Fi/) { print "list element $CRMT_list_local[0]: make Flip \n";<br />
$prototile_crm->Flip(); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterFlip.png");<br />
}; <br />
<br />
if ($CRMT_list_local[0] =~ /^x/ and $CRMT_list_local[1] =~ /^y/) { print "list element $CRMT_list_local[0]: make translation with \n";<br />
$x_string = substr($CRMT_list_local[0], 1, length($CRMT_list_local[0])); print "x_string = $x_string \n";<br />
$y_string = substr($CRMT_list_local[1], 1, length($CRMT_list_local[1])); print "y_string = $y_string \n";<br />
if (looks_like_number($x_string)) {<br />
$x_value = $x_string; print "x_string = $x_string looks_like_number => use x_string as x_value \n";<br />
} else { <br />
$x_string =~ s/t/$dollar_sign_t/g; print "change t by dollar+t in x_string = $x_string\n";<br />
$x_value = eval $x_string; print "direct eval x_string: x_value = $x_value\n";<br />
}; <br />
if (looks_like_number($y_string)) {<br />
$y_value = $y_string; print "y_string = $y_string looks_like_number => use y_string as y_value \n";<br />
} else {<br />
$y_string =~ s/t/$dollar_sign_t/g; print "change t by dollar+t in y_string = $y_string\n";<br />
$y_value = eval $y_string; print "direct eval y_string: y_value = $y_value\n";<br />
}; <br />
print "make compose=>'over' with translation: x_value = $x_value and y_value = $y_value \n";<br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>"$x_value", y=>"$y_value", color=>'transparent', matte=>'true'); <br />
$tile->Set(page=>'0x0+0+0'); #$tile->Write(filename=>"$output_meta_folder/tile_after_crmt_$i.png");<br />
splice(@CRMT_list_local, 0, 2, ()); print "splice first two elements => CRMT_list_local = ( @CRMT_list_local ) => End of processing $i 'th CRMT_list_local\n";<br />
last; <br />
}; #if ($CRMT_list_local[0] =~ /^x/ and $CRMT_list_local[1] =~ /^y/)<br />
<br />
# DELETE FIRST ELEMENT FROM @CRMT_list_local<br />
if ($CRMT_list_local[0] =~ /^C/ or $CRMT_list_local[0] =~ /^R/ or $CRMT_list_local[0] =~ /^Fo/ or $CRMT_list_local[0] =~ /^Fi/) {<br />
splice(@CRMT_list_local, 0, 1, ()); print "splice first element => CRMT_list_local_$i = ( @CRMT_list_local ) \n";<br />
}; <br />
$nr_CRMT_list_local = @CRMT_list_local; print "nr_CRMT_list_local = $nr_CRMT_list_local \n";<br />
}; #while ($nr_CRMT_list_local >= 0)<br />
}; # for ($i = 1; $i <= $nr_sublists; $i++) { <br />
<br />
# CORRECTION OF LINE ARTEFACTS (DIAGONAL AND HORIZONTAL) <br />
& process_artefacts_1; # @_ = ($tile, $q); # return($tile);<br />
<br />
# WRITE $tile <br />
& make_result_path_CRMT; # @_ = ($output_meta_folder, $resultimage_template, $index_for_result, $q, $make_result_folder, $output_folder_path); # return($result_path);<br />
$tile->Write(filename=>"$result_path", compression=>'JPEG', quality=>"$jpg_output_quality"); # quality=>'98' <br />
<br />
# UNDEFINE & EMPTY OBJECTS<br />
undef $tile; #@$tile = (); <br />
<br />
$time_2 = time; my $deltatime = $time_2 - $time_1; push(@deltatime_list1, $deltatime);<br />
}; # for ($q = $composing_number_min; $q <= $composing_number_max; $q++)<br />
<br />
###MAIN END #############################################################################################################################################################</div>Gbachelierhttp://de.evo-art.org/index.php?title=CRMT-bitmap-image-interpreter&diff=4684CRMT-bitmap-image-interpreter2015-04-15T19:10:26Z<p>Gbachelier: Die Seite wurde neu angelegt: „Given: * a folder with prototile shapes: png images with monochrome shapes on transparent background with no boarders: $prototile_folder_path * a text file wi…“</p>
<hr />
<div>Given: <br />
* a folder with prototile shapes: png images with monochrome shapes on transparent background with no boarders: $prototile_folder_path<br />
* a text file with a CRMT command list: $CRMT_string_path<br />
: example: p3m1 CRMT command list: C0, x0, y0, C0, Fo, R-60, x-1/2*t_w, y0, C0, Fo, R60, x1/2*t_w, y0, C0, Fo, R-60, Fi, xt_w, y0, C0, Fi, x3/2*t_w, y0, C0, Fo, R60, Fi, x2*t_w, y0, C0, Fo, R-60, x5/2*t_w, y0, C0, Fi, x0, yt_h, C0, Fo, R-60, Fi, x-1/2*t_w, yt_h, C0, Fo, R60, Fi, x1/2*t_w, yt_h, C0, Fo, R-60, xt_w, yt_h, C0, x3/2*t_w, yt_h, C0, Fo, R60, x2*t_w, yt_h, C0, Fo, R-60, Fi, x5/2*t_w, yt_h<br />
<br />
The basic ideas is to read the CRMT string, split it into a global list and process all the local lists that start with "C" (and end with "y" + something). <br />
<br />
<br />
<br />
<br />
###MAIN START ###########################################################################################################################################################<br />
# READ PROTOTILE/S FROM $prototile_folder_path IN IMAGE OBJECT $Shape_list<br />
if ($read_prototile == 1) { print "read sorted png prototile/s from $prototile_folder_path in Shape_list\n"; <br />
& read_prototiles; # @_ = ($prototile_folder_path); return($Shape_list); <br />
}; <br />
$nr_Shape_list = @$Shape_list; print "check nr of elements in Shape_list: nr_Shape_list = $nr_Shape_list\n\n"; <br />
<br />
# CRMT COMMAND LIST STRING => LIST<br />
# READ TEXT FILE $CRMT_string_path IN STRING $CRMT_string<br />
open (FILEHANDLE,"<$CRMT_string_path");<br />
my $CRMT_string_global = do { local $/; <FILEHANDLE> }; print "read CRMT_string_global: $CRMT_string_path = $CRMT_string_global \n\n";<br />
<br />
# SPLIT $CRMT_string_global IN PARTS SEPARATED BY /, / AND PUSH THE PARTS IN LIST @CRMT_list_global<br />
@CRMT_list_global = split(/, /, $CRMT_string_global); print "split string in list: CRMT_list_global = @CRMT_list_global\n";<br />
$nr_CRMT_list_global = @CRMT_list_global; print "nr list elements: nr_CRMT_list_global = $nr_CRMT_list_global\n";<br />
<br />
# GET SUB-LIST-STARTPOSITIONS AND NR OF SUB-LISTS IN @CRMT_list_global<br />
& get_sublist_startpositions; # @_ = (@CRMT_list_global); return(@sublist_startposition); <br />
$nr_sublists = @sublist_startposition; print "nr of sublists in CRMT_list_global: nr_sublists = $nr_sublists\n";<br />
<br />
# COMPUTE tile_w AND tile_h<br />
& get_tile_wh; # @_ = ($Shape_list, $mult_w, $mult_h); return($tile_w, $tile_h);<br />
<br />
<br />
<br />
for ($q = $composing_number_min; $q <= $composing_number_max; $q++) {<br />
my $time_1 = time;<br />
<br />
# CLONE GLOBAL LIST @CRMT_list_global<br />
@CRMT_list_global_clone = @CRMT_list_global; #print "clone CRMT_list_global: CRMT_list_global_clone = @CRMT_list_global_clone\n\n";<br />
<br />
<br />
# DEFINE OBJECT $tile FOR EVERY ITERATION => undef $tile AT END OF EVERY ITERATION <br />
$tile = new Image::Magick; <br />
$tile->Set(size=>"$tile_w x $tile_h"); print "generate empty tile with tile_w x tile_h = $tile_w x $tile_h \n";<br />
$tile->Read('xc:none'); #$tile->Write(filename=>"$output_meta_folder/tile_AfterGeneration.png");<br />
<br />
<br />
# PROCESS THE COMMAND ELEMENTS IN EVERY SUBLIST <br />
for ($i = 1; $i <= $nr_sublists; $i++) {<br />
<br />
print "\n !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! processing CRMT_list $i from $nr_sublists !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \n\n";<br />
<br />
# SEPERATE FIRST LOCAL COMMAND LIST @CRMT_list_local_1<br />
# DETERMINE POSITION OF SECOND C<br />
if ($i < $nr_sublists) {<br />
for ($j = 1; $j <= @CRMT_list_global_clone-1; $j++) {<br />
if ($CRMT_list_global_clone[$j] =~ /^C/) {<br />
$split_position = $j; print "first split_position = $split_position\n";<br />
last;<br />
}; <br />
}; <br />
} else {$split_position = @CRMT_list_global_clone; print "first split_position = $split_position\n"}; <br />
<br />
# COPY FIRST $split_position-1 POSITIONS FROM @CRMT_list_global_clone IN @CRMT_list_local_1<br />
for ($j = 0; $j <= $split_position-1; $j++) {<br />
push(@CRMT_list_local, $CRMT_list_global_clone[$j])<br />
}; print "copy first $split_position elements in local list: CRMT_list_local = @CRMT_list_local\n\n";<br />
<br />
# DELETE FIRST $split_position-1 POSITIONS FROM @CRMT_list_global_clone<br />
splice(@CRMT_list_global_clone, 0, $split_position, ()); print "CRMT_list_global_clone after splice(first $split_position) = @CRMT_list_global_clone\n";<br />
$nr_CRMT_list_global_clone = @CRMT_list_global_clone; print "nr_CRMT_list_global_clone after splice(first $split_position) = $nr_CRMT_list_global_clone\n";<br />
$nr_CRMT_list_local = @CRMT_list_local; print "nr_CRMT_list_local = $nr_CRMT_list_local \n";<br />
<br />
# GET COMMANDS AND COMMAND PARAMETERS FROM @CRMT_list_local AND MAKE IMAGE PROCESSING<br />
while ($nr_CRMT_list_local >= 0) { <br />
<br />
if ($CRMT_list_local[0] =~ /^C/) {<br />
$shape_value = substr($CRMT_list_local[0], 1, length($CRMT_list_local[0])); print "list element $CRMT_list_local[0]: shape_value = $shape_value \n";<br />
@$prototile_crm = (); <br />
$prototile_crm = $Shape_list->[$shape_value]->Clone();#$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterGeneration.png");<br />
}; <br />
<br />
if ($CRMT_list_local[0] =~ /^R/) { <br />
$rotate_value = substr($CRMT_list_local[0], 1, length($CRMT_list_local[0])); print "list element $CRMT_list_local[0]: rotate_value = $rotate_value \n";<br />
$prototile_crm->Rotate(degrees=>"$rotate_value", color=>'transparent');<br />
$prototile_crm->Set(page=>'0x0+0+0'); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterRot.png");<br />
$prototile_crm->Trim(); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterTrim.png");<br />
}; <br />
<br />
if ($CRMT_list_local[0] =~ /^Fo/) { print "list element $CRMT_list_local[0]: make Flop \n";<br />
$prototile_crm->Flop(); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterFlop.png");<br />
}; <br />
<br />
if ($CRMT_list_local[0] =~ /^Fi/) { print "list element $CRMT_list_local[0]: make Flip \n";<br />
$prototile_crm->Flip(); #$prototile_crm->Write(filename=>"$output_meta_folder/prototile_crm_AfterFlip.png");<br />
}; <br />
<br />
if ($CRMT_list_local[0] =~ /^x/ and $CRMT_list_local[1] =~ /^y/) { print "list element $CRMT_list_local[0]: make translation with \n";<br />
$x_string = substr($CRMT_list_local[0], 1, length($CRMT_list_local[0])); print "x_string = $x_string \n";<br />
$y_string = substr($CRMT_list_local[1], 1, length($CRMT_list_local[1])); print "y_string = $y_string \n";<br />
########################################################################<br />
if (looks_like_number($x_string)) {<br />
$x_value = $x_string; print "x_string = $x_string looks_like_number => use x_string as x_value \n";<br />
} else {<br />
$x_string =~ s/t/$dollar_sign_t/g; print "change t by dollar+t in x_string = $x_string\n";<br />
$x_value = eval $x_string; print "direct eval x_string: x_value = $x_value\n";<br />
}; <br />
if (looks_like_number($y_string)) {<br />
$y_value = $y_string; print "y_string = $y_string looks_like_number => use y_string as y_value \n";<br />
} else {<br />
$y_string =~ s/t/$dollar_sign_t/g; print "change t by dollar+t in y_string = $y_string\n";<br />
$y_value = eval $y_string; print "direct eval y_string: y_value = $y_value\n";<br />
}; <br />
########################################################################<br />
print "make compose=>'over' with translation: x_value = $x_value and y_value = $y_value \n";<br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>"$x_value", y=>"$y_value", color=>'transparent', matte=>'true'); <br />
$tile->Set(page=>'0x0+0+0'); #$tile->Write(filename=>"$output_meta_folder/tile_after_crmt_$i.png");<br />
#$tile->Write(filename=>"$output_meta_folder/tile_after_crmt_$i.jpg");<br />
splice(@CRMT_list_local, 0, 2, ()); print "splice first two elements => CRMT_list_local = ( @CRMT_list_local ) => End of processing $i 'th CRMT_list_local\n";<br />
last; <br />
}; # if ($CRMT_list_local[0] =~ /^x/ and $CRMT_list_local[1] =~ /^y/)<br />
<br />
<br />
# DELETE FIRST ELEMENT FROM @CRMT_list_local<br />
if ($CRMT_list_local[0] =~ /^C/ or $CRMT_list_local[0] =~ /^R/ or $CRMT_list_local[0] =~ /^Fo/ or $CRMT_list_local[0] =~ /^Fi/) {<br />
splice(@CRMT_list_local, 0, 1, ()); print "splice first element => CRMT_list_local_$i = ( @CRMT_list_local ) \n";<br />
}; <br />
$nr_CRMT_list_local = @CRMT_list_local; print "nr_CRMT_list_local = $nr_CRMT_list_local \n";<br />
<br />
}; <br />
<br />
}; # for ($i = 1; $i <= $nr_sublists; $i++) { <br />
<br />
<br />
<br />
<br />
# CORRECTION OF LINE ARTEFACTS (DIAGONAL AND HORIZONTAL) <br />
& process_artefacts_1; # @_ = ($tile, $q);# return($tile);<br />
<br />
<br />
# WRITE $tile <br />
& make_result_path_CRMT; # @_ = ($output_meta_folder, $resultimage_template, $index_for_result, $q, $make_result_folder, $output_folder_path);<br />
# return($result_path);<br />
$tile->Write(filename=>"$result_path", compression=>'JPEG', quality=>"$jpg_output_quality"); # quality=>'98' <br />
<br />
<br />
# MANIPULATE $Shape_list FOR ($q = $composing_number_min; $q <= $composing_number_max; $q++) <br />
if ($q < $composing_number_max) {<br />
& manipulate_Shape_list; # @_ = ($manipulate_Shape_list_strategy; $Shape_list, @parent_paths_list);<br />
# return($Shape_list);<br />
}; <br />
<br />
<br />
# UNDEFINE & EMPTY OBJECTS<br />
undef $tile; #@$tile = (); <br />
<br />
<br />
$time_2 = time; my $deltatime = $time_2 - $time_1; push(@deltatime_list1, $deltatime);<br />
}; # for ($q = $composing_number_min; $q <= $composing_number_max; $q++)<br />
<br />
###MAIN END #############################################################################################################################################################</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4683Exploring a Design Space for Patterns and Tilings Competition 20152015-04-15T18:44:52Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images) and there is a [[CRMT-bitmap-image-interpreter | reference implementation for an CRMT-bitmap-image-interpreter]] in [http://www.imagemagick.org/script/perl-magick.php PerlMagick]; for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with PearlMagick see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the CMRT command list approach. The environment must be open source or at least freely available and all settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image from the [http://www.tilingsearch.org/ Tiling Database] by Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length which is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce closed forms from measures. The tiles in the Tiling Database are available as hight quality PDF (EPS) so they can be processed in an vector graphic program. This leads to the hypothesis that there are automatic methods to extract the prototiles (vector objects) that are easier and more exact than extraction from hight resolution bitmap images. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. Even the different coloring of the prototiles in the hight quality PDFs could be used to define different protototile types. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Registration of the competition can be made between 01.05.2015 and 01.11.2015. Backup-Strategy: Use a competition Web Site like Kaggle if no registrations or no serious registrations are made and extend the other dates. <br />
<br />
* Between 01.11.2015 and 15.01.2016 contributions can be made. <br />
<br />
* Announcement of the winner is 15.04.2016. <br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Machine Learning '''<br />
** Google Machine Learning Group: https://groups.google.com/forum/#!forum/ml-news<br />
** Yahoo Machine Learning Group: https://groups.yahoo.com/neo/groups/machine-learning/info<br />
** Standford ML List: http://cll.stanford.edu/mllist/<br />
** ml-worldwide: https://mailman.cc.gatech.edu/mailman/listinfo/ml-worldwide<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Imape Processing '''<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Image Editing Libaries and Software '''<br />
** Image Magick:<br />
** Inkscape: <br />
<br />
<br />
<br />
* '''Mail in mailing lists of Mathematics (Geometry) '''<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
** MS Azure Forum: https://social.msdn.microsoft.com/forums/azure/en-US/home?forum=MachineLearning<br />
<br />
<br />
* '''Use a Machine Learning Competition Web Site'''<br />
** https://www.kaggle.com/ <br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4682Exploring a Design Space for Patterns and Tilings Competition 20152015-04-15T18:40:32Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images); for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with [http://www.imagemagick.org/script/perl-magick.php PerlMagick] see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the CMRT command list approach. The environment must be open source or at least freely available and all settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image from the [http://www.tilingsearch.org/ Tiling Database] by Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length which is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce closed forms from measures. The tiles in the Tiling Database are available as hight quality PDF (EPS) so they can be processed in an vector graphic program. This leads to the hypothesis that there are automatic methods to extract the prototiles (vector objects) that are easier and more exact than extraction from hight resolution bitmap images. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. Even the different coloring of the prototiles in the hight quality PDFs could be used to define different protototile types. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Registration of the competition can be made between 01.05.2015 and 01.11.2015. Backup-Strategy: Use a competition Web Site like Kaggle if no registrations or no serious registrations are made and extend the other dates. <br />
<br />
* Between 01.11.2015 and 15.01.2016 contributions can be made. <br />
<br />
* Announcement of the winner is 15.04.2016. <br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Machine Learning '''<br />
** Google Machine Learning Group: https://groups.google.com/forum/#!forum/ml-news<br />
** Yahoo Machine Learning Group: https://groups.yahoo.com/neo/groups/machine-learning/info<br />
** Standford ML List: http://cll.stanford.edu/mllist/<br />
** ml-worldwide: https://mailman.cc.gatech.edu/mailman/listinfo/ml-worldwide<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Imape Processing '''<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Image Editing Libaries and Software '''<br />
** Image Magick:<br />
** Inkscape: <br />
<br />
<br />
<br />
* '''Mail in mailing lists of Mathematics (Geometry) '''<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
** MS Azure Forum: https://social.msdn.microsoft.com/forums/azure/en-US/home?forum=MachineLearning<br />
<br />
<br />
* '''Use a Machine Learning Competition Web Site'''<br />
** https://www.kaggle.com/ <br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4681Exploring a Design Space for Patterns and Tilings Competition 20152015-04-15T18:21:04Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images); for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with [http://www.imagemagick.org/script/perl-magick.php PerlMagick] see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the CMRT command list approach. The environment must be open source or at least freely available and all settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image from the [http://www.tilingsearch.org/ Tiling Database] by Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length which is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce closed forms from measures. The tiles in the Tiling Database are available as hight quality PDF (EPS) so they can be processed in an vector graphic program. This leads to the hypothesis that there are automatic methods to extract the prototiles (vector objects) that are easier and more exact than extraction from hight resolution bitmap images. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. Even the different coloring of the prototiles in the hight quality PDFs could be used to define different protototile types. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Registration of the competition can be made between 01.05.2015 and 01.11.2015. <br />
<br />
* Between 01.11.2015 and 15.01.2016 contributions can be send. <br />
<br />
* Announcement of the winner is 15.04.2016. <br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Machine Learning '''<br />
<br />
<br />
* '''Mail in mailing lists of Imape Processing '''<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Imape Editing Libaries and Software '''<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Mathematics (Geometry) '''<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
<br />
<br />
* '''Use a Machine Learning Competition Web Site'''<br />
** https://www.kaggle.com/ <br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4680Exploring a Design Space for Patterns and Tilings Competition 20152015-04-15T18:15:19Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images); for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with [http://www.imagemagick.org/script/perl-magick.php PerlMagick] see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the CMRT command list approach. The environment must be open source or at least freely available and all settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image from the [http://www.tilingsearch.org/ Tiling Database] by Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length which is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce closed forms from measures. The tiles in the Tiling Database are available as hight quality PDF (EPS) so they can be processed in an vector graphic program. This leads to the hypothesis that there are automatic methods to extract the prototiles (vector objects) that are easier and more exact than extraction from hight resolution bitmap images. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. Even the different coloring of the prototiles in the hight quality PDFs could be used to define different protototile types. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Registration of the competition can be made between 01.05.2015 and 01.11.2015. <br />
<br />
* Between 01.11.2015 and 15.01.2016 contributions can be send. <br />
<br />
* Announcement of the winner is 15.04.2016. <br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Machine Learning '''<br />
<br />
<br />
* '''Mail in mailing lists of Imape Processing '''<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Imape Editing Libaries and Software '''<br />
<br />
<br />
<br />
* '''Mail in mailing lists of Mathematics (Geometry) '''<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4679Exploring a Design Space for Patterns and Tilings Competition 20152015-04-15T18:10:18Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images); for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with [http://www.imagemagick.org/script/perl-magick.php PerlMagick] see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the CMRT command list approach. The environment must be open source or at least freely available and all settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image from the [http://www.tilingsearch.org/ Tiling Database] by Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length which is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce closed forms from measures. The tiles in the Tiling Database are available as hight quality PDF (EPS) so they can be processed in an vector graphic program. This leads to the hypothesis that there are automatic methods to extract the prototiles (vector objects) that are easier and more exact than extraction from hight resolution bitmap images. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. Even the different coloring of the prototiles in the hight quality PDFs could be used to define different protototile types. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Registration of the competition can be made between 01.05.2015 and 01.11.2015. <br />
<br />
* Between 01.11.2015 and 15.01.2016 contributions can be send. <br />
<br />
* Announcement of the winner is 15.04.2016. <br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4678Exploring a Design Space for Patterns and Tilings Competition 20152015-04-15T18:01:21Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images); for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with [http://www.imagemagick.org/script/perl-magick.php PerlMagick] see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the CMRT command list approach. The environment must be open source or at least freely available and all settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image from the [http://www.tilingsearch.org/ Tiling Database] by Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length which is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce closed forms from measures. The tiles in the Tiling Database are available as pdf with a hight resolution <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Registration of the competition can be made between 01.05.2015 and 01.11.2015. <br />
<br />
* Between 01.11.2015 and 15.01.2016 contributions can be send. <br />
<br />
* Announcement of the winner is 15.04.2016. <br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4675Exploring a Design Space for Patterns and Tilings Competition 20152015-04-14T19:23:02Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images); for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with [http://www.imagemagick.org/script/perl-magick.php PerlMagick] see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the command list approach. The environment and the settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image for example retrieved from "B. Wichmann: The world of Patterns" (see [[#Tiling Classification in "B. Wichmann: The world of Patterns" | Tiling Classification]]) or from the [http://www.tilingsearch.org/ Tiling Database] also with Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length. It is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce from measures to closed forms. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Competition start: 15.04.2015<br />
<br />
* Competition end: 15.01.2016<br />
<br />
* Announcement of the winner: 15.04.2016<br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Comments and Suggestions=<br />
Comments and suggestions to all aspects of the competition project are appreciated and should be addressed to Dr. Günter Bachelier (guba at evo-art.org). <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4667Exploring a Design Space for Patterns and Tilings Competition 20152015-04-12T19:44:49Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images); for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with [http://www.imagemagick.org/script/perl-magick.php PerlMagick] see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an learning environment (or Evolutionary Algorithms environment) that can reproduce as much as possible of the known tilings with the command list approach. The environment and the settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image for example retrieved from "B. Wichmann: The world of Patterns" (see [[#Tiling Classification in "B. Wichmann: The world of Patterns" | Tiling Classification]]) or from the [http://www.tilingsearch.org/ Tiling Database] also with Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length. It is quite a task in [http://en.wikipedia.org/wiki/Experimental_mathematics experimental mathematics] to deduce from measures to closed forms. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the general goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate CRMT command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for Mathematica so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" or the Tile Database (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Competition start: 15.04.2015<br />
<br />
* Competition end: 15.01.2016<br />
<br />
* Announcement of the winner: 15.04.2016<br />
<br />
<br />
<br />
=Prize money=<br />
The winner of the first competition will get a money price of minimum 500 EUR (dependent if addition sponsors are filling in). <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4657Exploring a Design Space for Patterns and Tilings Competition 20152015-04-11T17:48:32Z<p>Gbachelier: /* References & Links */</p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images); for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with [http://www.imagemagick.org/script/perl-magick.php PerlMagick] see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an Evolutionary Algorithms environment that can reproduce as much as possible of the known tilings with the command list approach. The environment and the settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image for example retrieved from "B. Wichmann: The world of Patterns" (see [[#Tiling Classification in "B. Wichmann: The world of Patterns" | Tiling Classification]]) or from the [http://www.tilingsearch.org/ Tiling Database] also with Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length. It is quite a task in experimental mathematics to deduce from measures to closed forms. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate image command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for [http://www.wolfram.com/mathematica/ Mathematica] so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Competition start: 15.04.2015<br />
<br />
* Competition end: 15.01.2016<br />
<br />
* Announcement of the winner: 15.04.2016<br />
<br />
<br />
<br />
=Prize money=<br />
€€€ <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a pattern learning procedure that can reproduce the deformed ornament with CRMT-command lists. Again evolutionary computation can be used for searching deformation functions and for the learning process whereat the number of prototile types could become very large because every layer of the parquet has slightly different types and therefore the number is also dependent of the range of the parquet. <br />
<br />
<br />
=Notes=<br />
==Note to CC license==<br />
* CC0 Public Domain https://creativecommons.org/choose/zero/?lang=en<br />
* CC4.0 http://creativecommons.org/licenses/by/4.0/ http://creativecommons.org/licenses/by/4.0/legalcode https://creativecommons.org/choose/ Usage with "appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.")<br />
<br />
==Notes to pattern image==<br />
* Mathematical tile generation algorithms are in principle able to generate a pattern with any width x hight. The search for a program (with a Genetic Programming environment) that is able to generate an image command list for pattern generation for an arbitrary pattern size is more complex than the search for a program that generates a command list for only one specific image size. Therefore one should restrict the underlaying problem to the later case. <br />
<br />
* A predefined pattern image $P has the disadvantage that it does not reflect the size of the prototile/s. A pattern should be large enough that one can see the regularities but it should be restricted because the cost of generating is growing fast with the size of the pattern. Therefore the width and hight of the pattern image should be a function of the width and height of the prototile/s and a multiplier $mult: ($w_P, $h_P) = f($mult, $w_S, $h_S) or ($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n). A 3x3- or 4x4-pattern (for periodical tilings) should be sufficient and for the function with prototiles one could for example determine the prototile with the largest number of pixels and use its width and hight.<br />
<br />
==Note to pattern image and image processing commands== <br />
In the work about the euclidean symmetry groups [[Günter Bachelier | G. Bachelier]] used a slightly different approach for the pattern image and the processing commands ([[#References_.26_Links | References & Links]]). The generation process of a tile begins with one shape (equals the pattern image) and this image is successively extended at one of its four edges and then a shape of the same type is rotated, mirrored and translated in one of the edges of the extended image. This means that the tile is growing until it has reached its full size so the command list used in this variant would be (clone, rotate, mirror, extent, translate) (see: http://www.imagemagick.org/Usage/crop/#extent or "Extent" method in http://www.imagemagick.org/script/perl-magick.php). With the parameters width=>integer and height=>integer the new size of the tile part is defined and with gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} it is defined where to insert an image part with background=>'transparent'. The advantage of this approach is that one needs only the gravity-parameter with its 8 possible values for the translation instead of the x and y values. Possibly such an extend-approach would be more efficient because it reduces the search space of the optimization problem but on the other hand this has the risk of becoming trapped in a local sub-minimum. <br />
<br />
==Notes to fitness condition==<br />
* This 2-objective minimization is independent of any kind of aesthetic measure. The definition of an appropriate measure for tilings/patterns built with monochrome shapes should be part of one following competition. <br />
* The definition of gap is obvious as the number of transparent pixel in a candidate image and can be determined with the result image without the knowledge of the generation process viz the command lists. The definition of overlap is more complex and it must quantify the number of pixels of the pattern image that are covered more than one time during the generation process. The question is if such a measure can be computed with the result image and the command list or must it be computed during the generation process. The later requires the integration of the Fitness-evaluator in the Image-interpreter.<br />
<br />
The overlap of two shapes can be thought as the intersection of two point sets which is in ImageMagick implemented by the set theoretic compositing method "Darken" (http://www.imagemagick.org/Usage/compose/#set_theory). The computing of the overlap in this case would require a second parallel generation process with compose_darken besides the generation process with compose_over. Every compose operation is made with compose_over for the generation of the result image and with compose_darken for the computing of the overlap measure. The measure would be the sum of the pixels of each intersection during the processing of the command list. <br />
<br />
Given is a pattern image $P with width $w_P and height $h_P. In the beginning (t=0) $P is empty i.e. all pixel are transparent resulting in the notation $P_0. Given is also a command list with m 5-tuples ($S, $r, $m, $x, $y). From the command list the sequence @C_S = ($S | j = 1, …, m) of prototiles is extracted as the list of shapes that will be step by step composed independent if there is only one or more prototile types given. <br />
<br />
In step t=1 the fist element from @C_S undergo a rotate and mirror transformation with the corresponding parameters $r_1 and $m_1 resulting in $S_1. $S_1 is then composed_over $P_0 with the transition parameters $x_1 and $y_1 resulting in $P_1. Because $P_0 was empty the overlap measure $overlap_1 in step 1 is always zero and the gap measure $gap_1 is computed as the number of non transparent pixels in $P_1 (if this is necessary). In step t=2 the second element from @C_S is transformed with $r_2 and $m_2 resulting in $S_2 and composed_over $P_1 with $x_2 and $y_2 resulting in $P_2 which could lead to an overlap. To compute $overlap_2 $P_1 is cloned and denoted as $P_1_d and $S_2 is composed_darken over $P_1_d with $x_2 and $y_2 resulting in $P_2_d. The overlap $overlap_2 is the number of non transparent pixel in $P_2_d equal to the number of non transparent pixels in the intersection of $P_1_d and $S_2. The overlap values could be pushed in a list @overlap_list which has after processing the whole command list m elements. The overlap measure of the whole generation process of the result image $P_m would be the sum of all m overlap values in @overlap_list. <br />
<br />
Is it possible to make an overlap measure that can be computed given the result pattern image and the command list without the m intermediate steps? => [[Overlap Measure]]<br />
<br />
Perhaps it is even not necessary to have such an absolute overlap measure that counts the actual pixels that are covered more than one time in the generating process of a pattern/tiling if such a measure is used in a fitness evaluation context. Possibly some kind of relative fitness value would be enough to make a fitness ranking of candidates to implement a selection strategy for reproduction,<br />
<br />
==Note to rotation== <br />
If a shape is rotated the ratio of the image can increase and the shape is not any more touching the image borders. This has consequences for the following translation because the translation in ImageMagick uses the left upper point as reference for the x- and y-value and uncorrected this would lead to gaps and/or overlaps. To correct this the parameterless IM-method Trim() can be used directly after rotation ($image=>Trim();) <br />
<br />
==Notes to translation==<br />
*If one uses an interpreter that can not use sub-pixel precision a naive range would be: x: [0, ..., $w_P - 1] and y: [0, ..., $h_P - 1]. But one must allow negative values to compose shapes in a way that the boarder regions of the pattern canvas are covered. Be w_shape_before_translate the width and h_shape_before_translate the height of the shape canvas before the translation the ranges are expanded to x: [-w_shape_before_translate + 1, ..., $w_P - 1], y: [-h_shape_before_translate + 1, ..., $h_P - 1]. (In PerlMagick the translate command would be integrated in a compose_over-command with absolute x and y coordinates.)<br />
<br />
* A decision must be made if absolute pixel positions in an pattern image should be used like in the CRMT-tuples or relative values regarding to the width and height of the prototile if only one prototile is used or the width and height of tile/pattern image. <br />
<br />
* If an image-interpreter is used which relies on a graphic program or library that can not use subpixel accuracy it is shown (in PerlMagick implementations of the euclidean symmetry groups) that gap artifacts could be generated at edges where the prototile polygons fit together. This is often the case if the polygons have other angles than {90, 45}°. If such tiles or patterns are saved in file formats that did not support transparency like jpg the gap pixel are set to black which result in viewable artifacts. A simple image editing heuristic was developed to fill all the gap pixel with local content by compose=>'over' the pattern over a slightly enlarged version of itself. In the case of the fitness evaluation it might be reasonable to distinguish between such gap pixel lines that can be corrected in image editing contexts and two-dimensional gap defects that can not locally corrected.<br />
<br />
==Note to 6-tuple extension approach==<br />
Alternatively an approach could be used that begins with one prototile (with transparent background) and iteratively extend the image until the given width and hight of the pattern is reached. This requires and additional image processing command (Extent()) and results in a 6-tuple: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: $C = 'C' . $prototile_nr; $prototile_nr from {0, ..., n}. <br />
# coding of the rotate command: $R = 'R' . $rotation_degree; $rotation_degree from [0,360[. <br />
# coding of a mirror command Flop: $Fo.<br />
# coding of a mirror command Flip: $Fi.<br />
# coding of an extent command with two parameters: $E = 'E' . $gravity . '_' . $extention_value. <br />
##gravity=>{North, West, East, South}. (simplified list of gravity options)<br />
##delta-extension in pixel. <br />
# coding of a translate command for the composite command : $T = 'T' . '_' . $gravity (or $xy = 'xy'. . $gravity).<br />
##gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}. (full list of gravity options)<br />
<br />
For example a 6-tuple (C0, Fo, R-60, Fi, E_West_250, T_West) would be interpreted as: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0).<br />
# Flop.<br />
# rotate it -60 degree (plus additional correction of rotation offset).<br />
# Flip.<br />
# extent the tile on the left side (= west) of 250 pixels.<br />
# composing the prototile over the tile and set the prototile at the left boarder of the tile (= geometry: West).<br />
<br />
In PearlMagick this would be implemented as: <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
($w, $h) = $tile->Get('columns', 'rows');<br />
$w_new = $w + 250; <br />
$tile->Extent(gravity=>'West', width=>$w_new, height=>$h, background=>'transparent'); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', gravity=>'West', color=>'transparent', matte=>'true');<br />
<br />
==Note on pattern coloring==<br />
The prototiles in mathematical constructions of tiles are first of all monochrome with one color independent if one or more prototile types are used. There are many ways to color a pattern by assigning different colors to a prototile at different positions of the pattern or different colors to different types of prototiles. The set of possible coloring algorithms could be an additional dimension of the design space but for to underlying goal of using patterns for image editing this is not necessary. One can substitute a coloring rule system by enlarging the set of prototiles so that every color correspond to new added prototile type. If for example a tiling is used with one prototile and a coloring rule system with three colors one could enlarge the set of prototiles to three. <br />
<br />
<br />
= References & Links =<br />
* '''Descriptions of some euclidean symmetry groups with a modified clone-rotate-mirror-translate-approach ([[Günter Bachelier |G. Bachelier]] 2007):''' (note: web links in the pdf's are not valid any more)<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_pmm/pmm_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p4m/p4m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3m1/p3m1_ges_e.pdf, [[Medium:P3m1 ges e.pdf | internal link]]<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p6m/p6m_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p3/p3_e.pdf<br />
# http://www.vi-anec.de/Trance-Art/IM-examples/IM-plane_group_p31m/p31m_e.pdf<br />
<br />
* [[Günter Bachelier | G. Bachelier]]'s evolutionary art processes (2007) with some pointers to his use of euclidean symmetry groups: Günter Bachelier: [[Embedding of Pixel-Based Evolutionary Algorithms in My Global Art Process]]. In: [[Literatur_zur_Evolution%C3%A4ren_Kunst#Romero_.26_Machado:_The_Art_of_Artificial_Evolution | Romero, Juan; Machado, Penousal: The Art of Artificial Evolution]]. Springer, Berlin, 2007, S. 249-268. http://www.vi-anec.de/Trance-Art/AROSHU/Talks/SpringerEArtBook2006rev.pdf<br />
<br />
* Sehnaz Cenani, Gulen Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: Celestino Soddu (ed.): [[Generative Art 2007]], X Generative Art Conference 12-14 December 2007. ISBN: 9788896610084. http://www.generativeart.com/on/cic/papersGA2007/22.pdf<br />
<br />
* Ebru Ulu, Sinan Mert ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]. http://www.generativeart.com/on/cic/GA2009Papers/p25.pdf<br />
<br />
* Ramgopal Rajagopalan, Eric Hortop, Dania El-Khechen, Cheryl Kolak Dudek, Lydia Sharman, Fred Szabo, Thomas Fevens and Sudhir Mudhur: [[Inference and Design in Kuba and Zillij Art with Shape Grammars]]. Pages 419–428 http://archive.bridgesmathart.org/2006/bridges2006-419.html http://archive.bridgesmathart.org/2006/bridges2006-419.pdf<br />
<br />
* B. Lynn Bodner: [[Hankin’s ‘Polygons in Contact’ Grid Method for Recreating a Decagonal Star Polygon Design]]. Pages 21–28 http://archive.bridgesmathart.org/2008/bridges2008-21.html http://archive.bridgesmathart.org/2008/bridges2008-21.pdf<br />
<br />
* http://www.grammatical-evolution.org/<br />
<br />
* Data Science Competitions: http://www.kaggle.com/competitions<br />
<br />
* Tilings Encyclopedia (for substitution rules): http://tilings.math.uni-bielefeld.de<br />
<br />
* Fractal Tiling: http://www.mathartfun.com/shopsite_sc/store/html/Compendium/encyclopedia.html<br />
<br />
* Brian Wichmann: The world of Patterns. 2001. ISBN: 978-981-02-4619-8. DOI: http://dx.doi.org/10.1142/9789812839008_0001 http://www.worldscientific.com/worldscibooks/10.1142/4698#t=toc<br />
<br />
* The Tiling Database http://www.tilingsearch.org/ with contribution of Brian Wichmann<br />
<br />
=Tiling Classification in "B. Wichmann: The world of Patterns"=<br />
<br />
==Mathematical==<br />
<br />
=== Regular polygons all having the same edge length===<br />
<br />
1.1.1) The simplest form of tiling pattern with only regular polygons are those known to the Greeks (these have only one type of vertex): Archimedean tilings <br />
<br />
1.1.2) The next simplest category of tilings with regular polygons are those with two different types of vertices <br />
<br />
1.1.3) The obvious generalization of the above are those tilings with three different types of vertices <br />
<br />
1.1.4) Tilings formed from tiles which dissect a regular polygon <br />
<br />
1.1.5) Tilings produced just with squares, but having different edge lengths <br />
<br />
1.1.6) Tilings produced just with equilateral triangles, but having different edge lengths <br />
<br />
1.1.7) Tilings produced with a mixture of regular polygons, but having different edge lengths <br />
<br />
1.1.8) Tilings produced with a regular polygon and another polygon having maximal symmetry <br />
<br />
1.1.9) Lastly, other shapes of mathematical interest are collected here <br />
<br />
<br />
=== Containing mainly regular star polygons all having the same edge length===<br />
<br />
1.2.1) This part contains regular patterns with star polygons.<br />
<br />
1.2.2) This part contains regular tilings with degenerate star polygons with just four sides, ie diamonds.<br />
<br />
1.2.3) Other patterns with star polygons. <br />
<br />
<br />
=== Tiling patterns made entirely from one shape: Monohedral Patterns===<br />
<br />
1.3.1) Tilings in which the single shape is a triangle.<br />
<br />
1.3.2) Tilings in which the single shape is a quadrilateral.<br />
<br />
1.3.3) Tilings in which the single shape is pentagonal.<br />
<br />
1.3.4) Tilings in which the single shape is hexagonal.<br />
<br />
1.3.5) Tilings formed by joining equilateral triangles together.<br />
<br />
1.3.6) Tilings formed by joining squares together.<br />
<br />
1.3.7) Tilings formed by joining regular hexagons together.<br />
<br />
1.3.8) Other convex monohedral tilings.<br />
<br />
1.3.9) Tilings having a central point.<br />
<br />
1.3.10) For most single tiles which tile the plane, the same shape can tile the plane infinitely many ways. For some tiles, the number of ways is limited to 1, 2, etc up to a maximum of 12.<br />
<br />
1.3.11) Several beautiful patterns are made by tiling the plane in a spiral design.<br />
<br />
1.3.12) Lastly, other shapes of mathematical interest are collected here, including those designed for their artistic effect. <br />
<br />
<br />
=== Patterns defined by the symmetry classes of the vertices and tiles: Homeohedral Tilings===<br />
<br />
1.4.1) 2-homeohedral tilings.<br />
<br />
1.4.1) Others. <br />
<br />
<br />
=== Other shapes of mathematical interest===<br />
<br />
1.5.1) Patterns made from polygons which can tile the plane in a limited number of ways (due to P Schmitt).<br />
<br />
1.5.2) Monohedral tilings with regular vertices.<br />
<br />
1.5.3) Tilings made only from infinite lines.<br />
<br />
1.5.4) Tilings made from recursive defined patterns.<br />
<br />
1.5.5) Others. <br />
<br />
<br />
<br />
==Artistic==<br />
<br />
===Pre-Islamic===<br />
<br />
2.1.1) Roman<br />
<br />
2.1.2) Celtic<br />
<br />
2.1.3) Those collected by F M Hessemer (which actually covers Arabic and Italian sources)<br />
<br />
2.1.4) Those collected by Carol Grafton (which actually later but are mainly in the Byzantine style)<br />
<br />
2.1.5) Those collected by Robert Field from churches<br />
<br />
2.1.6) Other earlier patterns <br />
<br />
<br />
===Islamic===<br />
<br />
2.2.1) J Bourgoin<br />
<br />
2.2.2) I El-Said and A Parman<br />
<br />
2.2.3) David Wade<br />
<br />
2.2.4) S J Abas and A S Salman<br />
<br />
2.2.5) Mirza Akber<br />
<br />
2.2.6) The Iranian collection<br />
<br />
2.2.7) Tilings with a grill design. These are mainly derived from window and door grills<br />
<br />
2.2.8) Tilings from the Topkapi Roll<br />
<br />
2.2.9) Tilings which are at two levels<br />
<br />
2.2.10) Robert Field<br />
<br />
2.2.11) Other sources <br />
<br />
<br />
===Post-Islamic===<br />
<br />
2.3.1) Quilt patterns<br />
<br />
2.3.2) Lattice patterns<br />
<br />
2.3.3) Other patterns<br />
<br />
<br />
[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]</div>Gbachelierhttp://de.evo-art.org/index.php?title=Exploring_a_Design_Space_for_Patterns_and_Tilings_Competition_2015&diff=4656Exploring a Design Space for Patterns and Tilings Competition 20152015-04-11T17:46:12Z<p>Gbachelier: </p>
<hr />
<div>[[Wettbewerbe_zur_Evolution%C3%A4ren_Kunst | zurück zur Liste der Wettbewerbe zur Evolutionären Kunst]]<br />
<br />
<br />
'''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction''' '''Under Construction'''<br />
<br />
=Introduction=<br />
<br />
The goal of this periodic programming competition is to develop methods that can explore a very general but on the other hand specific <span style="color:red;">design space of patterns and tilings</span> (see [[#Definition_of_the_Pattern_Design_Space | DS-definition]]), implement those methods and apply them to built alongside a repository of generation commands for interesting patterns and tilings that could be used directly in <span style="color:red;">image editing</span> by contemporary and future artists, illustrators, designers, ... under an appropriate open source license. <br />
<br />
In image editing a mathematical compass and straight-edge construction approach is not helping. One must be able to built these structures by prototiles shaped cut-out image parts. For example: The red equilateral triangle on transparent background in the figure below is the prototile that assembles the p3m1 symmetry group image. To built a tile with it would lead to a red image (possible with some gaps) which is good for counting possible gap pixel but not so useful for image editing purposes. Therefore the red shape is used as a mask together with a parent image; with the right type of compositing function a triangle part of the parent image is cut out (p3m1_G1); again with transparent background. With such a prototile a pattern generation in image editing makes sense and could done by a sequence of image processing commands (CRMT-commands: clone the prototile, rotate it, mirror it, translate it over a pattern image to a specific position). <br />
<br />
[[Datei:P3m1_Prototile.png]]<br />
<br />
<br />
As a prove of concept there are reference implementations for several tiles of the euclidean symmetry groups with the CRMT-approach (see the following four images); for older examples of implementations of the euclidean symmetry groups with non CRMT methods by [[Günter Bachelier | G. Bachelier]] 2007 with [http://www.imagemagick.org/script/perl-magick.php PerlMagick] see [[#References_.26_Links | References & Links]].<br />
<br />
* [[pmm Reference Implementation]]<br />
* [[p4m Reference Implementation]]<br />
* [[p3m1 Reference Implementation]]<br />
* [[p6m Reference Implementation]]<br />
<br />
[[Datei:Pmm tile after crmt 04.jpg | 300px ]] [[Datei:P4m tile after crmt 08.jpg | 300px]]<br />
<br />
[[Datei:Tile after diagonal workaround.jpg | 600px]] <br />
<br />
[[Datei:P6m tile after crmt 28.jpg | 600px]]<br />
<br />
<br />
There are (or were) software that are using tiles in image editing like the Photoshop filter Terrazzo from Xaos Tools, the Photo Tiling Tool Pavimenta (António Salgueiro: [[Pavimenta: A Photo Tiling Tool]]. In: [[Bridges 2011]]. Pages 515–518) and the GIMP filter [http://gimp-texturize.sourceforge.net/ Texturize]. The first two were not available any more and they were only using the 17 euclidean symmetry groups of the plane and none of the diversity of the other tiling methods. There is also the possibility to make tilings in vector graphic programs like Illustrator ([http://www.lynda.com/articles/dekes-techniques-creating-tile-patterns-in-illustrator here]) and Inkscape ([http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html here]), but again only the 17 symmetry groups were available. <br />
<br />
<br />
The search for a pattern generation procedure could be thought as a <span style="color:red;">2D packing problem with overlap &rarr; min &and; gap &rarr; min</span> in combination with a learning/optimization procedure to generate a sequence of image processing commands that could built a pattern with given prototiles from scratch. Or it can be viewed as a puzzle solving problem were the prototiles are the puzzle elements that are moved over a plane and put together to built tilings and patterns. <br />
<br />
An Evolutionary Algorithm environment could process this 2D packing problem like a physical puzzle ([http://en.wikipedia.org/wiki/Dissection_puzzle dissection puzzle], [http://en.wikipedia.org/wiki/Tangram Tangram], [http://en.wikipedia.org/wiki/T_puzzle T puzzle], [http://en.wikipedia.org/wiki/Tiling_puzzle tiling puzzle], [http://en.wikipedia.org/wiki/Eternity_puzzle eternity puzzle], [http://en.wikipedia.org/wiki/Geometric_magic_square geometric magick square], [http://en.wikipedia.org/wiki/Jigsaw_puzzle jigsaw puzzle]). A complex example is the physical "Zellij Multipuzzle" (Jean Marc Castera: [[Zellij Multipuzzle]]. In: [[Bridges 2006]]. Pages 665–666), which implements a puzzle based on Islamic tilings and ornaments with an extreme number of 21 prototile types (see following images from Castera: [[Zellij Multipuzzle]]) and a total number of 669 prototiles (plus different boarder pieces) where one side is colored in white, the other in a different color. The task is to pack a number of prototiles together with no gap and overlap. In the case of the Zellij Multipuzzle there is a large design space of configurations with and without symmetries that satisfy this condition which means that they are all in the Pareto front of this 2-objective problem "overlap &rarr; min &and; gap &rarr; min" and the Evolutionary Algorithm environment should be able to return all of the elements in the Pareto front. <br />
<br />
[[Datei:Bridges2006-665_1b_Zellij_Multipuzzle.png | 300px | Zellij Prototiles]] [[Datei:Bridges2006-665_5_Zellij_Multipuzzle.png | Physical Zellij Multipuzzle]]<br />
<br />
<br />
The advantage of the command list approach is the separation of learning and application: The learning procedure can be one of the many alternatives from symbolic AI, statistical learning, Neuronal Networks to Evolutionary Computation so a huge number of researchers from diverse fields could potentially participate in this contest. Regarding to the method independent approach this type of competition is similar to the data science competitions at [http://www.kaggle.com/competitions Kaggle]. Nevertheless the focus should be on Evolutionary Computation because of the embedment in an Evolutionary Art context (also this should not be excluded for later competitions). On the other hand if a command list that generates a pattern from prototiles is available an image interpreter can use this list (and modified it) in every other programming and script language independent of the learning environment. And because the elements in the command list are logically independent from another they can be parallelized on this level which is of use especially if the image operations are also parallelized like in a programming language that can use the GPU (like [http://en.wikipedia.org/wiki/OpenGL OpenGL], [http://en.wikipedia.org/wiki/Vulkan_%28API%29 Vulkan], [http://en.wikipedia.org/wiki/OpenVG OpenVG] or [http://en.wikipedia.org/wiki/OpenCL OpenCL]). <br />
<br />
There is evidence that [http://en.wikipedia.org/wiki/Shape_grammar Shape Grammars] are well suited to represent patterns and tilings (for example: Ulu & ŞENER: [[A SHAPE GRAMMAR MODEL TO GENERATE ISLAMIC GEOMETRIC PATTERN]]. In: [[Generative Art 2009]]; Cenani & Cagdas: [[A Shape Grammar Study: Form Generation with Geometric Islamic Patterns]]. In: [[Generative Art 2007]]) therefore [http://www.grammatical-evolution.org/ Grammatical Genetic Programming Systems] would be one obvious choice for a learning environment.<br />
<br />
<br />
=Competition terms=<br />
<br />
* In the first competition the task is to built an Evolutionary Algorithms environment that can reproduce as much as possible of the known tilings with the command list approach. The environment and the settings must be made public available without any restrictive licensing. <br />
<br />
: In a first step the prototile or prototiles of a known tiling/pattern were identified based on an image for example retrieved from "B. Wichmann: The world of Patterns" (see [[#Tiling Classification in "B. Wichmann: The world of Patterns" | Tiling Classification]]) or from the [http://www.tilingsearch.org/ Tiling Database] also with Brian Wichmann. This could be done by human expertise, interactively or automatic if a good enough tile image is given. Automatic approaches must have some knowledge about euclidean geometry to correct measured angles and length. It is quite a task in experimental mathematics to deduce from measures to closed forms. <br />
<br />
: If the additional condition is given that a tile image should be reproduced exactly one can not only identify the types of prototiles but also the number of each prototile type. With this information an obvious stop criteria would be the use of all the members in the given prototile set. <br />
<br />
: In a second step prototile images were generated were monochrome prototiles are exactly drawn on a transparent background with no borders. The width and height measures of the prototiles must be balanced so that they fit together and could built a tile or pattern. The width and height of the prototile images define the width and height of the pattern image (see the [[#Notes to pattern image | Notes to pattern image]]). If a prototile is specified by one length (like the width of a equilateral triangle in the p3m1 case), the length should be specified with 1000 pixels. <br />
<br />
: If the goal would be solely reproducing existing tilings one could use existing algorithms for example in math environments like [http://www.wolfram.com/mathematica/ Mathematica] in combination with a general strategy to generate image command lists for any geometrically constructed pattern. But because the wider goal is exploring a design space such approaches should not be accepted. On the other hand Evolutionary Algorithms are in some cases implemented in math environments like [[Christian Jacob | Christian Jacobs]] [http://pages.cpsc.ucalgary.ca/~jacob/IEC/IEC%20Main%20Page/IEC%20Main%20Page.htm Evolvica] for [http://www.wolfram.com/mathematica/ Mathematica] so exploring the design space with Evolutionary Algorithms in such an math environment would be honored. <br />
<br />
* Each competitor (person or team) must verify the capability of his approach by submitting a minimum number of different tiles from different tile classes from "B. Wichmann: The world of Patterns" (number of tiles and number of tile classes must be specified).<br />
<br />
* The winning condition is the maximal number of submitted different tiles from different tile classes. <br />
<br />
* For the proof of the number of submitted tiles and their verifiability each competitor (person or team) must register in a wiki design_space_for_patterns_and_tilings (to be made) and every submitted tile must be documented there with the given page [[Design Space of Tiling Template | template]] (template sketch must be further specified). <br />
<br />
* Every entry in the [[Design Space of Tiling Template | template]] (text, code, command lists, images, ...) is published under a creative commons license that allow the unrestricted use for all non-commercial and commercial purposes for contemporary and future artists, illustrators, designers, ... [[#Note to CC license | Note to CC license]]<br />
<br />
* Competition start: 15.04.2015<br />
<br />
* Competition end: 15.01.2016<br />
<br />
* Announcement of the winner: 15.04.2016<br />
<br />
<br />
<br />
=Prize money=<br />
€€€ <br />
<br />
<br />
<br />
= Definition of a pattern generation task =<br />
<br />
'''Given:''' <br />
<br />
# One or more prototiles (polygon shapes): $S1 ( ..., $Sn) given as png files where the shape points are touching the canvas boarders and with transparent background. The shapes are monochromatic.<br />
# A pattern image $P with width $w_P and height $h_P that should be covered with the prototiles. [[#Notes to pattern image | Notes to pattern image]]<br />
# A set of image processing commands like (clone, rotate, mirror, translate).[[#Note to pattern image and image processing commands | Note to pattern image and image processing commands]]-[[#Note to 6-tuple extension approach | Note to 6-tuple extension approach]]<br />
# A fitness condition: overlap &rarr; min &and; gap &rarr; min (which defines the problem as a 2-objective minimization problem). [[#Notes to fitness condition | Notes to fitness condition]]<br />
<br />
<br />
'''Wanted:''' <br />
<br />
The Pareto front of solution candidates consisting of image processing command lists $comdo_list_j regarding to the 2-objective minimization problem overlap &rarr; min &and; gap &rarr; min (graphical each solution is a point in a Cartesian coordinate system with one axis is the gap measure and the other is the overlap measure). Each command list consists of 6-tuples $6_tuple_j_k of parameters for five CRMT commands: <br />
<br />
# coding of the clone command by using a prototile number that refers to a prototile in an image list $Shape_list: {0, ..., n}. <br />
# coding of the rotate command: [0,360[ degrees. [[#Note to rotation | Note to rotation]]<br />
# coding of a mirror command Flop: Fo.<br />
# coding of a mirror command Flip: Fi.<br />
# coding of a translate command with one value for the x-axis and one for the y-axis in one ($T) or two separate commands ($x, $y). [[#Notes to translation | Notes to translation]]<br />
<br />
Example implementations show that we must use a flexible coding scheme regarding the positions of the rotate and mirror commands because there are some combinatorial cases to consider that must be distinguished because the image processing commands are in general not commutative (the sequence matters). This means that a simple coding scheme with fixed positions like ($C, $Fo, $R, $Fi, $x, $y) can not be used. <br />
<br />
First of all one can say that the position of the clone and the compositing command is fixed: it is the first and last place in the command list. Regarding the rotate and the two mirror commands the following combinations are possible (including the first case were none of them were applied): <br />
<br />
($C, $x, $y), ($C, $R, $x, $y), ($C, $Fo, $x, $y), ($C, $Fi, $x, $y), ($C, $Fo, $R, $x, $y), ($C, $R, $Fo, $x, $y), ($C, $Fi, $R, $x, $y), ($C, $R, $Fi, $x, $y), ($C, $Fo, $Fi, $R, $x, $y)=($C, $Fi, $Fo, $R, $x, $y), ($C, $R, $Fo, $Fi, $x, $y)=($C, $R, $Fi, $Fo, $x, $y), ($C, $Fo, $R, $Fi, $x, $y), ($C, $Fi, $R, $Fo, $x, $y)<br />
<br />
Therefore it is necessary to also code the type of command like 'C' for clone, 'R' for rotate, 'Fo' for Flop, 'Fi' for Flip, 'x' for x-translation and 'y' for x-translation. <br />
<br />
The next fact that must be included is the use for parameters with the C, R, x, and y command: <br />
<br />
$C = 'C' . $prototile_nr; <br />
<br />
$R = 'R' . $rotation_degree; <br />
<br />
$x = 'x' . $x_value; <br />
<br />
$y = 'y' . $y_value; (or $T = 'T' . '_' . $x_value . '_' . $y_value;) <br />
<br />
With this components a flexible coding is possible that consider all possible positions of the commands. For example (C0, Fo, R-60, Fi, x250, y0) is coding the following processing pipeline: <br />
<br />
# Clone first prototile in image list (when list numbering starts with 0)<br />
# Flop<br />
# rotate it -60 degree (plus additional correction of rotation offset ([[#Note to rotation | Note to rotation]]))<br />
# Flip<br />
# composing_over with x-value of 250 and y-value of 0<br />
<br />
In PearlMagick this would be implemented as (see for details the[[p3m1 Reference Implementation | reference implementation of a p3m1-tile]]): <br />
<br />
$prototile_crm = $Shape_list->[0]->Clone();<br />
$prototile_crm = Flop();<br />
$prototile_crm->Rotate(degrees=>'-60', color=>'transparent'); <br />
$prototile_crm->Trim(); <br />
$prototile_crm->Flip(); <br />
$tile->Composite(image=>$prototile_crm, compose=>'over', x=>'250', y=>'0', color=>'transparent', matte=>'true');<br />
<br />
<br />
=Required components=<br />
1) Automatic Programming environment/Evolutionary Algorithm environment that generates populations of solution candidates.<br />
<br />
2) Image-interpreter that generates candidate images from the solution candidates by using a graphic program or library (like Image Magick or OpenGL). <br />
<br />
3) Fitness-evaluator that is counting the gap pixels and compute the overlapping pixels of the candidate images with the help of the command list. <br />
<br />
<br />
<br />
=Procedure=<br />
The following over all pseudo code assumes that the fitness evaluation can be done after a candidate image was generated and did not need to be inside the image generation process. Because of the lack of a technical definition of an overlap measure that can be computed only with the result image and the corresponding command list it is unclear if this kind of procedure is possible. <br />
<br />
Use the Evolutionary Algorithm-environment to generate an initial population of solution candidates: $comdo_list_t_0_j, j = 1, ..., n; <br />
<br />
Until ($stop_criterion == 0) {<br />
<br />
Use the Image-interpreter with solution candidates and given prototiles as input to generate candidate images: $image_t_j;<br />
<br />
Use the Fitness-evaluator to compute the fitness values $gap_j and $overlap_j for every candidate image;<br />
<br />
Check the stop criterion;<br />
<br />
if ($stop_criterion == 0) {Use the EvoAlgo environment for reproduction: apply a 2-objective method to generate a new population of solution candidates $comdo_list_t+1_j, j = 1, ..., n with the help of the fitness values} else {stop}; <br />
<br />
}; <br />
<br />
<br />
<br />
= Definition of the Pattern Design Space =<br />
The combinational pattern design space of this idea could be written as the Cartesian product<br />
<br />
PDS = S(poly) x S(com) x S(fit) x S($P) x S(dim) x S(geo)<br />
<br />
with<br />
<br />
# S(poly): Set of possible prototiles (if one prototile is used) or set of combinations of possible prototiles (if more than one prototile is used) [[#Note on pattern coloring | Note on pattern coloring]]<br />
# S(com): Set of possible commands (with {clone, rotate, mirror, translate} as the minimal set)<br />
# S(fit): Set of possible fitness conditions<br />
# S($P): Set of possible sizes of pattern image $P<br />
# S(dim): Set of possible dimensions<br />
# S(geo): Set of possible geometries<br />
<br />
In the first run/runs of this programming competition the Design Space should be constrained: <br />
# S(poly) = Set of prototiles that are generating a known tile or set of combinations of prototiles that are generating together a known tile.<br />
# S(com) = {clone, rotate, mirror, translate}.<br />
# S(fit) = {overlap &rarr; min &and; gap &rarr; min}.<br />
# S($P) = {($w_P, $h_P) = f($mult, $w_S_i, $h_S_i | i = 1, …, n)}, for example: $mult = 4, $w_P = $mult * max($w_S_i | i = 1, …, n), $h_P = $mult * max($h_S_i | i = 1, …, n).<br />
# S(dim) = {2}. <br />
# S(geo) = {euclidean}.<br />
<br />
<br />
<br />
=Public Relation strategy for the Competition=<br />
* '''Mail in general Evo Algo mailing lists'''<br />
** EC Digest The Evolutionary Computation Mail Digest: http://ec-digest.research.ucf.edu/ EC-Digest-l@listserv.gmu.edu<br />
** Yahoo GP news group: https://groups.yahoo.com/neo/groups/genetic_programming/info<br />
<br />
<br />
* '''Mail in mailing lists of Evo Algo software'''<br />
** ECJ (Java, http://cs.gmu.edu/~eclab/projects/ecj/): https://listserv.gmu.edu/cgi-bin/wa?SUBED1=ecj-interest-l&A=1 <br />
** EO Evolutionary Computation Framework (C++, http://eodev.sourceforge.net/): https://lists.sourceforge.net/lists/listinfo/eodev-main eodev-main@lists.sourceforge.net<br />
** Beagle - Open BEAGLE (C++, http://code.google.com/p/beagle/): http://groups.google.com/group/openbeagle-users<br />
** Deap (Python, http://code.google.com/p/deap/): https://groups.google.com/forum/#!forum/deap-users<br />
** HeuristicLab (?, http://dev.heuristiclab.com/): https://groups.google.com/forum/#!forum/heuristiclab<br />
** Watchmaker (Java, http://watchmaker.uncommons.org/): https://groups.google.com/forum/#!forum/watchmaker<br />
<br />
<br />
* '''Twitter'''<br />
** Deap (http://code.google.com/p/deap/): https://twitter.com/deapdev<br />
** BridgesMathArt: https://twitter.com/BridgesMathArt<br />
** MathArt: https://twitter.com/hashtag/MathArt<br />
** GenerativeArt: https://twitter.com/generativeart<br />
** AlgorithmicArt: https://twitter.com/hashtag/algorithmicart<br />
** https://twitter.com/lumenprize<br />
<br />
<br />
* '''Scientific Social Networks''' (ask question, make post, make announcement, ...)<br />
** https://www.researchgate.net/profile/Guenter_Bachelier : ask question<br />
** https://independent.academia.edu/G%C3%BCnterBachelier<br />
** HeuristicLab (http://dev.heuristiclab.com/): http://www.facebook.com/HeuristicLab<br />
<br />
<br />
* '''Post in online forum'''<br />
<br />
<br />
* '''Cooperation with blogger'''<br />
** http://blog.hackingevolution.net/keki-burjorjee/<br />
<br />
<br />
* '''Cooperation with conferences'''<br />
** EvoMUSART 2015 http://www.evostar.org/2015/cfp_evomusart.php Conference chairs: [[Colin G. Johnson]] (c.g.johnson ät kent.ac.uk), [[Adrian Carballal]] (adriancarballal ät gmail.com)<br />
** EuroGP 2015 http://www.evostar.org/2015/cfp_eurogp.php Programme Chairs: [[Penousal Machado]] (machado ät dei.uc.pt), Malcolm Heywood (mheywood ät cs.dal.ca)<br />
** GECCO<br />
<br />
<br />
* '''Cooperation with journals'''<br />
** Evolutionary Computation http://www.mitpressjournals.org/loi/evco http://www.researchgate.net/journal/1530-9304_Evolutionary_Computation<br />
** Genetic Programming and Evolvable Machines http://www.springer.com/computer/ai/journal/10710 http://gpemjournal.blogspot.de/ http://www.researchgate.net/journal/1389-2576_Genetic_Programming_and_Evolvable_Machines<br />
** Swarm and Evolutionary Computation http://www.journals.elsevier.com/swarm-and-evolutionary-computation/ https://www.researchgate.net/journal/2090-4908_International_Journal_of_Swarm_Intelligence_and_Evolutionary_Computation<br />
** Journal of Mathematics and the Arts http://www.tandfonline.com/toc/tmaa20/current#.VKU6FNegMhc https://www.researchgate.net/journal/1751-3472_Journal_of_Mathematics_and_the_Arts<br />
<br />
<br />
* '''Cooperation with scientific societies'''<br />
** SIGEVO - ACM Special Interest Group on Genetic and Evolutionary Computation http://sigevo.hosting.acm.org/wiki/tiki-index.php http://www.sigevolution.org/ https://www.researchgate.net/journal/1931-8499_ACM_SIGEVOlution Contact: Wolfgang Banzhaf (banzhaf ät mun.ca)<br />
<br />
<br />
=Future Directions=<br />
===Fitness functions===<br />
Experiments with other fitness conditions especially adding appropriate aesthetic measures for tilings and patterns: S(fit) = {overlap &rarr; min &and; gap &rarr; min &and; F(aest) &rarr; max}.<br />
<br />
=== Image manipulator===<br />
Extend the image interpreter to an image manipulator that manipulates the CRMT command lists and/or the associated list with prototiles/shapes. A design space of possible types of manipulations could be developed and this space could be explored with evolutionary methods, which requires again aesthetic fitness measures if such an exploration should be done automatically. This approach has connections to the tile'ish patterns below. Two use cases should be described: black and white (or gray scale) prototiles and color prototiles.<br />
<br />
- If black and white prototiles are used it doesn't matter if large gap artifacts arises if a prototile is rotated or translated because such a black region is becoming part of the black background (if the result is written in jpg). Such black and white patterns could be used as masks for color images and the outcome of the command list manipulations are interesting mask variants with conserved or broken symmetry. <br />
<br />
- If color prototiles are used large black region can be considered as aesthetically disruptive. In such a case a colorized background should be used perhaps the pattern that arises from the non manipulated CRMT command list, a transformed version of this, or a pattern with other color prototiles. <br />
<br />
Example: If there is a symmetric black and white tile/pattern is used like a p3m1-tile with its top-bottom symmetry two corresponding local CRMT command lists are identified and manipulated accordingly for example by translating the top triangle more to the top and the bottom triangle more to the bottom. In this case the symmetry is preserved but in the same time the symmetry of the p3m1-tile becomes broken. <br />
<br />
=== Non fitting prototiles===<br />
Experiments with prototile sets that do not fit exactly together viz tiles and pattern with known gaps (and/or overlaps) that are nevertheless interesting and aesthetic (tile'ish patterns). The fitness condition must be modified in this cases from a minimization to a sufficiency condition and possibly an appropriate aesthetic measure would be needed to explore this design subspace automatically.<br />
<br />
=== Finite subdivision rules===<br />
Reverse approach by [http://en.wikipedia.org/wiki/Finite_subdivision_rule Finite subdivision rules]: Given is a shape that acts like the pattern image $P with a given tiling. A subdivision rule changes that tiling by subdividing the given polygon into smaller polygons which can be continued iteratively. After a stop criteria holds the given tiling is analyzed (by hand, interactively or automatic) to identify the polygon types (prototiles) and the number of each type that built together the tile. Then a tile learning procedure (from previous iterations of the competition) generates a command list that pushes the prototiles together so that the tiling can be used for image editing purposes. The use of evolutionary computation can be twofold here: First a Genetic Programming approach can search for subdivision rules with interesting and aesthetic results and in the second step an evolutionary algorithm search for a command list that reproduces the pattern from the given prototile set. <br />
<br />
=== Generalized Tangrams===<br />
Explore relationships to generalized [http://en.wikipedia.org/wiki/Tangram tangram]: Generating of prototiles by subdivision of a shape and searching for interesting/aesthetic configurations of the prototiles within a larger pattern image (no gap &rarr; min condition). <br />
<br />
=== Vector graphics===<br />
Experiments with vector graphics: There are possibilities to script vector objects in [http://inkscape.org/ Inkscape]: [http://www.techrepublic.com/blog/linux-and-open-source/four-ways-to-generate-or-process-inkscape-vector-graphics-automatically/ Four ways to generate or process Inkscape vector graphics automatically]. With [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine.html --verb on the command line] Inkscape can process basic geometric commands like --verb ObjectFlipVertically, but because the verb-approach can not process parameters it is not yet clear if this approach is directly powerful enough to interpret the CRMT-lists. But [http://en.wikipedia.org/wiki/Scalable_Vector_Graphics SVG] images are defined in [http://en.wikipedia.org/wiki/XML XML] files therefore components of vector objects and their behavior can be edited with text editors so methods and parameters could be specified on this way. In conclusion it seems plausible that a CRMT-vector-image-interpreter could be made, that takes a vector object in the shape of a prototile and a CRMT-command list and generates a tile or pattern. <br />
<br />
Inkscape has the ability to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles.html generate tiles] but again restricted to to [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Tiles-Symmetries.html plane groups]. With the use of CRMT-lists the large design space of tilings and pattern could be used in vector graphic formats. <br />
<br />
Inkscape is able to cut out vector image parts with the [http://tavmjong.free.fr/INKSCAPE/MANUAL/html/Clip.html Clipping and Masking] methods. If a clipping path is shaped like a polygon it can be used to generate a color prototile that a CRMT-command list transforms to a tile or pattern. <br />
<br />
=== Additional processing commands===<br />
Experiments with additional image processing commands: scale; affine matrix transformation or more general the distortion transformations in ImageMagick with affine and lots of other parameters (http://www.imagemagick.org/Usage/distorts/): Affine, AffineProjection, ScaleRotateTranslate SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize. Even with an added scaling command there are [http://en.wikipedia.org/wiki/Iterated_function_system iterative function systems IFS] possible with the opportunity to explore the aesthetics of self similarity within the general design space approach.<br />
<br />
===Ornament deformations===<br />
Parquet/ornament deformations (see Craig S. Kaplan: [[Computer Graphics and Geometric Ornamental Design]], pp. 57): Searching for interesting/aesthetic mathematical deformation functions, analyzing the deformed ornaments to identify the polygon types (prototiles) and the number of each type that built together the ornament just like in the case of the Finite subdivision rules. Then using a