Loading src/main/java/de/bsvrz/iav/fuzzylib/fuzzylib/Regel.java +6 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ import java.util.*; import static de.bsvrz.iav.fuzzylib.fuzzylib.FuzzyLogikHandler.*; /** * Eine Regel leitet aus vorhandenn Termen einen neuen Term ab. * Eine Regel leitet aus vorhandenen Termen einen neuen Term ab. * <p> * Eine Regel wird in der Form "Wenn Prämisse dann Konklusion mit * Sicherheitsgrad" angegeben. Die Prämisse besteht aus belieben Operationen auf Loading Loading @@ -101,6 +101,11 @@ public final class Regel implements Ausdruck<TermLiteral> { return praemisse + " -> " + konklusion + " (" + sicherheitsgrad + ")"; } /** * Builder für eine Regel. * * @author BitCtrl Systems GmbH, Falko Schumann */ public static class RegelBuilder { private final Ausdruck<Double> praemisse; Loading src/main/java/de/bsvrz/iav/fuzzylib/fuzzylib/Regelbasis.java +3 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,9 @@ import static de.bsvrz.iav.fuzzylib.fuzzylib.FuzzyLogikHandler.*; * <p> * Die Regelbasis wertet alle enthaltenen Regeln aus und akkumuliert * anschließend die abgeleiteten Terme zu Fuzzy-Variablen. * <p> * Eine Regelbasis ist nicht definiert ({@link #isNull()}), wenn sie keine Regel * besitzt. * * @author BitCtrl Systems GmbH, Falko Schumann * @see Regel Loading src/main/javadoc/de/bsvrz/iav/fuzzylib/fuzzylib/doc-files/inferenz.graphml +21 −6 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ term: Term</y:AttributeLabel> <y:BorderStyle color="#000000" type="line" width="1.0"/> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.310546875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="46.453125" x="41.2734375" xml:space="preserve" y="26.1328125">Literal<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> <y:UML clipContent="true" constraint="" hasDetailsColor="false" omitDetails="false" stereotype="interface" use3DEffect="false"> <y:AttributeLabel xml:space="preserve">wert: Object (wozu?)</y:AttributeLabel> <y:AttributeLabel xml:space="preserve">wert: Object</y:AttributeLabel> <y:MethodLabel xml:space="preserve"/> </y:UML> </y:UMLClassNode> Loading Loading @@ -131,20 +131,35 @@ akkumulation: Operator</y:AttributeLabel> <data key="d4" xml:space="preserve"/> <data key="d6"> <y:UMLClassNode> <y:Geometry height="117.0" width="191.0" x="287.9999999999998" y="244.0"/> <y:Geometry height="117.0" width="200.4826815642458" x="283.25865921787687" y="244.0"/> <y:Fill color="#FFFFFF" transparent="false"/> <y:BorderStyle color="#000000" type="line" width="1.0"/> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.310546875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="41.0068359375" x="74.99658203125" xml:space="preserve" y="3.0">Regel<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.310546875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="41.0068359375" x="79.7379228133729" xml:space="preserve" y="3.0">Regel<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> <y:UML clipContent="true" constraint="" hasDetailsColor="false" omitDetails="false" stereotype="" use3DEffect="false"> <y:AttributeLabel xml:space="preserve">praemisse: Ausdruck konklusion: TermSymbol sicherheitsgrad: double konklusion: TermVariable sicherheitsgrad: Sicherheitsgrad implikation: Operator</y:AttributeLabel> <y:MethodLabel xml:space="preserve">interpret(Kontext): TermLiteral</y:MethodLabel> </y:UML> </y:UMLClassNode> </data> </node> <node id="n8"> <data key="d4" xml:space="preserve"/> <data key="d6"> <y:UMLClassNode> <y:Geometry height="57.99664804469273" width="129.0" x="318.9999999999998" y="391.0"/> <y:Fill color="#FFFFFF" transparent="false"/> <y:BorderStyle color="#000000" type="line" width="1.0"/> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.310546875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="108.380859375" x="10.3095703125" xml:space="preserve" y="3.0">Sicherheitsgrad<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> <y:UML clipContent="true" constraint="" hasDetailsColor="false" omitDetails="false" stereotype="" use3DEffect="false"> <y:AttributeLabel xml:space="preserve">wert: double</y:AttributeLabel> <y:MethodLabel xml:space="preserve"/> </y:UML> </y:UMLClassNode> </data> </node> <edge id="e0" source="n2" target="n1"> <data key="d8" xml:space="preserve"/> <data key="d10"> Loading Loading @@ -234,7 +249,7 @@ implikation: Operator</y:AttributeLabel> <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> <y:LineStyle color="#000000" type="line" width="1.0"/> <y:Arrows source="diamond" target="none"/> <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="40.6796875" x="27.233194986979015" xml:space="preserve" y="-21.06640625">regeln<y:LabelModel><y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/></y:LabelModel><y:ModelParameter><y:SmartEdgeLabelModelParameter angle="6.283185307179586" distance="12.0" distanceToCenter="true" position="left" ratio="0.5" segment="0"/></y:ModelParameter><y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/></y:EdgeLabel> <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="40.6796875" x="24.862524595917563" xml:space="preserve" y="-21.06640625">regeln<y:LabelModel><y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/></y:LabelModel><y:ModelParameter><y:SmartEdgeLabelModelParameter angle="6.283185307179586" distance="12.0" distanceToCenter="true" position="left" ratio="0.5" segment="0"/></y:ModelParameter><y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/></y:EdgeLabel> <y:BendStyle smoothed="false"/> </y:PolyLineEdge> </data> Loading src/main/javadoc/de/bsvrz/iav/fuzzylib/fuzzylib/doc-files/inferenz.png +2.93 KiB (50.3 KiB) Loading image diff... src/main/javadoc/de/bsvrz/iav/fuzzylib/fuzzylib/doc-files/strahlensatzX.pngdeleted 100644 → 0 −4.02 KiB Loading image diff... Loading
src/main/java/de/bsvrz/iav/fuzzylib/fuzzylib/Regel.java +6 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ import java.util.*; import static de.bsvrz.iav.fuzzylib.fuzzylib.FuzzyLogikHandler.*; /** * Eine Regel leitet aus vorhandenn Termen einen neuen Term ab. * Eine Regel leitet aus vorhandenen Termen einen neuen Term ab. * <p> * Eine Regel wird in der Form "Wenn Prämisse dann Konklusion mit * Sicherheitsgrad" angegeben. Die Prämisse besteht aus belieben Operationen auf Loading Loading @@ -101,6 +101,11 @@ public final class Regel implements Ausdruck<TermLiteral> { return praemisse + " -> " + konklusion + " (" + sicherheitsgrad + ")"; } /** * Builder für eine Regel. * * @author BitCtrl Systems GmbH, Falko Schumann */ public static class RegelBuilder { private final Ausdruck<Double> praemisse; Loading
src/main/java/de/bsvrz/iav/fuzzylib/fuzzylib/Regelbasis.java +3 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,9 @@ import static de.bsvrz.iav.fuzzylib.fuzzylib.FuzzyLogikHandler.*; * <p> * Die Regelbasis wertet alle enthaltenen Regeln aus und akkumuliert * anschließend die abgeleiteten Terme zu Fuzzy-Variablen. * <p> * Eine Regelbasis ist nicht definiert ({@link #isNull()}), wenn sie keine Regel * besitzt. * * @author BitCtrl Systems GmbH, Falko Schumann * @see Regel Loading
src/main/javadoc/de/bsvrz/iav/fuzzylib/fuzzylib/doc-files/inferenz.graphml +21 −6 Original line number Diff line number Diff line Loading @@ -54,7 +54,7 @@ term: Term</y:AttributeLabel> <y:BorderStyle color="#000000" type="line" width="1.0"/> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.310546875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="46.453125" x="41.2734375" xml:space="preserve" y="26.1328125">Literal<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> <y:UML clipContent="true" constraint="" hasDetailsColor="false" omitDetails="false" stereotype="interface" use3DEffect="false"> <y:AttributeLabel xml:space="preserve">wert: Object (wozu?)</y:AttributeLabel> <y:AttributeLabel xml:space="preserve">wert: Object</y:AttributeLabel> <y:MethodLabel xml:space="preserve"/> </y:UML> </y:UMLClassNode> Loading Loading @@ -131,20 +131,35 @@ akkumulation: Operator</y:AttributeLabel> <data key="d4" xml:space="preserve"/> <data key="d6"> <y:UMLClassNode> <y:Geometry height="117.0" width="191.0" x="287.9999999999998" y="244.0"/> <y:Geometry height="117.0" width="200.4826815642458" x="283.25865921787687" y="244.0"/> <y:Fill color="#FFFFFF" transparent="false"/> <y:BorderStyle color="#000000" type="line" width="1.0"/> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.310546875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="41.0068359375" x="74.99658203125" xml:space="preserve" y="3.0">Regel<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.310546875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="41.0068359375" x="79.7379228133729" xml:space="preserve" y="3.0">Regel<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> <y:UML clipContent="true" constraint="" hasDetailsColor="false" omitDetails="false" stereotype="" use3DEffect="false"> <y:AttributeLabel xml:space="preserve">praemisse: Ausdruck konklusion: TermSymbol sicherheitsgrad: double konklusion: TermVariable sicherheitsgrad: Sicherheitsgrad implikation: Operator</y:AttributeLabel> <y:MethodLabel xml:space="preserve">interpret(Kontext): TermLiteral</y:MethodLabel> </y:UML> </y:UMLClassNode> </data> </node> <node id="n8"> <data key="d4" xml:space="preserve"/> <data key="d6"> <y:UMLClassNode> <y:Geometry height="57.99664804469273" width="129.0" x="318.9999999999998" y="391.0"/> <y:Fill color="#FFFFFF" transparent="false"/> <y:BorderStyle color="#000000" type="line" width="1.0"/> <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.310546875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="108.380859375" x="10.3095703125" xml:space="preserve" y="3.0">Sicherheitsgrad<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> <y:UML clipContent="true" constraint="" hasDetailsColor="false" omitDetails="false" stereotype="" use3DEffect="false"> <y:AttributeLabel xml:space="preserve">wert: double</y:AttributeLabel> <y:MethodLabel xml:space="preserve"/> </y:UML> </y:UMLClassNode> </data> </node> <edge id="e0" source="n2" target="n1"> <data key="d8" xml:space="preserve"/> <data key="d10"> Loading Loading @@ -234,7 +249,7 @@ implikation: Operator</y:AttributeLabel> <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> <y:LineStyle color="#000000" type="line" width="1.0"/> <y:Arrows source="diamond" target="none"/> <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="40.6796875" x="27.233194986979015" xml:space="preserve" y="-21.06640625">regeln<y:LabelModel><y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/></y:LabelModel><y:ModelParameter><y:SmartEdgeLabelModelParameter angle="6.283185307179586" distance="12.0" distanceToCenter="true" position="left" ratio="0.5" segment="0"/></y:ModelParameter><y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/></y:EdgeLabel> <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="40.6796875" x="24.862524595917563" xml:space="preserve" y="-21.06640625">regeln<y:LabelModel><y:SmartEdgeLabelModel autoRotationEnabled="false" defaultAngle="0.0" defaultDistance="10.0"/></y:LabelModel><y:ModelParameter><y:SmartEdgeLabelModelParameter angle="6.283185307179586" distance="12.0" distanceToCenter="true" position="left" ratio="0.5" segment="0"/></y:ModelParameter><y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/></y:EdgeLabel> <y:BendStyle smoothed="false"/> </y:PolyLineEdge> </data> Loading
src/main/javadoc/de/bsvrz/iav/fuzzylib/fuzzylib/doc-files/inferenz.png +2.93 KiB (50.3 KiB) Loading image diff...
src/main/javadoc/de/bsvrz/iav/fuzzylib/fuzzylib/doc-files/strahlensatzX.pngdeleted 100644 → 0 −4.02 KiB Loading image diff...