Линейное генетическое программирование (LGP) является частным подмножеством генетического программирования, где компьютерные программы в популяции представлены как последовательность инструкций из императивного языка программирования или машинного языка. Поток данных на основе графа, который является результатом многократного использования регистра содержание и наличие структурно неэффективного кода (интроны ) - два основных отличия этого генетического представления от более распространенного древовидного генетического программирования (TGP) вариант.
В генетическом программировании (GP) линейное дерево - это программа, состоящая из переменного числа унарных функций и одного терминала. Обратите внимание, что линейное дерево GP отличается от битовой строки генетических алгоритмов, поскольку совокупность может содержать программы разной длины и может быть более двух типов функций или более двух типов терминалов.
Поскольку программы LGP в основном представлены линейной последовательностью инструкций, они проще читать и работать с ними, чем их древовидные аналоги. Например, простая программа, написанная на языке LGP Slash / A, выглядит как последовательность инструкций, разделенных косой чертой:
input / # получает ввод от пользователя и сохраняет его в регистре F 0 / # устанавливает регистр I = 0 save / # сохраняет содержимое F в вектор данных D [I] (т.е. D [0]: = F) input / # получает другой ввод, сохраняет в F add / # добавляет к F текущие данные, на которые указывает на I (т.е. F: = F + D [0]) output /. # выводит результат из F
Представляя такой код в формате байт-код, то есть в виде массива байтов, каждый из которых представляет другую инструкцию, можно выполнять операции mutation, просто изменяя элемент такого массива.