Разработка роботизированной платформы
Обзор методов реализации алгоритмов искусственного интеллекта. Примеры интеллектуальных систем, основанных на алгоритмах самообучения и кластеризации данных. Создание общей структурной схемы. Выбор языков программирования и инструментальных средств.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 20.08.2017 |
Размер файла | 1,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Развитие и совершенствование разработанной системы
Для дальнейшего развития системы и возможного улучшения получаемых результатов были выявлены следующие пути работ:
объединение клиентской и серверной частей в единое устройство (при наличии возможности), что позволит избежать использования сетевых протоколов передачи данных и уменьшить время отклика каждой из частей системы;
разработка системы предварительного анализа входных и выходных данных системы, позволяющей максимально автоматизировать процесс нормализации данных и минимизировать вмешательство пользователей;
для систем, включающих клиент, схожий с разработанным (роботизированная передвигающаяся платформа) - увеличение количества датчиков, добавление контактных датчиков для более точной фиксации столкновений клиента, расширение угла обзора цифровой видеокамеры, что позволит более точно определять имеющуюся ситуацию и контролировать происходящие вокруг события.
Результаты, полученные каждым автором работы
Ниже представлены списки проделанных каждым автором работ в рамках выполнения всей работы.
Некрасов Даниил:
выбор и реализация алгоритма самообучения;
выбор и реализация методов предварительной обработки входных данных;
проведение конечного обучения и тестирования системы.
Русанов Андрей:
выбор элементной базы клиентской части системы;
реализация программных интерфейсов клиентской и серверной частей системы;
сборка устройства-клиента;
тестирование и отладка клиентской части системы.
Список использованных источников
1. Guizzo E.: How google's self-driving car works // IEEE Spectrum Online, October, vol.18, 2011.
2. Rojo J., Rojas R.: Spirit of Berlin: An Autonomous Car for the DARPA Urban Challenge Hardware and Software Architecture, 2007.
3. Marc Raibert, Kevin Blankespoor, Gabriel Nelson, Rob Playter: BigDog, the Rough-Terrain Quadruped Robot, Boston Dynamics, Waltham, USA, 2008
4. Atlas - The Agile Anthropomorphic Robot // BOSTONDYNAMICS.com: официальный сайт компании Boston Dynamics. URL: http://www.bostondynamics.com/bd_about.html (дата обращения: 21.04.2017)
5. Metz C.: Google's AI Wins Pivotal Second Game in Match With Go Grandmaster. // Wired News, 10 March 2016
6. Maas D.: How AlphaGo Works. // Maas Digital, 28 January 2016
7. Documentation for Arduino Uno // ARDUINO. CC: официальный сайт разработчиков. URL: https: // www.arduino. cc/en/Main/ArduinoBoardUno (дата обращения: 20.10.2016)
8. Raspberry Pi documentation // RASPBERRYPI.org: официальный сайт разработчиков / Raspberry Pi Foundation. URL: https: // www.raspberrypi.org/documentation/ (дата обращения: 10.01.2017)
9. Флах П. Машинное обучение. Наука и искусство построения алгоритмов, которые извлекают знания из данных // Litres, 2017.
10. Hartigan J. A., Wong M. A. Algorithm AS 136: A k-means clustering algorithm // Journal of the Royal Statistical Society. Series C (Applied Statistics). - 1979. - Т.28. - №.1. - С.100-108.
11. Кохонен Т. Самоорганизующиеся карты Пер. с англ // М.: Бином. Лаборатория знаний. - 2008
12. RaspiCam Documentation // RASPBERRYPI.org: официальный сайт разработчиков / Raspberry Pi Foundation, июль 2013. URL: https: // www.raspberrypi.org/wp-content/uploads/2013/07/RaspiCam-Documentation. pdf
13. Ultrasonic ranging module: HC-SR04 documentation // ITead Studio. URL: http://iarduino.ru/lib/HC-SR04. pdf (дата обращения: 3.03.2017)
14. Некоторые подходы к организации содержательного поиска изображений и видеоинформации // Под ред. ИПМ им. М.В. Келдыша РАН, Россия, Москва. 2002
Приложения
Приложение 1
Исходный код скрипта, передающий коды действий клиенту
#! /usr/bin/python3
import socket
import sys,tty,termios
s = socket. socket (socket. AF_INET, socket. SOCK_STREAM)
host ='192.168.43.122'
port =8000
s. connect ( (host,port))
#! /usr/bin/env python
import sys
import termios
import contextlib
@contextlib. contextmanager
def raw_mode (file):
old_attrs = termios. tcgetattr (file. fileno ())
new_attrs = old_attrs [:]
new_attrs [3] = new_attrs [3] & ~ (termios. ECHO | termios. ICANON)
try:
termios. tcsetattr (file. fileno (), termios. TCSADRAIN, new_attrs)
yield
finally:
termios. tcsetattr (file. fileno (), termios. TCSADRAIN, old_attrs)
def main ():
print 'exit with ^C or ^D'
with raw_mode (sys. stdin):
try:
while True:
ch = sys. stdin. read (1)
if not ch or ch == chr (4):
break
while (1):
k=ord (ch)
if k! ='': break
if k==119:
s. send ('1')
elif k==120:
s. send ('4')
elif k==101:
s. send ('3')
elif k==113:
s. send ('2')
elif k==122:
s. send ('5')
elif k==99:
s. send ('6')
elif k==115:
s. send ('0')
else:
print "not an arrow key!"
except (KeyboardInterrupt, EOFError):
pass
if __name__ == '__main__':
main ()
s. close ()
Приложение 2
Исходный код скрипта, считывающий показания датчиков
import RPi. GPIO as GPIO
import io
import time
from socket import *
from io import BytesIO
from time import sleep
from picamera import PiCamera
from PIL import Image
import struct
import serial
host = '192.168.43.122'
port = 8000
addr = (host,port)
tcp_socket = socket (AF_INET, SOCK_STREAM)
tcp_socket. bind (addr)
tcp_socket. listen (5)
conn, addr = tcp_socket. accept ()
GPIO. setwarnings (False)
GPIO. setmode (GPIO. BOARD)
TRIG = 16
ECHO = 18
GPIO. setup (TRIG, GPIO. OUT, initial=0)
GPIO. setup (ECHO, GPIO. IN)
stream = io. BytesIO ()
camera = PiCamera ()
camera. color_effects = (128,128)
camera. resolution = (320,240)
camera. start_preview ()
ser = serial. Serial ('/dev/ttyUSB0', 9600)
outfile = open ('out', 'wb')
try:
while True:
comand = conn. recv (1024)
GPIO. output (TRIG,1)
time. sleep (0.00001)
GPIO. output (TRIG,0)
while GPIO. input (ECHO) == 0:
pass
start = time. time ()
while GPIO. input (ECHO) == 1:
pass
stop = time. time ()
distance = int ( (stop - start) *17000)
camera. capture (stream, format='jpeg')
stream. seek (0)
image = Image. open (stream)
#stream. seek (0)
#stream. truncate (0)
graylist = []
rgblist = list (image. getdata ())
for rgbpixel in rgblist:
graylist. append (rgbpixel [0]);
graylist. append (distance)
graylist. append (int (comand))
outfile. write (str (graylist) + '\n')
ser. write (str (comand) +'; \n')
time. sleep (0.3)
ser. write ('0; \n')
stream. seek (0)
stream. truncate (0)
except KeyboardInterrupt:
GPIO. cleanup ()
tcp_socket. close ()
Приложение 3
Исходный код класса "teacher"
teacher. h
#ifndef teacher_H
#define teacher_H
#include "som. h"
#include "neuron. h"
#include <stdio. h>
#include <algorithm>
struct situation_act
{
neuron situation;
unsigned int act;
};
#define IMAGE_LEN 76800
#define MAXERA 100
#define ACTIONMAX 7
#define MAPS_FOLDER "saves/maps"
#define TRANSLATOR_FOLDER "saves/translator"
class teacher
{
public:
teacher ();
void train (std:: string trainingSetFolder, float Rcritical, float v, float dv);
void test (std:: string testFolder, int testNumber);
private:
typedef std:: vector<unsigned int> clusterAction;
SOM *map;
std:: vector<clusterAction> translator;
std:: vector<situation_act> currentTrainingSet;
int currentDataBaseNumber;
int lastMapNumber;
int lastTranslatorNumber;
unsigned int start_with_era;
void loadLastState ();
bool loadNextDataBase (std:: string trainingSetFolder);
void teachCurrentTrainingSet (float Rcritical, float v, float dv);
unsigned int situationToAction (neuron situation);
void nextEra ();
std:: vector<situation_act> loadSituationVector (FILE *f);
double discretSensorValue (double val);
std:: string getFileName (const std:: string folder, const int counter);
void writeTranslatorToFile (FILE *f, unsigned int currEra);
int getLastFileNumberInFolder (const std:: string folder);
};
#endif // teacher_H
teacher. cpp
#include "teacher. h"
teacher:: teacher ()
{
currentDataBaseNumber = 0;
map = new SOM ();
start_with_era = 0;
loadLastState ();
}
void teacher:: loadLastState ()
{
FILE *f;
lastMapNumber = getLastFileNumberInFolder (MAPS_FOLDER);
f = fopen (getFileName (MAPS_FOLDER, lastMapNumber++). data (), "r");
if (f)
map->loadState (f);
fclose (f);
lastTranslatorNumber = getLastFileNumberInFolder (TRANSLATOR_FOLDER);
f = fopen (getFileName (TRANSLATOR_FOLDER, lastTranslatorNumber++). data (), "r");
if (f)
{
// TODO
printf ("Translator: Loading from file\n");
unsigned int size;
fscanf (f, "%u\n", &start_with_era);
start_with_era++; // because in file we save the last era number
fscanf (f, "%d\n",&size);
for (unsigned int i = 0; i < size; i++)
{
translator. push_back (clusterAction (ACTIONMAX, 0));
for (unsigned int j = 0; j < ACTIONMAX; j++)
fscanf (f, "%d", &translator. at (i). at (j));
}
}
fclose (f);
}
void teacher:: train (std:: string trainingSetFolder, float Rcritical, float v, float dv)
{
printf ("Train\n");
while (loadNextDataBase (trainingSetFolder))
{
// FILE *f;
// f = fopen ("ro. txt", "w");
// for (int i = 0; i < currentTrainingSet. size () - 1; i++)
// for (int j = i + 1; j < currentTrainingSet. size (); j++)
// fprintf (f, "%f\n", currentTrainingSet. at (i). situation. getDistance (currentTrainingSet. at (j). situation));
// fclose (f);
printf ("Database loaded\n");
teachCurrentTrainingSet (Rcritical, v, dv);
}
printf ("Not found database file anymore\n");
}
bool teacher:: loadNextDataBase (std:: string trainingSetFolder)
{
FILE *f;
std:: string filename = getFileName (trainingSetFolder, currentDataBaseNumber++);
f = fopen (filename. data (), "r");
if (! f)
return false;
currentTrainingSet = loadSituationVector (f);
return true;
}
std:: vector<situation_act> teacher:: loadSituationVector (FILE *f)
{
printf ("Loading file: \n");
std:: vector<situation_act> res;
res. clear ();
if (f)
{
neuron tempNeu;
int tmp;
situation_act situation;
while (EOF! = fscanf (f, " ["))
{
if (res. size () % 100 == 0)
printf ("Current lenght of res: %d\n",res. size ());
tempNeu. clear ();
// read cam image
for (unsigned int i = 0; i < IMAGE_LEN; i++)
{
fscanf (f, "%d,", &tmp);
tempNeu. w. push_back (double (tmp / 8) / 15);
}
// read sensor
fscanf (f, "%d,", &tmp);
tempNeu. w. push_back (discretSensorValue (tmp));
// read action
fscanf (f, "%d] \n", &tmp);
// insert into situatin vector
situation. situation = tempNeu;
situation. act = tmp;
res. push_back (situation);
}
fclose (f);
}
return res;
}
void teacher:: teachCurrentTrainingSet (float Rcritical, float v, float dv)
{
printf ("Training on database: %d\n", currentDataBaseNumber - 1);
map->Rcritical = Rcritical;
map->setVandDV (v - (dv * start_with_era), dv);
for (unsigned int era = start_with_era; era < MAXERA; era++)
{
printf ("Start of %d era\n", era);
nextEra ();
// end of Era actions:
std:: vector<bool> neuronUsage = map->getUsage ();
for (unsigned int i = 0; i < neuronUsage. size ();)
if (neuronUsage [i])
i++;
else
{
translator. erase (translator. begin () + i);
neuronUsage. erase (neuronUsage. begin () + i);
}
map->endOfEra ();
if (era && era % 10 == 0)
{
FILE *f;
f = fopen (getFileName (MAPS_FOLDER, lastMapNumber++). data (), "w");
if (f)
{
map->saveStateToFile (f);
fclose (f);
}
else
printf ("Save map state error: folder not found. \n");
f = fopen (getFileName (TRANSLATOR_FOLDER, lastTranslatorNumber++). data (), "w");
if (f)
{
writeTranslatorToFile (f, era);
fclose (f);
}
else
printf ("Save translator state error: folder not found. \n");
}
}
start_with_era = 0;
}
unsigned int teacher:: situationToAction (neuron situation)
{
return = map->sendNeuron (situation, true);
}
void teacher:: writeTranslatorToFile (FILE *f, unsigned int currEra)
{
fprintf (f, "%d\n", currEra);
fprintf (f, "%d\n", translator. size ());
for (unsigned int i = 0; i < translator. size (); i++)
{
for (unsigned int j = 0; j < translator. at (i). size (); j++)
fprintf (f, "%d", translator. at (i). at (j));
fprintf (f, "\n");
}
}
int teacher:: getLastFileNumberInFolder (const std:: string folder)
{
FILE *f;
int counter = 0;
// search last file
while ( (f = fopen (getFileName (folder, counter++). data (), "r")))
{
if (f)
fclose (f);
}
counter - = 2;
f = fopen (getFileName (folder, counter). data (), "r");
if (f)
fclose (f);
return counter;
}
void teacher:: test (std:: string testFolder, int testNumber)
{
printf ("Testing: \n");
std:: vector<situation_act> testSituationVector;
FILE *f;
f = fopen (getFileName (testFolder, testNumber). data (), "r");
unsigned int cluster;
int good = 0;
int maxID;
if (f)
{
testSituationVector = loadSituationVector (f);
for (unsigned int i = 0; i < testSituationVector. size (); i++)
{
cluster = map->sendNeuron (testSituationVector. at (i). situation, true);
if (cluster >= translator. size ())
printf ("Test fail! (New cluster number) \n");
else
{
maxID = 0;
for (unsigned int j = 1; j < ACTIONMAX; j++)
if (translator. at (cluster). at (j) > translator. at (cluster). at (maxID))
maxID = j;
if (maxID == testSituationVector. at (i). act)
good++;
}
}
printf ("Total: %d; good: %d (%0.2f\%) \n", testSituationVector. size (), good,
100 * float (good) / testSituationVector. size ());
fclose (f);
}
}
void teacher:: nextEra ()
{
std:: clock_t start;
start = std:: clock ();
std:: srand (std:: time (0));
std:: random_shuffle (currentTrainingSet. begin (), currentTrainingSet. end ());
neuron situation;
int currentAct;
unsigned int currentClusterNumber;
for (unsigned int i = 0; i < currentTrainingSet. size (); i++)
{
situation = currentTrainingSet. at (i). situation;
currentAct = currentTrainingSet. at (i). act;
currentClusterNumber = map->sendNeuron (situation);
if (currentClusterNumber == translator. size ())
// if new cluster
translator. push_back (clusterAction (ACTIONMAX, 0));
translator. at (currentClusterNumber). at (currentAct) ++;
}
printf ("Era time: %d s\n", int ( (std:: clock () - start) / (double) (CLOCKS_PER_SEC / 1000)) / 1000);
}
double teacher:: discretSensorValue (double val)
{
// return val / 255;
if (val < 40)
return 0;
if (val > 50)
return 1;
return 0.5;
}
std:: string teacher:: getFileName (const std:: string folder, const int counter)
{
std:: string filename (folder);
filename. append ("/");
filename. append (std:: to_string (counter));
filename. append (". txt");
return filename;
}
Приложение 4
Исходный код класса "neuron"
neuron. h
#ifndef NEURON_H
#define NEURON_H
#include<vector>
#include<math. h>
#include<stdio. h>
#include<limits. h>
#include<ctime>
class neuron
{
public:
std:: vector<double> w; // coordinates in n-dimensional space
neuron ();
double getDistance (neuron other);
void saveToFile (FILE *f);
void loadFromFile (FILE *F);
void normalize (unsigned int maxValue = 255, unsigned int minValue = 0);
void clear ();
};
#endif // NEURON_H
neuron. cpp
#include "neuron. h"
neuron:: neuron ()
{
w. clear ();
}
double neuron:: getDistance (neuron other)
{
double sum = 0;
for (unsigned int i = 0; i < w. size (); i++)
sum += pow (w [i] - other. w [i],
2);
return sqrt (sum);
}
void neuron:: saveToFile (FILE *f)
{
for (unsigned int i = 0; i < w. size (); i++)
fprintf (f,"%f ",w. at (i));
fprintf (f,"\n");
}
void neuron:: normalize (unsigned int maxValue, unsigned int minValue)
{
// normalize in loadFromImage by calling redF, greenF, blueF
}
void neuron:: clear ()
{
w. clear ();
}
Приложение 5
Исходный код класса "som"
som. h
#ifndef SOM_H
#define SOM_H
#include <vector>
#include "neuron. h"
#include <stdio. h>
#include <thread>
#define VMIN 0.05
class SOM
{
private:
std:: vector<neuron> map; // neuron map
std:: vector<bool> mapUsage; // vector of map usage
double v; // speed of study
double dv; // delta of study speed
unsigned int addNewCenter (neuron neu);
unsigned int correntWinnerWeight (neuron neu, int winID);
int tAnswer [4];
public:
SOM ();
bool setVandDV (double _v, double _dv);
unsigned int sendNeuron (neuron neu, bool isNoChange = false);
std:: vector<bool> getUsage ();
void endOfEra ();
void saveStateToFile (FILE *f);
void loadState (FILE *f);
void getMin (unsigned int id, unsigned int begin, unsigned int end, neuron neu);
double Rcritical; // The maximum Euclidean distance between an example of inputs and weights of the neuron-winner
// If distance is less than this variable a new neuron will be created
};
#endif // SOM_H
som. cpp
#include "som. h"
SOM:: SOM ()
{
Rcritical = 1;
v = 0.5;
}
bool SOM:: setVandDV (double _v, double _dv)
{
if (_v >= VMIN && _v <= 1 && _v > _dv && _dv > 0)
{
v = _v;
dv = _dv;
return true;
}
return false;
}
void SOM:: endOfEra ()
{
if (v - dv >= VMIN)
v - = dv;
for (unsigned int i = 0; i < map. size ();)
if (mapUsage [i])
{
mapUsage [i] = false;
i++;
}
else
{
map. erase (map. begin () + i);
mapUsage. erase (mapUsage. begin () + i);
}
}
void SOM:: saveStateToFile (FILE *f)
{
fprintf (f,"%d\n",map. size ());
fprintf (f,"%d\n",map. at (0). w. size ());
for (unsigned int i = 0; i < map. size (); i++)
map. at (i). saveToFile (f);
}
void SOM:: loadState (FILE *f)
{
printf ("SOM: Loading from file\n");
unsigned int _size, _size_neu;
fscanf (f,"%d",&_size);
fscanf (f,"%d",&_size_neu);
neuron tempNeu;
double tempValue;
for (unsigned int i = 0; i < _size; i++)
{
tempNeu. clear ();
for (unsigned int j = 0; j < _size_neu; j++)
{
fscanf (f, "%lf", &tempValue);
tempNeu. w. push_back (tempValue);
}
map. push_back (tempNeu);
mapUsage. push_back (false);
}
}
void SOM:: getMin (unsigned int id, unsigned int begin, unsigned int end, neuron neu)
{
unsigned int minDistanceID = begin;
double minDistance = neu. getDistance (map [begin]), currentDistance;
for (unsigned int i = begin + 1; i <= end; i++)
{
currentDistance = neu. getDistance (map [i]);
if (currentDistance < minDistance)
{
minDistanceID = i;
minDistance = currentDistance;
}
}
tAnswer [id] = minDistanceID;
}
unsigned int SOM:: sendNeuron (neuron neu, bool isNoChange)
{
neu. normalize ();
// if we have an empty map, add first neuron
if (map. empty ())
return addNewCenter (neu); // create new claster center
int minDistanceID;
double minDistance, currentDistance;
// search for winner neuron
if (map. size () < 4)
{
minDistanceID = 0;
minDistance = neu. getDistance (map [minDistanceID]);
for (unsigned int i = 1; i < map. size (); i++)
{
currentDistance = neu. getDistance (map [i]);
if (currentDistance < minDistance)
{
minDistanceID = i;
minDistance = currentDistance;
}
}
}
else
{
std:: thread t1 (&SOM:: getMin, this, 0, 0, map. size () / 4 - 1, neu);
std:: thread t2 (&SOM:: getMin, this, 1, map. size () / 4, map. size () / 2 - 1, neu);
std:: thread t3 (&SOM:: getMin, this, 2, map. size () / 2, 3 * map. size () / 4 - 1, neu);
std:: thread t4 (&SOM:: getMin, this, 3, 3 * map. size () / 4, map. size () - 1, neu);
t1. join ();
t2. join ();
t3. join ();
t4. join ();
minDistanceID = tAnswer [0];
minDistance = neu. getDistance (map [minDistanceID]);
for (int i = 1; i < 4; i++)
{
currentDistance = neu. getDistance (map [tAnswer [i]]);
if (currentDistance < minDistance)
{
minDistanceID = tAnswer [i];
minDistance = currentDistance;
}
}
}
if (isNoChange)
return minDistanceID;
if (minDistance > Rcritical)
// create new claster center
return addNewCenter (neu);
else
// correct winner weight
return correntWinnerWeight (neu, minDistanceID);
}
std:: vector<bool> SOM:: getUsage ()
{
return mapUsage;
}
unsigned int SOM:: addNewCenter (neuron neu)
{
map. push_back (neu);
mapUsage. push_back (true);
return map. size () - 1;
}
unsigned int SOM:: correntWinnerWeight (neuron neu, int winID)
{
for (unsigned int i = 0; i < neu. w. size (); i++)
map [winID]. w [i] = map [winID]. w [i] + v * (neu. w [i] - map [winID]. w [i]);
mapUsage [winID] = true;
return winID;
}
Размещено на Allbest.ru
Подобные документы
Инструментальные средства проектирования интеллектуальных систем. Анализ традиционных языков программирования и представления знаний. Использование интегрированной инструментальной среды G2 для создания интеллектуальных систем реального времени.
контрольная работа [548,3 K], добавлен 18.05.2019Понятие искусственного интеллекта как свойства автоматических систем брать на себя отдельные функции интеллекта человека. Экспертные системы в области медицины. Различные подходы к построению систем искусственного интеллекта. Создание нейронных сетей.
презентация [3,0 M], добавлен 28.05.2015Основы для проведения кластеризации. Использование Data Mining как способа "обнаружения знаний в базах данных". Выбор алгоритмов кластеризации. Получение данных из хранилища базы данных дистанционного практикума. Кластеризация студентов и задач.
курсовая работа [728,4 K], добавлен 10.07.2017Обзор существующих систем управления базами данных. Концептуальное, логическое и физическое проектирование и создание базы данных. Обзор языков программирования. Создание и реализация клиентского приложения с помощью выбранного языка программирования.
дипломная работа [2,4 M], добавлен 02.06.2013Обзор технологической платформы для разработки клиентского веб-интерфейса. Выбор платформы базы данных, языка разработки, фреймворка на стороне сервера и клиента. Создание схемы данных MySQL. Работа пользователя и оператора с программным продуктом.
курсовая работа [4,1 M], добавлен 17.07.2012Применение методов искусственного интеллекта и современных компьютерных технологий для обработки табличных данных. Алгоритм муравья, его начальное размещение и перемещение. Правила соединения UFO-компонентов при моделировании шахтной транспортной системы.
дипломная работа [860,8 K], добавлен 23.04.2011Анализ методов реализации интеллектуальных игр в системе человек-робот. Разработка архитектуры программного комплекса, выбор языка программирования. Алгоритм преобразования данных. Тестирование программного комплекса, редактирование и исправление ошибок.
дипломная работа [2,6 M], добавлен 27.10.2017Искусственный интеллект – научное направление, связанное с машинным моделированием человеческих интеллектуальных функций. Черты искусственного интеллекта Развитие искусственного интеллекта, перспективные направления в его исследовании и моделировании.
реферат [70,7 K], добавлен 18.11.2010Понятия языка программирования, разновидности и характеристика языков. Исторический обзор их создания и применения. Классификация, примеры использования. Характеристики языков программирования с точки зрения элементов объектной модели, их популярность.
реферат [463,6 K], добавлен 07.09.2009Обзор образовательных стандартов педагогического образования в области искусственного интеллекта. Построение модели предметной области в виде семантических сетей. Характеристика проблемного обучения. Основные средства языка программирования Пролог.
дипломная работа [387,8 K], добавлен 01.10.2013