Генетическое программирование

  • Вид работы:
    Контрольная работа
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    5,93 Кб
  • Опубликовано:
    2016-06-24
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Генетическое программирование












 

Курсовая работа

Генетическое программирование

 



Введение


Генетические алгоритмы являются одним из современных и быстро развивающихся направлений в искусственном интеллекте. С их помощью могут быть найдены решения многих задач в различных областях. Примерами таких задач являются: задачи синтеза расписаний, задачи планирования работ и распределения ресурсов, задачи маршрутизации транспортных средств, синтез топологии сетей различного назначения, построение искусственных нейронных сетей, деревьев принятия решений, автоматическое построение программ, проектирование мультиагентных систем, конечных автоматов и клеточных автоматов. К сожалению, в нашей стране этой области уделяется мало внимания. Одна из задач работы - хотя бы частично восполнить этот пробел.

Генетическое программирование - разновидность генетического алгоритма, в которой вместо низкоуровневого представления объектов (битовые строки) используется высокоуровневое представление: деревья разбора программ, диаграммы переходов конечных автоматов, и т.д. С помощью генетического программирования наиболее эффективно решаются задачи автоматического построения программ, конечных автоматов, клеточных автоматов.

Автоматное программирование - парадигма программирования, при использовании которой программу предлагается строить в виде совокупности поставщиков событий, объектов управления и системы управляющих взаимодействующих конечных автоматов. Поставщик событий характеризуется множеством событий, которые он может генерировать. Объект управления характеризуется множеством вычислительных состояний, а также двумя наборами функций: множеством предикатов, отображающих вычислительное состояние в логическое значение (истина или ложь), и множеством действий, позволяющих изменять вычислительное состояние. Управляющий автомат определяется конечным множеством управляющих состояний, функцией переходов и функцией действий.

Управляющие конечные автоматы часто характеризуются сложным поведением, как например, в задачах об «Умном муравье» и «Летающие тарелки», рассматриваемых в настоящей работе. В таком случае их проектирование представляет собой весьма трудоемкую задачу. Эта задача становится еще более сложной в случае проектирования системы взаимодействующих автоматов или в случае наличия в системе нескольких взаимодействующих агентов, каждый из которых управляется отдельным автоматом. Возникает естественное желание - автоматизировать процесс проектирования автоматов, поручив основную работу компьютеру.

1. Анализ технического задания


Необходимо построить приложение, позволяющее находить интеграл для функции y = (x).

Данное приложение в качестве входных данных должно обрабатывать следующего формата, первая строка файла содержит целое число N (1N≤100).

Следующие N строк содержат пары вещественных чисел вида: xi, yi.

Эти пары разделяет пробел, каждая пара начинается с новой строки. Эти пары упорядочены по х, и расстояние по х между двумя парами является фиксированным.         Здесь необходимо найти оптимальное представление для интеграла функции.

{+,-,*,/, sin, cos}

2. Описание промежуточных узлов

алгоритм приложение интеллект интеграл

BitTableProblem.java

package main;ec. EvolutionState;ec. Individual;ec.gp.GPIndividual;ec.gp.GPProblem;ec.gp.koza. KozaFitness;ec.simple. SimpleProblemForm;java.io. FileInputStream;java.io. FileNotFoundException;java.util. Scanner;class DoubleTableProblem extends GPProblem implements SimpleProblemForm {

n, m;[][] matr;double [] arr = new double[5];

double get (int pos) {(pos >n) {0.0d;

}arr [pos-1];

}void readfile() throws FileNotFoundException {sc= new Scanner (new FileInputStream («input.txt»));

=sc.nextInt();=sc.nextInt();

=new double [m] [n+1];(int i=0; i<m; i++)(int j=0; j<=n; j++){[i] [j]=sc.nextDouble();

} catch (RuntimeException re) {.out.println («» + i +» " + j);re;

}

}

@Overridevoid evaluate (EvolutionState es, Individual indvdl, int subpop, int threadnum) {(indvdl.evaluated) {;

}hits = 0;data = (DoubleData) input;

{();

} catch (FileNotFoundException ex) {new RuntimeException(ex);

}

pogr=0;

(int i =0; i<matr.length; i++) {(i);estimated = matr[i] [n];

((GPIndividual) indvdl).trees[0].child.eval (es, threadnum, data, stack, (GPIndividual) indvdl, this);delta = Math.abs (estimated-data.value);+= delta;(delta <= 0.001) {++;

}

}

KozaFitness fitness = (KozaFitness) indvdl.fitness;.setStandardizedFitness (es, pogr);.evaluated = true;.hits = hits;

}void parse (int value) {(int i=0; i<=n; i++)[i]=matr[value] [i];

}

}

DoubleData.java

package main;

ec.gp.GPData;

class DoubleData extends GPData {double value;

@Overridevoid copyTo (GPData data) {

((DoubleData) data).value = value;

}

}

Chact.java

package main;ec. EvolutionState;ec. Problem;ec.gp.ADFStack;ec.gp.GPData;ec.gp.GPIndividual;ec.gp.GPNode;

class Chast extends GPNode {

@OverrideString toString() {«/»;

}

@Overrideint expectedChildren() {2;

}

@Overridevoid eval (EvolutionState es, int i, GPData input, ADFStack adfs, GPIndividual gpi, Problem prblm) {data = (DoubleData) input;[0].eval (es, i, input, adfs, gpi, prblm);

result = data.value;

[1].eval (es, i, input, adfs, gpi, prblm);/=data.value;.value = result;

}

}

Sin.java

package main;

ec. EvolutionState;ec. Problem;ec.gp.ADFStack;ec.gp.GPData;ec.gp.GPIndividual;ec.gp.GPNode;

class Sin extends GPNode {

@OverrideString toString() {«sin»;

}

@Overrideint expectedChildren() {1;

}

@Overridevoid eval (EvolutionState es, int i, GPData input, ADFStack adfs, GPIndividual gpi, Problem prblm) {data = (DoubleData) input;[0].eval (es, i, input, adfs, gpi, prblm);result = data.value;.value =Math.sin(result);

}

}

Cos.java

package main;

ec. EvolutionState;ec. Problem;ec.gp.ADFStack;ec.gp.GPData;ec.gp.GPIndividual;ec.gp.GPNode;

class Cos extends GPNode {

}

@Overrideint expectedChildren() {1;

}

@Overridevoid eval (EvolutionState es, int i, GPData input, ADFStack adfs, GPIndividual gpi, Problem prblm) {data = (DoubleData) input;[0].eval (es, i, input, adfs, gpi, prblm);

result = data.value;.value =Math.cos(result);

}

}

