GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (2)След. > >>   Поиск:  
 Автор Тема: Алгоритмы и примеры кода
PavelZX
Сообщений: 715
Алгоритмы и примеры кода
Добавлено: 17 июн 19 0:21
Изменено: 17 июн 19 0:27
Немного, для развлечения, так сказать, хотелось бы в одном месте пособирать разные примеры алгоритмов.

Вот одна коротенькая статья, позаимствованная естественно, в которой есть описание некоторых методик.

http://caix.ru/roevoj-intellekt-i-ego-naibolee-rasprostranyonnye-metody-realizatsii/

Вот на Питоне кое что. https://github.com/rochakgupta/aco-tsp/blob/master/aco_tsp.py


import math
import random
from matplotlib import pyplot as plt


class SolveTSPUsingACO:
class Edge:
def __init__(self, a, b, weight, initial_pheromone):
self.a = a
self.b = b
self.weight = weight
self.pheromone = initial_pheromone

class Ant:
def __init__(self, alpha, beta, num_nodes, edges):
self.alpha = alpha
self.beta = beta
self.num_nodes = num_nodes
self.edges = edges
self.tour = None
self.distance = 0.0

def _select_node(self):
roulette_wheel = 0.0
unvisited_nodes = [node for node in range(self.num_nodes) if node not in self.tour]
heuristic_total = 0.0
for unvisited_node in unvisited_nodes:
heuristic_total += self.edges[self.tour[-1]][unvisited_node].weight
for unvisited_node in unvisited_nodes:
roulette_wheel += pow(self.edges[self.tour[-1]][unvisited_node].pheromone, self.alpha) * \
pow((heuristic_total / self.edges[self.tour[-1]][unvisited_node].weight), self.beta)
random_value = random.uniform(0.0, roulette_wheel)
wheel_position = 0.0
for unvisited_node in unvisited_nodes:
wheel_position += pow(self.edges[self.tour[-1]][unvisited_node].pheromone, self.alpha) * \
pow((heuristic_total / self.edges[self.tour[-1]][unvisited_node].weight), self.beta)
if wheel_position >= random_value:
return unvisited_node

def find_tour(self):
self.tour = [random.randint(0, self.num_nodes - 1)]
while len(self.tour) < self.num_nodes:
self.tour.append(self._select_node())
return self.tour

def get_distance(self):
self.distance = 0.0
for i in range(self.num_nodes):
self.distance += self.edges[self.tour[i]][self.tour[(i + 1) % self.num_nodes]].weight
return self.distance

def __init__(self, mode='ACS', colony_size=10, elitist_weight=1.0, min_scaling_factor=0.001, alpha=1.0, beta=3.0,
rho=0.1, pheromone_deposit_weight=1.0, initial_pheromone=1.0, steps=100, nodes=None, labels=None):
self.mode = mode
self.colony_size = colony_size
self.elitist_weight = elitist_weight
self.min_scaling_factor = min_scaling_factor
self.rho = rho
self.pheromone_deposit_weight = pheromone_deposit_weight
self.steps = steps
self.num_nodes = len(nodes)
self.nodes = nodes
if labels is not None:
self.labels = labels
else:
self.labels = range(1, self.num_nodes + 1)
self.edges = [[None] * self.num_nodes for _ in range(self.num_nodes)]
for i in range(self.num_nodes):
for j in range(i + 1, self.num_nodes):
self.edges[i][j] = self.edges[j][i] = self.Edge(i, j, math.sqrt(
pow(self.nodes[i][0] - self.nodes[j][0], 2.0) + pow(self.nodes[i][1] - self.nodes[j][1], 2.0)),
initial_pheromone)
self.ants = [self.Ant(alpha, beta, self.num_nodes, self.edges) for _ in range(self.colony_size)]
self.global_best_tour = None
self.global_best_distance = float("inf")

def _add_pheromone(self, tour, distance, weight=1.0):
pheromone_to_add = self.pheromone_deposit_weight / distance
for i in range(self.num_nodes):
self.edges[tour[i]][tour[(i + 1) % self.num_nodes]].pheromone += weight * pheromone_to_add

def _acs(self):
for step in range(self.steps):
for ant in self.ants:
self._add_pheromone(ant.find_tour(), ant.get_distance())
if ant.distance < self.global_best_distance:
self.global_best_tour = ant.tour
self.global_best_distance = ant.distance
for i in range(self.num_nodes):
for j in range(i + 1, self.num_nodes):
self.edges[i][j].pheromone *= (1.0 - self.rho)

