Пакет psy_mozjechok


Функция Мозжечка (как и природного cerebellum) - в отслеживании хода выполнения цепочек автоматизмов и достижения конечной цели.
Мозжечок работает за счет формирования РЕФЛЕКСОВ мозжечка и их выполнения в нужные моменты действий.
Цитата https://dochomehealth.ru/refleksy-mozzhechka-golovnogo-mozga.html: Рефлексы мозжечка производят корректировку заданной двигательной активности.
При этом учитываются все допущенные погрешности.
Коррекция происходит благодаря снижению или повышению скорости сокращения отдельных мышц.

Для этого могут корректироваться влияющие на выполнение структуры.
Мозжечок следит за тем, чтобы при достижении цели действия были закончены и корректирует другие действия (выполняя их) чтобы устранить помехи отслеживаемому действию.
И такая коррекция влияния формируется рефлекторно в ходе попыток - как компенсация для достижения текущего результата.


РАБОТА:
формирование цепочек действий при активности данной ветки Дерева, т.е. достижение определенной цели не одним автоматизмов, а их последовательностью. Причем у каждого автоматизма цепочки есть своя решаемая подЦель.
Стоит понаблюдать любой поведение животных (вылизывание кошек своего тела, укладывание для сна, процесс еды и т.п.) как станет очевидным, что односложных автоматизмов почти и нет, все совершается их последовательностью в данных условиях общей цели.
В структуре автоматизмов уже было предусмотрено срабатывание следующего автоматизма.
При активации ветки с односложным автоматизмом, память прошлого может подсказать дополнить ответ еще чем-то - как эксперимент, с записью результата в виде дополненной цепочки - при позитивном результате. Или же общая цель потребует разного рода придумок для последующей проверки.
Бот может что-то сказать, ухмыльнуться (название действия), выдать следующую фразу, потом еще одну.
Длинные последовательности Оператора Пульта могут быть отзеркалены сразу в последовательность автоматизмов (имеющихся или новых).
Или такие последовательности могут вырастать на основе односложных ответов (реакция на основе предыдущей реакции).
И тут уже появляется необходимость в функции мозжечка потому, что сформированную цепочку автоматизмов нужно мочь корректировать по обстоятельствам при все той же активности Дерева понимания.
Например, чтобы научиться бросить нож в цель с попаданием точно лезвием, совершается цепочка последовательных автоматизмов, и нож втыкается с перекрутом (ручка оказывается внизу от горизонтали броска). Возникает сигнал осознанной корректировки: нужно немного недокрутить. В определенном месте цепочки, которая в последовательности броска посчитается ответственной за интенсивности вращения (например, с каким углом будет выпущен нож, что зависит от положения в захвате), будет задана коррктировка. Эту корректировка зависит от расстояния до мишени. Значит, одна и та же цепь автоматизмов при разном расстоянии получит разные корректировки при выполнении определенного звена.
Другой пример, ребенок учится делать шаг (цель достигнута) и не падать (цель не достигнута). Для этого, кроме самого моторного шага, он пробует разные действия по сохранению равновесию и удачное из них фиксирует как дополнительное действие при совершении шага.
Работа механизмов корректировки (координации) сводится к установлению достижения цели при удачном корректирующем действии и записи в память такого действия, совершаемого вместе с основным автоматизмом. Появляется еще один вид памяти с записью в файл – корректировки автоматизмов, каждая запись которого содержит ID автоматизма и условий, в которых оно совершается (ID активной ветки Дерева), а также перечень необходимых дополнительных действий. Это и есть рефлекс мозжечка.

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

Функция Мозжечка, в общем, достаточно простая и алгоритмична.

СТРУКТУРА:
// структура рефлекса мозжечка
type UpdateReflex struct {
	ID int
	MaID int // ID моторного автоматизма
	Sequence string // последовательность действий рефлекса == Sequence в моторных автоматизмах
// при 	OnlyReflex==1 не выполнять основной рефлекс. Можно превать цепочку, выполнив только mr.Sequence, если она не пуста
	OnlyReflex int // этот рефлекс - альтрнатива основному автоматизму, который при 1 не выполяняется
}

ПЕРЕМЕННЫЕ:
// массив имеющихся рефлксов мозжечка Бота
var MozjechokReflex=make(map[int]*UpdateReflex)

ФУНКЦИИ:
func SaveMozjechokReflex() - загрузка из файл рефлексов мозжечка /bot_files_next/mozjechok_reflexes.txt
func LoadMozjechokReflex()
func createMozjechokReflex(nodeID int, ma int, OnlyReflex int, Sequence string)(int,*UpdateReflex)
// очистка всех мозж. рефлексов
func ClinerMozjechokReflex(){
// выполнить последовательность мозжечкового рефлекса
func TodoMozjechokReflexSequence(mrID int)
/* есть ли рефлекс для моторного автоматизма maID
 */
func MozjechokReflexFound(maID int)(bool)

/* Подбор корректирующих мозжечковых рефлексов.
при любых видах экспериментов с получением результата мот.автоматизма,
1) тупо пытаться для него подобрать корректирующий м.рефлекс, пока не получится удачно.
2) вызывать функцию моделирования ситуации с выявлением неправильности и ее коррекции после осознанной верности предположения.
Везде, где оцека мот.автоматизма ухудшается или остается, вызывать FindCorrectionReflex

Здесь подбирается корректирующая Sequence, создается мозжечковый рефлекс для данного автоматизма
и смотрится, улучшился ли предыдущий результат автоматизма с таким рефлексом.
Если нет, подбирается другой рефлекс и т.д.
Если да - просто забыть, все в порядке.

TODO - тоже сделать и для ментальных автоматизмов
*/
func FindCorrectionReflex(ma *MotAutomatizm){

	if ModelingSituationForMotAutomatizm(ma){
		return
	}
// тупо пытаться подобрать корректирующий м.рефлекс и записать его для ma
// TODO
}
/////////////////////////////

/* Функция моделирования ситуации с выявлением неправильности
и ее коррекции после осознанной верности предположения.
Если удалось создать модель и найти предположительную корректирующую последовательность, то
создается мозжечковый рефлекс для данного автоматизма
и смотрится, улучшился ли предыдущий результат автоматизма с таким рефлексом.
Если нет, подбирается другой рефлекс и т.д.

TODO - тоже сделать и для ментальных автоматизмов
 */
func ModelingSituationForMotAutomatizm(ma *MotAutomatizm)(bool){

	// TODO

	return false
}
/////////////////////////////////////////////////////////////////