Пакет types_psy
Структура Дерева понимания:
type levelModel struct {
ID int
Level int /* номер уровня узла (проставляется при восстановлении дерева из файла)
.Level для словестных узлов проставляется в func getTreeInfo(), в func recursiveTree(node
*/
//Условия активации данного узла - ID 0- НОРМА, 1-ПЛОХО, 2-ХОРОШО
ConditionG int
/* сочетания активных контекстов s
3-ВОЗБУЖДЕНИЕ, 4-ВЯЛОСТЬ,5-ГОН, 6-ИГРОВОЙ,7-СТРАХ, 8-АГРЕССИЯ,9-ЗАЩИТНЫЙ, 10-ЗЛОСТЬ,
11-ДОБРОТА, 12-ПАССИВНОСТЬ, 13-ЛЮБОПЫТСТВО, 14-ОСТОРОЖНОСТЬ
- ConditionA[] до 3-х сочетаний, , что образует большое количество(psy_base_emotions_arrays.go)
эмоциональных контекстов для каждого из трех базовых
в массивах:
var var EmotionsArrayN[] Acomb 0- НОРМА, 1-ПЛОХО, 2-ХОРОШО
var EmotionsArray0[] Acomb // -НОРМА
var EmotionsArray1[] Acomb // -ПЛОХО
var EmotionsArray2[] Acomb // -ХОРОШО
уже определены в базовой структуре psy_tree_model_basic.txt
Условия активации данного узла - ID Tarray0[],Tarray1[],Tarray2[] в зависимости от ConditionG
*/
ConditionA int // эмоция в формате Acomb: emotion:=GetActiveBaseContextsAcomb(node.ConditionG)
ConditionP int //Условия активации данного узла - ID действия с Пульта
ConditionS int //Условия активации данного узла - ID WArr ОДНОГО корня, окончания или символа
/*вес значимости базовых условий узла из func ChangeWeightValue(
А в привязанных эпизодич.памяти - сохраняется текущее самоощущение, получаемое из _, result := GetCurBaseEmotionsValues()
*/
Weight int
AutomatismID int // привычный моторный автоматизм
// результативность автоматизмв: 0-10 +1 после стало лучше, -1 - после стало хуже !!! просто брать из самого автоматизма !!!
// Result int
/* Цель, может развиваться на стороне Гомункулуса
*/
TaskID int
/* привычность увеличивается в func NewTreeModelNode() так, что новый узен в новых условиях
образуется когда Confidence > 3 - чтобы дерево не засорялось любой новизной
Можно забывать почти не используемые, - пусть если нужно сформируются.
*/
Confidence int // привычность, уверенность 0-10
/* К узлу может быть привязно сколько угодно зависимых массивов, как то:
// список всех узлов ЭпизодПамяти привязанных к ID узла Дерева
func GetPsyMemoryListFromTreeId(node int)(*EpisodeMemory)
// список всех моторных Автоматизмов привязанных к ID узла Дерева
func GetMotorsAutomatizmListFromTreeId(nodeID int)(*MotorsAutomatism){
// список всех мыслительных Автоматизмов привязанных к ID узла Дерева
func GetMentalsAutomatizmListFromTreeId(nodeID int)(*MentalsAutomatism){
*/
BaseNodeID int // ID родителя
BaseNode *levelModel // адрес родителя НО МОЖНО ПРИМЕНЯТЬ TreeModelActiveList[] *levelModel - все предшествующие узлы
Children []levelModel // дочерние узлы (ветвление) НЕ АДРЕСА, А РЕАЛЬНЫЕ ОБЪЕКТЫ
/* кром етого, к каждому узлу привязывается Опыт:
var ExperienceNodeID=make(map[int]*Experience)
*/
}
///////////////////////////////////////////////////////////////////
С узлами Дерева понимания ассоциированы многие другие структуры, используя ID узла Дерева, например, Опыт и Эпизодическая память. Поэтому эти структуры не вошли в структуру Дерва и оно остается компактным для записи в файл.
Вот фрагмент файла с записью Дерева понимания (каждая строка – один узел Дерева):
377|-1|-1|-1|6141|0|83|0|5|6||#|
378|-1|-1|-1|0|0|0|0|3|377||#|
379|-1|-1|-1|13244|0|0|0|3|378||#|
380|-1|-1|-1|5986|0|82|0|3|379||#|
381|-1|-1|-1|21812|2|0|0|4|6||#|
382|-1|-1|-1|27777|2|382|0|4|381||#|
383|-1|-1|-1|0|2|0|0|4|382||#|
384|-1|-1|-1|1478|2|0|0|4|383||#|
385|-1|-1|-1|13388|2|0|0|4|384||#|
386|-1|-1|-1|0|2|0|0|4|385||#|
387|-1|-1|-1|27303|2|0|0|4|386||#|
388|-1|-1|-1|24882|2|388|0|4|387||#|
4|2|-1|-1|-1|0|0|0|0|1||#|