def _elitist(self):
for step in range(self.steps):
for ant in self.ants:
self._add_pheromone(ant.find_tour(), ant.get_distance())
if ant.distance < self.global_best_distance:
self.global_best_tour = ant.tour
self.global_best_distance = ant.distance
self._add_pheromone(self.global_best_tour, self.global_best_distance, weight=self.elitist_weight)
for i in range(self.num_nodes):
for j in range(i + 1, self.num_nodes):
self.edges[i][j].pheromone *= (1.0 - self.rho)

def _max_min(self):
for step in range(self.steps):
iteration_best_tour = None
iteration_best_distance = float("inf")
for ant in self.ants:
ant.find_tour()
if ant.get_distance() < iteration_best_distance:
iteration_best_tour = ant.tour
iteration_best_distance = ant.distance
if float(step + 1) / float(self.steps) <= 0.75:
self._add_pheromone(iteration_best_tour, iteration_best_distance)
max_pheromone = self.pheromone_deposit_weight / iteration_best_distance
else:
if iteration_best_distance < self.global_best_distance:
self.global_best_tour = iteration_best_tour
self.global_best_distance = iteration_best_distance
self._add_pheromone(self.global_best_tour, self.global_best_distance)
max_pheromone = self.pheromone_deposit_weight / self.global_best_distance
min_pheromone = max_pheromone * self.min_scaling_factor
for i in range(self.num_nodes):
for j in range(i + 1, self.num_nodes):
self.edges[i][j].pheromone *= (1.0 - self.rho)
if self.edges[i][j].pheromone > max_pheromone:
self.edges[i][j].pheromone = max_pheromone
elif self.edges[i][j].pheromone < min_pheromone:
self.edges[i][j].pheromone = min_pheromone

def run(self):
print('Started : {0}'.format(self.mode))
if self.mode == 'ACS':
self._acs()
elif self.mode == 'Elitist':
self._elitist()
else:
self._max_min()
print('Ended : {0}'.format(self.mode))
print('Sequence : <- {0} ->'.format(' - '.join(str(self.labels[i]) for i in self.global_best_tour)))
print('Total distance travelled to complete the tour : {0}\n'.format(round(self.global_best_distance, 2)))

def plot(self, line_width=1, point_radius=math.sqrt(2.0), annotation_size=8, dpi=120, save=True, name=None):
x = [self.nodes[i][0] for i in self.global_best_tour]
x.append(x[0])
y = [self.nodes[i][1] for i in self.global_best_tour]
y.append(y[0])
plt.plot(x, y, linewidth=line_width)
plt.scatter(x, y, s=math.pi * (point_radius ** 2.0))
plt.title(self.mode)
for i in self.global_best_tour:
plt.annotate(self.labels[i], self.nodes[i], size=annotation_size)
if save:
if name is None:
name = '{0}_tour.png'.format(self.mode)
plt.savefig(name, dpi=dpi)
plt.show()
plt.gcf().clear()


if __name__ == '__main__':
_colony_size = 5
_steps = 50
_nodes = [(random.uniform(-400, 400), random.uniform(-400, 400)) for _ in range(0, 15)]
acs = SolveTSPUsingACO(mode='ACS', colony_size=_colony_size, steps=_steps, nodes=_nodes)
acs.run()
acs.plot()
elitist = SolveTSPUsingACO(mode='Elitist', colony_size=_colony_size, steps=_steps, nodes=_nodes)
elitist.run()
elitist.plot()
max_min = SolveTSPUsingACO(mode='MaxMin', colony_size=_colony_size, steps=_steps, nodes=_nodes)
max_min.run()
max_min.plot()

Статья об реализации роевого алгоритма и пример программы на JS http://www.theprojectspot.com/tutorial-post/ant-colony-optimization-for-hackers/10
[Ответ][Цитата]
ip178
Сообщений: 104
На: Алгоритмы и примеры кода
Добавлено: 17 июн 19 4:29
[b]PavelZX[/], полагаю, прилагая краткое описание, или хотябы включение комментариев, былобы уместно.
[Ответ][Цитата]
гость
73.254.249.*
На: Алгоритмы и примеры кода
Добавлено: 17 июн 19 7:33
Цитата:
Автор: PavelZX

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