Proiz.java

main;

ec. EvolutionState;ec. Problem;ec.gp.ADFStack;ec.gp.GPData;ec.gp.GPIndividual;ec.gp.GPNode;

class Proiz extends GPNode {

@OverrideString toString() {«*»;

}

@Overrideint expectedChildren() {2;

}

@Overridevoid eval (EvolutionState es, int i, GPData input, ADFStack adfs, GPIndividual gpi, Problem prblm) {data = (DoubleData) input;[0].eval (es, i, input, adfs, gpi, prblm);result = data.value;

[1].eval (es, i, input, adfs, gpi, prblm);*=data.value;.value = result;

}

}

Raz.java

package main;

ec. EvolutionState;ec. Problem;ec.gp.ADFStack;ec.gp.GPData;ec.gp.GPIndividual;ec.gp.GPNode;

class Raz extends GPNode {

@OverrideString toString() {«-»;

}

@Overrideint expectedChildren() {2;

}

@Overridevoid eval (EvolutionState es, int i, GPData input, ADFStack adfs, GPIndividual gpi, Problem prblm) {data = (DoubleData) input;[0].eval (es, i, input, adfs, gpi, prblm);result = data.value;[1].eval (es, i, input, adfs, gpi, prblm);=data.value;.value = result;

}

}

Summ.java

package main;

ec. EvolutionState;ec. Problem;ec.gp.ADFStack;ec.gp.GPData;ec.gp.GPIndividual;ec.gp.GPNode;

public class Summ extends GPNode {

@OverrideString toString() {«+»;

}

@Overrideint expectedChildren() {2;

}

@Overridevoid eval (EvolutionState es, int i, GPData input, ADFStack adfs, GPIndividual gpi, Problem prblm) {data = (DoubleData) input;[0].eval (es, i, input, adfs, gpi, prblm);result = data.value;

[1].eval (es, i, input, adfs, gpi, prblm);+=data.value;.value = result;

}

}

X.java

package main;ec. EvolutionState;ec. Problem;ec.gp.ADFStack;ec.gp.GPData;ec.gp.GPIndividual;ec.gp.GPNode;

class X extends GPNode {

@OverrideString toString() {«x»;

}

@Overrideint expectedChildren() {return 0;}

@Overridevoid eval (EvolutionState es, int i, GPData gpdata, ADFStack adfs, GPIndividual gpi, Problem prblm) {data = (DoubleData) gpdata;table = (DoubleTableProblem) prblm;.value = table.get(1);

}

}

Класс, генератор файла с парами значений (Myfunction.java)

package main;

java.io. File;java.io.IOException;java.io. PrintWriter;class MyFunction {F (double x) {otv;(x==1) {= 0;

} else {= Math.sin(x)+(Math.pow (x, 2)/(1-x));

}otv;

}

void printToFile (int n) throws IOException {matrFx[][] = new double[n] [2];file = new File («input.txt»);

(! file.exists()) {.createNewFile();

}

(PrintWriter out = new PrintWriter (file.getAbsoluteFile())) {.println («1 «+n);.println («0 0,0»);sum1 = 0;sum2 = 0;(int i=1; i<n; i++) {(i % 2==0) {+= F (matrFx[i] [1]);

}(i % 2==1) {+= F (matrFx[i] [1]);

}[i] [1]=(0.33333333333334)*(F(0)+F(n)+2*sum2+4*sum1);itfx = «»;in = String.valueOf (matrFx[i] [1]);[] ins = in.toCharArray();

(int j=0; j<ins.length; j++) {(ins[j] == '.') {[j]=', ';

}+= ins[j];

}.println (i+» «+itfx);

}

}

}

/**

* @throws java.io.IOException

*/static void main (String[] args) throws IOException {.out.println («Генерируем файл»);abc = new MyFunction1 ();.printToFile(100);

}

}

Заключение

В ходе выполнения работы был реализован пример генетического программирования согласно индивидуальному варианту

Список использованных источников


1.   Алексеев В.М., Тихомиров В.М., Фомин С.В. Оптимальное управление. - М.: Наука, УДК 519.6, - 223 c., 1979, 406 с.

2.      Колесников А.А. Аналитическое конструирование нелинейных оптимальных систем. Таганрог: Изд-во ТРТУ, 1984, 72 с.

.        Рафиков Г.Ш. Цифровые системы управления. Конспект лекций. - Донецк, 1999, 102 с.

4.      Tsinias J. Sufficient Lyapunov-like conditions for stabilization Mat. Contr. Signals Syst. 1989. Vol. 2. #12. Pр 343 - 357.

.        Егоров А.И. Оптимальное управление тепловыми и диффузионными процессами. М.: Наука, 1978, 468 с.

Похожие работы на - Генетическое программирование

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!