Пакет psy_MotorsAutomatizm


Моторные автоматизмы привычно выполняются без осознания, но при новых условиях могут быть переосмыслены с осознанием их последовательности действий.
Моторные автоматизмы никогда не удаляются
создаются для условий активного узла дерева Модели
и срабатывают в контексте этого узла.
В узле может быть заготовлено множество автоматизмов, в том числе наиболее привычный,
которые срабатывают в канале осознанного внимания func HomunculusAttention(kind int) или сразу или
если есть значимая новизна, выбираются по опыту применения автоматизмов при такой новизне, блокируя привычный.
Моторный автоматизм может быть свой или отзеркаленный чужой.
Моторные автоматизмы создаются с помощью мыслительных автоматизмов,
самый простой из которых - метод случайного тыка, метод фантазирования, метод действия наобум
Добавление действий должно преследовать ЦЕЛЬ - определенный результат достижения желаемого.
Нужно смотреть, как уже достигалась такая или похожая ЦЕЛЬ раньше

СТРУКТУРА:
type MotAutomatizm struct {
	// id узла дерева понимания == ID автоматизма
	TnodeID int
/* Уверенность в удачности реагирования. Очень важным параметром, определяющим особенности индивидуальной адаптивности, является консерватизм, с которым устанавливается автоматизм: насколько легко он записывается. Если очень легко и за один раз, то обучаемость будет очень высокой, но и количество случайных, мусорных действий тоже будет максимальным. Получится дерганная, “нервная” особь с множеством бзиков. 
Чем менее продвинуты механизмы субъективной оценки, тем более консервативным должно быть формирование нового автоматизма. Кошек гораздо труднее научить чему-то, чем собак. Они просто чаще всего игнорируют попытки приучить их к определенным (без)действиям. Но, если ситуация очень важна, например их сильно наказали или дали что-то очень вкусное, то автоматизм запишется за один раз и очень долго не будет корректироваться менее важными воздействиями. Кошки моментально и надолго запоминают наказания.
Отсюда вырисовывается алгоритм консервативности записи автоматизмов.
У автоматизма есть МЕТКА ЗНАЧИМОСТИ Result: УВЕРЕННОСТЬ В УСПЕХЕ – АТРИБУТ КОНСЕРВАТИВНОСТИ.
С каждым удачным срабатыванием эта переменная улучшается на единицу. 
А в зависимости от текущего значения выбирается, запускать данный автоматизм или нет. 
При важных результатах и при авторитарном воспитании значение оказывается выше.
*/
	Result int // -10 0 +10 +1 если удачно -1 - неудачно
/* Цепочка последовательности реагирования,
включающие элементарные реакции и ID уже имеющихся цепочек автоматизмов
Последовательность - строка, с разделителем | в которой виды действий обозначаются
символом типа и последующим числом == ID данного вида реагирования:
Snn- перечень ID сенсора слов через запятую,
nn - ID программы ответа (фраза),
Dnn - ID прогрмаммы действий, через запятую
Ann - последовательный запуск автоматизмов с id1,id2...
Эти типы разделяются с помощью символа "|".
   НАПРИМЕР:
   Sequence="Snn:24243,1234,0,24234,11234|Ann:4"
   Sequence="Dnn:24|Ann:4"
   Sequence="Dnn:24,4,56" - несколько действий одновременно
   фраза+действие, заготовленная фраза,уже имеющийся автоматизм:
   Sequence="Snn:24243,1234,0,24234,11234|Fnn:4Dnn:24|Ann:3"
Сразу не используется ActsAutomatizm struct для удобства записи и считывания файла
*/
	Sequence string
/* после удачного ОКОНЧАНИЯ этого автоматизма запустить следующий
!!! сделать ожидание окончания данного автоматизма в TodoMotorsAutomatizm запуск TodoNextMotorsAutomatizm
- через гомункулуса, т.е. тот может прервать выполнение цепочки
 */
	NextID int
/*
Уверенность в авторитарном автоматизме высока в период авторитарного обучения и сильно падает в период собственной инициативы,
когда нужно на себе проверить, а даст ли такой автоматизм в самом деле обещанное улучшение
 */
	Knowledge int // 0 - чужие сведения или 1 - проверенное собственное знание
}
////////////////////////

ПЕРЕМЕННЫЕ:
// массив имеющихся автоматизмов nodeID всегда >0
var MotorsAutomatizm=make(map[int]*MotAutomatizm)
/* массив действий Бота, использованных в автоматизмах - при создании автоматизма
Индекс - ID действия EffectoprActions
 */
var MotorsAutomatizmFromActions=make(map[int]*MotAutomatizm)
// массив слов, использованных в автоматизмах - при создании автоматизма
var MotorsAutomatizmFromVocabulary=make(map[int]*MotAutomatizm)
// момент запуска мот.автоматизма в числе пульсов
var LastRunMotorAutomatizmPulsCount =0
// ожидается результат запущенного MotAutomatizm
var LastMotorAutomatizmWeiting *MotAutomatizm

ФУНКЦИИ:
•	найти мот.автоматизм по его индексу
•	загрузить автоматизмы из файла
•	сохранить автоматизмы в файле
•	создать новый моторный автоматизм
•	запустить моторный автоматизм
•	выполнить последовательность моторного автоматизма
•	выполнить автоматизм при активации Дерева, если нет важной новизны в данной контексте, иначе привлечь внимание Гомонкулуса
•	разделить строку Sequence автоматизма на составляющие
•	получить массив wordID из Sequence автоматизма
•	расшифровать действия автоматизма для инфы пульта
•	список всех автоматизмов для ID узла Дерева
•	сравнить последовательности мот.автоматизмов, насколько похожи