http://ai.neocities.org/MindBoot.html

# "Я" (1701 "I") personal pronoun; nominative; 2016may21
$t=501; $ear[$t] = "\x9F,0,1701"; # 2018-09-25: "Я"
$psi=1701; $hlc=3; $jux=0; $pos=7; $dba=1; $num=1; $mfn=0; # 2018-09-27
$pre=0; $seq=1866; $tkb=510; $rv=501; KbLoad(); # 2019-06-03: flag-panel order
$t=502; $ear[$t] = " ,0,0"; # 2018-09-25: blank space for AudRecog

$t=503; $ear[$t] = "\N{U+0},0,0"; # 2017-12-06: necessary for Unicode?
# ПОНИМАЮ -- 2019-06-03: #1866 ("understand"); first person singular verb
$t=504; $ear[$t] = "\x8F,0,0"; # 2018-09-25: "П"
$t=505; $ear[$t] = "\x8E,0,0"; # 2018-09-25: "О"
$t=506; $ear[$t] = "\x8D,0,0"; # 2018-09-25: "Н"
$t=507; $ear[$t] = "\x88,0,0"; # 2018-09-25: "И"
$t=508; $ear[$t] = "\x8C,0,0"; # 2018-09-25: "М"
$t=509; $ear[$t] = "\x80,0,1866"; # 2019-06-03: "А"
$t=510; $ear[$t] = "\x9E,0,1866"; # 2019-06-03: "Ю"
$psi=1866; $hlc=3; $mtx=892; $jux=0; $pos=8; $dba=1; $num=1; $mfn=0; # 2019-06-03
$pre=1701; $seq=1707; $tkb=516; $rv=504; KbLoad(); # 2018-09-25: flag-panel order
$t=511; $ear[$t] = " ,0,0"; # 2018-09-25: blank space for AudRecog

$t=512; $ear[$t] = "\N{U+0},0,0"; # 2018-09-25: necessary for Unicode?
# ТЕБЯ (1707 "you") pronoun; familiar; acc. sing. 2016may22
$t=513; $ear[$t] = "\x92,0,0"; # 2018-09-25: "Т"
$t=514; $ear[$t] = "\x85,0,0"; # 2018-09-25: "Е"
$t=515; $ear[$t] = "\x81,0,0"; # 2018-09-25: "Б"
$t=516; $ear[$t] = "\x9F,0,1707"; # 2018-09-25: "Я"
$psi=1707; $hlc=3; $jux=0; $pos=7; $dba=4; $num=1; $mfn=0; # 2018-09-27
$pre=1866; $seq=0; $tkb=0; $rv=513; KbLoad(); # 2019-06-03: flag-panel order
$t=517; $ear[$t] = " ,0,0"; # 2018-09-25: blank space for AudRecog
[Ответ][Цитата]
PavelZX
Сообщений: 715
На: Алгоритмы и примеры кода
Добавлено: 17 июн 19 8:27
Изменено: 17 июн 19 8:41
Подсветки кода здесь нет, поэтому лучше на https://gist.github.com/ публиковать. Писал не я, поэтому нет комментариев, но есть ссылка на статью, где описан метод решения. Мне не нравится ООП, поэтому я данный пример подробно не хочу разбирать. Тему создал, чтоб можно было собрать информацию в одном месте, прежде всего, а обсуждать моменты отдельно.

Цитата:
Автор: гость

http://ai.neocities.org/MindBoot.html
https://ai.neocities.org/Dushka.html мило.
[Ответ][Цитата]
гость
51.15.122.*
На: Алгоритмы и примеры кода
Добавлено: 20 июн 19 8:42
мне нравится воспринимать ИИ как поисковую деятельность, например:

