@@ -97,24 +97,29 @@ private void convertConjunction() {
97
97
NodeContext nodeContext = null ;
98
98
double remainingSum = ss .getPosDirSum ();
99
99
int i = 0 ;
100
+ boolean optionalInputMode = false ;
101
+
100
102
for (Synapse s : candidates ) {
101
103
double v = s .getMaxInputValue ();
102
- final boolean isOptionalInput = sum + remainingSum - v + ss .getPosRecSum () + ss .getPosPassiveSum () + ss .getBiasSum () > 0.0 ;
104
+ if (sum + remainingSum - v + ss .getPosRecSum () + ss .getPosPassiveSum () + ss .getBiasSum () > 0.0 ) {
105
+ optionalInputMode = true ;
106
+ }
103
107
104
- if (!isOptionalInput ) {
105
- remainingSum -= v ;
108
+ if (!optionalInputMode ) {
106
109
107
110
NodeContext nlNodeContext = expandNode (nodeContext , s );
108
111
if (nlNodeContext == null ) {
109
- break ;
112
+ return ;
110
113
}
111
114
nodeContext = nlNodeContext ;
115
+
116
+ remainingSum -= v ;
112
117
sum += v ;
113
118
i ++;
114
119
} else {
115
120
boolean belowThreshold = sum + v + remainingSum + ss .getPosRecSum () + ss .getPosPassiveSum () + ss .getBiasSum () <= 0.0 ;
116
121
if (belowThreshold ) {
117
- break ;
122
+ return ;
118
123
}
119
124
120
125
NodeContext nlNodeContext = expandNode (nodeContext , s );
@@ -126,11 +131,14 @@ private void convertConjunction() {
126
131
127
132
final boolean sumOfSynapseWeightsAboveThreshold = sum + ss .getPosRecSum () + ss .getPosPassiveSum () + ss .getBiasSum () > 0.0 ;
128
133
final boolean maxAndNodesReached = i >= MAX_AND_NODE_SIZE ;
129
- if (sumOfSynapseWeightsAboveThreshold || maxAndNodesReached || i == candidates .size ()) {
130
- outputNode .addInput (nodeContext .getSynapseIds (), threadId , nodeContext .node , true );
131
- return ;
134
+ if (sumOfSynapseWeightsAboveThreshold || maxAndNodesReached ) {
135
+ break ;
132
136
}
133
137
}
138
+
139
+ if (nodeContext != null && !optionalInputMode ) {
140
+ outputNode .addInput (nodeContext .getSynapseIds (), threadId , nodeContext .node , true );
141
+ }
134
142
}
135
143
136
144
0 commit comments