<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Linear_genetic_programming</id>
	<title>Linear genetic programming - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Linear_genetic_programming"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Linear_genetic_programming&amp;action=history"/>
	<updated>2026-05-07T15:48:24Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Linear_genetic_programming&amp;diff=5535123&amp;oldid=prev</id>
		<title>imported&gt;Bender the Bot: /* External links */ HTTP to HTTPS for SourceForge</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Linear_genetic_programming&amp;diff=5535123&amp;oldid=prev"/>
		<updated>2025-08-09T21:35:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;External links: &lt;/span&gt; HTTP to HTTPS for &lt;a href=&quot;/wiki143/index.php?title=SourceForge&quot; title=&quot;SourceForge&quot;&gt;SourceForge&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Previous revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:35, 9 August 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l51&quot;&gt;Line 51:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 51:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[https://web.archive.org/web/20150801073202/http://digitalbiology.net/ DigitalBiology.NET] Vertical search engine for GA/GP resources&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[https://web.archive.org/web/20150801073202/http://digitalbiology.net/ DigitalBiology.NET] Vertical search engine for GA/GP resources&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[https://web.archive.org/web/20060816011453/http://www.aimlearning.com/ Discipulus] Genetic-Programming Software&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[https://web.archive.org/web/20060816011453/http://www.aimlearning.com/ Discipulus] Genetic-Programming Software&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http&lt;/del&gt;://ugp3.sourceforge.net/ MicroGP] Genetic-Programming Software (open source)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https&lt;/ins&gt;://ugp3.sourceforge.net/ MicroGP] Genetic-Programming Software (open source)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[https://github.com/Zhixing1020/Linear-Genetic-Programming-LGP-and-Applications] An open-source Linear GP project based on a Java-based Evolutionary Computation Research System (ECJ).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[https://github.com/Zhixing1020/Linear-Genetic-Programming-LGP-and-Applications] An open-source Linear GP project based on a Java-based Evolutionary Computation Research System (ECJ).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[http://www.genetic-programming.org ]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[http://www.genetic-programming.org ]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Bender the Bot</name></author>
	</entry>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Linear_genetic_programming&amp;diff=968649&amp;oldid=prev</id>
		<title>imported&gt;Geysirhead: new key for Category:Genetic programming: &quot;#&quot; using HotCat</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Linear_genetic_programming&amp;diff=968649&amp;oldid=prev"/>
		<updated>2024-12-27T09:17:29Z</updated>

		<summary type="html">&lt;p&gt;new key for &lt;a href=&quot;/wiki143/index.php?title=Category:Genetic_programming&quot; title=&quot;Category:Genetic programming&quot;&gt;Category:Genetic programming&lt;/a&gt;: &amp;quot;#&amp;quot; using &lt;a href=&quot;/wiki143/index.php?title=WP:HC&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:HC (page does not exist)&quot;&gt;HotCat&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Evolutionary algorithms}}&lt;br /&gt;
:&amp;#039;&amp;#039;&amp;quot;Linear genetic programming&amp;quot; is unrelated to &amp;quot;[[linear programming]]&amp;quot;.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Linear genetic programming&amp;#039;&amp;#039;&amp;#039; (LGP)&amp;lt;ref name=book&amp;gt;M. Brameier, W. Banzhaf, &amp;quot;[https://link.springer.com/book/10.1007/978-0-387-31030-5 Linear Genetic Programming]&amp;quot;, Springer, New York, 2007&amp;lt;/ref&amp;gt; is a particular method of [[genetic programming]] wherein [[computer programs]] in a population are represented as a sequence of [[Instruction (computer science)|register-based instruction]]s from an [[Imperative programming|imperative programming language]] or [[Machine code|machine language]]. The adjective &amp;quot;linear&amp;quot; stems from the fact that each LGP program is a sequence of instructions and the sequence of instructions is normally executed sequentially. Like in other programs, the data flow in LGP can be modeled as a graph that will visualize the potential multiple usage of [[Processor register|register]] contents and the existence of structurally noneffective code ([[introns]]) which are two main differences of this [[genetic representation]] from the more common tree-based [[genetic programming]] (TGP) variant.&amp;lt;ref name=Brameier&amp;gt;Brameier, M.: &amp;quot;[https://eldorado.uni-dortmund.de/handle/2003/20098 On linear genetic programming] {{webarchive|url=https://web.archive.org/web/20070629120053/https://eldorado.uni-dortmund.de/handle/2003/20098 |date=2007-06-29 }}&amp;quot;, Dortmund, 2003&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;W. Banzhaf, P. Nordin, R. Keller, F. Francone, [https://www.amazon.com/Genetic-Programming-Introduction-Artificial-Intelligence/dp/155860510X Genetic Programming - An Introduction], Morgan Kaufmann, Heidelberg/San Francisco, 1998&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite book | author1=Poli, R.|author2= Langdon, W. B.|author3= McPhee, N. F. |year=2008 |title=A Field Guide to Genetic Programming | url=https://archive.org/details/AFieldGuideToGeneticProgramming| publisher=Lulu.com, freely available from the internet | isbn = 978-1-4092-0073-4}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Like other Genetic Programming methods, &amp;#039;&amp;#039;&amp;#039;Linear genetic programming&amp;#039;&amp;#039;&amp;#039; requires the input of data to run the program population on. Then, the output of the program (its behaviour) is judged against some target behaviour, using a fitness function. However, LGP is generally more efficient than &amp;#039;&amp;#039;&amp;#039;tree genetic programming&amp;#039;&amp;#039;&amp;#039; due to its two main differences mentioned above: Intermediate results (stored in registers) can be reused and a simple intron removal algorithm exists&amp;lt;ref name=book/&amp;gt; that can be executed to remove all non-effective code prior to programs being run on the intended data. These two differences  often result in compact solutions and substantial computational savings compared to the highly constrained data flow in trees and the common method of executing all tree nodes in TGP. Furthermore, LGP naturally has multiple outputs by defining multiple output registers and easily cooperates with [[Control flow|control flow operations]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Linear genetic programming&amp;#039;&amp;#039;&amp;#039; has been applied in many domains, including system modeling and system control with considerable success.&amp;lt;ref&amp;gt;M. Brameier, W. Banzhaf, [https://citeseerx.ist.psu.edu/document?repid=rep1&amp;amp;type=pdf&amp;amp;doi=7cb0f6755e325494afbda4f822026e8e6953ffe1 A Comparison of Linear Genetic Programming and Neural Networks in Medical Data Mining]&amp;quot;, &amp;#039;&amp;#039;IEEE Transactions on Evolutionary Computation&amp;#039;&amp;#039;, &amp;#039;&amp;#039;5&amp;#039;&amp;#039; (2001) 17-26&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;A. Guven, [https://link.springer.com/article/10.1007/s12040-009-0022-9 Linear genetic programming for time-series modelling of daily flow rate], &amp;#039;&amp;#039;J. Earth Systems Science&amp;#039;&amp;#039;, &amp;#039;&amp;#039;118&amp;#039;&amp;#039; (2009) 137-146&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;R. Li, B.R. Noack, L. Cordier, J. Boree, F. Harambat, [https://link.springer.com/article/10.1007/s00348-017-2382-2 Drag reduction of a car model by linear genetic programming control], &amp;#039;&amp;#039;Experiments in Fluids&amp;#039;&amp;#039;, &amp;#039;&amp;#039;58&amp;#039;&amp;#039; (2017) 103&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;P.-Y. Passagia, A. Quansah, N. Mazellier, G.Y. Cornejo Maceda, A. Kourta, [https://aip.scitation.org/doi/full/10.1063/5.0087874 Real-time feedback stall control of an airfoil at large Reynolds numbers using linear genetic programming], &amp;#039;&amp;#039;Physics of Fluids&amp;#039;&amp;#039;, 34 (2022) 045108&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Linear genetic programming&amp;#039;&amp;#039;&amp;#039; should not be confused with &amp;#039;&amp;#039;&amp;#039;linear tree&amp;#039;&amp;#039;&amp;#039; programs in tree genetic programming, program composed of a variable number of unary functions and a single [[leaf node|terminal]]. Note that linear tree GP differs from bit string [[genetic algorithms]] since a population may contain programs of different lengths and there may be more than two types of functions or more than two types of terminals.&amp;lt;ref&amp;gt;&lt;br /&gt;
[http://www.cs.ucl.ac.uk/staff/W.Langdon/FOGP/ Foundations of Genetic Programming].&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples of LGP programs==&lt;br /&gt;
&lt;br /&gt;
Because LGP programs are basically represented by a linear sequence of instructions, they are simpler to read and to operate on than their tree-based counterparts. For example, a simple program written to solve a Boolean function problem with 3 inputs (in R1, R2, R3) and one output (in R0), could read like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
R4 = R2 AND R3&lt;br /&gt;
R0 = R1 OR R4&lt;br /&gt;
R0 = R3 AND R0&lt;br /&gt;
R4 = R2 AND R4   # This is a non-effective instruction&lt;br /&gt;
R0 = R0 OR R2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
R1, R2, R3 have to be declared as input (read-only) registers, while R0 and R4 are declared as calculation (read-write) registers. This program is very simple, having just 5 instructions. But mutation and crossover operators could work to increase the length of the program, as well as the content of each of its instructions.&lt;br /&gt;
&lt;br /&gt;
Note that one instruction is non-effective or an intron (marked), since it does not impact the output register R0. Recognition of those instructions is the basis for the intron removal algorithm which is used analyze code prior to execution. Technically, this happens by copying an individual and then run the intron removal once. The copy with removed introns is then executed as many times as dictated by the number of training cases. Notably, the original individual is left intact, so as to continue participating in the evolutionary process. It is only the copy that is executed that is compressed by removing these &amp;quot;structural&amp;quot; introns.&lt;br /&gt;
&lt;br /&gt;
Another simple program, this one written in the LGP language [https://github.com/arturadib/slash-a Slash/A] looks like a series of instructions separated by a slash:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
input/   # gets an input from user and saves it to register F&lt;br /&gt;
0/       # sets register I = 0&lt;br /&gt;
save/    # saves content of F into data vector D[I] (i.e. D[0] := F)&lt;br /&gt;
input/   # gets another input, saves to F&lt;br /&gt;
add/     # adds to F current data pointed to by I (i.e. F := F + D[0])&lt;br /&gt;
output/. # outputs result from F&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
By representing such code in [[bytecode]] format, i.e. as an array of bytes each representing a different instruction, one can make [[Mutation (genetic algorithm)|mutation]] operations simply by changing an element of such an array.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Multi expression programming]]&lt;br /&gt;
* [[Cartesian genetic programming]]&lt;br /&gt;
* [[Grammatical evolution]]&lt;br /&gt;
* [[Genetic programming]]&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[https://github.com/arturadib/slash-a Slash/A] A programming language and C++ library specifically designed for linear GP&lt;br /&gt;
*[https://web.archive.org/web/20150801073202/http://digitalbiology.net/ DigitalBiology.NET] Vertical search engine for GA/GP resources&lt;br /&gt;
*[https://web.archive.org/web/20060816011453/http://www.aimlearning.com/ Discipulus] Genetic-Programming Software&lt;br /&gt;
*[http://ugp3.sourceforge.net/ MicroGP] Genetic-Programming Software (open source)&lt;br /&gt;
*[https://github.com/Zhixing1020/Linear-Genetic-Programming-LGP-and-Applications] An open-source Linear GP project based on a Java-based Evolutionary Computation Research System (ECJ).&lt;br /&gt;
*[http://www.genetic-programming.org ]&lt;br /&gt;
{{Evolutionary computation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Genetic programming|#]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Geysirhead</name></author>
	</entry>
</feed>