char* find(char* text, const char* word)
{
char* p = text;

while (*p++)
{
char b = 1;
char* pp = p;
char* w = word;
while (*w)
if (*w++ != *pp++) { b = 0; break; }

if (b) return p;
}
}
[Ответ][Цитата]
гость
23.129.64.*
На: Алгоритмы и примеры кода
Добавлено: 20 июн 19 9:42
Прикольная программа, сам пользуюсь
https://drop.me/opLzPN
[Ответ][Цитата]
гость
23.129.64.*
На: Алгоритмы и примеры кода
Добавлено: 20 июн 19 15:47
показывать нужно код ИИ а не всё подрят
[Ответ][Цитата]
Luarvik.
Сообщений: 15211
На: Алгоритмы и примеры кода
Добавлено: 20 июн 19 18:05
А что кодеры делают рядом с проблемами ИИ ?!
ГНАТЬ В ШЕЮ !!! МЕТЛОЙ ПГАНОЙ !!!
[Ответ][Цитата]
Egg
Сообщений: 11803
На: Алгоритмы и примеры кода
Добавлено: 20 июн 19 18:19
Цитата:
Автор: Luarvik.
А что кодеры делают рядом с проблемами ИИ ?!
ГНАТЬ В ШЕЮ !!! МЕТЛОЙ ПГАНОЙ !!!

Да ну, какой Павел кодер, он такой же философ-журналист как большинство местных ораторов... )))))
[Ответ][Цитата]
Luarvik.
Сообщений: 15211
На: Алгоритмы и примеры кода
Добавлено: 20 июн 19 20:13
Вот Вы можете кратко и емко сформулировать проблему: почему, несмотря ни на что, ИИ пока не получается ?
[Ответ][Цитата]
Egg
Сообщений: 11803
На: Алгоритмы и примеры кода
Добавлено: 20 июн 19 20:18
Изменено: 20 июн 19 20:19
Цитата:
Автор: Luarvik.
Вот Вы можете кратко и емко сформулировать проблему: почему, несмотря ни на что, ИИ пока не получается ?

Две причины: производительность и данные... Первого катастрофически нехватает, а вторые неправильно представляют...
[Ответ][Цитата]
cortl
Сообщений: 129
На: Алгоритмы и примеры кода
Добавлено: 20 июн 19 21:51
Цитата:
Автор: Luarvik.
Либо Вы признаете и принимаете мои условия и мы начинаем долгий, тугой и вязкий разговор о проблемах моделирования интеллекта, либо у Вас на лбу отныне будет написано - "Сила есть, ума не надо".


На полном серьёзе мне было бы интересно.
[Ответ][Цитата]
PavelZX
Сообщений: 715
На: Алгоритмы и примеры кода
Добавлено: 20 июн 19 23:23
Изменено: 20 июн 19 23:26
Цитата:
Автор: гость

Это реально полезная программа
https://drop.me/opLzPN

Загрузите на другой ресурс, этот архив скачать не получается.

Естественно, что я не математик и не кодер, не тот характер и склад ума. Но программировать могу и постоянно учусь новому, единственная проблема, что не могу сосредоточится на чём-то одном, сильно распыляюсь.
[Ответ][Цитата]
гость
23.129.64.*
На: Алгоритмы и примеры кода
Добавлено: 21 июн 19 5:32
Цитата:
Автор: PavelZX


Загрузите на другой ресурс, этот архив скачать не получается.

Естественно, что я не математик и не кодер, не тот характер и склад ума. Но программировать могу и постоянно учусь новому, единственная проблема, что не могу сосредоточится на чём-то одном, сильно распыляюсь.

с этими файлообменниками постоянно засада. Умеете base64 читать?


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
скопируйте в https://base64.guru/converter/decode/file и сохраните как rar
[Ответ][Цитата]
гость
23.129.64.*
На: Алгоритмы и примеры кода
Добавлено: 21 июн 19 5:43
вот Вам програмка на C# для base64 если не уважаете онлайн-сервисы

static void EncodeBase64(string frompath, string topath)
{
Byte[] bytes = File.ReadAllBytes(frompath);
String file = Convert.ToBase64String(bytes);
File.WriteAllText(topath, file);
}

public static void DecodeBase64(string frompath, string topath)
{
string text = File.ReadAllText(frompath);
Byte[] bytes = Convert.FromBase64String(text);
File.WriteAllBytes(topath, bytes);
}



static void Main(string[] args)
{
Console.WriteLine("encode - E decode - D");
int mode = 0;
ConsoleKey key = Console.ReadKey().Key;
if (key == ConsoleKey.E) mode = 1;
if (key == ConsoleKey.D) mode = 2;
Console.WriteLine("enter path");
string path = Console.ReadLine();
if(mode==1) EncodeBase64(path,path+"b64e");
if(mode==2) DecodeBase64(path,path+"b64d");
}
[Ответ][Цитата]
 Стр.1 (2): [1]  2След. > >>