Java 模糊逻辑域模型

Java 模糊逻辑域模型,java,domain-driven-design,domain-model,fuzzy-logic,Java,Domain Driven Design,Domain Model,Fuzzy Logic,我一直在做一个涉及模糊逻辑控制器的项目,到目前为止一切都进展顺利 我已经成功地建模和实现了规范(S和T规范)、补充、模糊命题和隶属函数 然而,我现在面临的挑战是对FuzzyVariable建模,其中包括FuzzySet,其中包括UniversalSet 我的项目在离散值上工作,但我仍然希望为连续值添加一些支持 换句话说,我希望有一个类似于此的层次结构: public interface UniversalSet { } public abstract class DiscreteUnivers

我一直在做一个涉及模糊逻辑控制器的项目,到目前为止一切都进展顺利

我已经成功地建模和实现了规范(S和T规范)、补充、模糊命题和隶属函数

然而,我现在面临的挑战是对FuzzyVariable建模,其中包括FuzzySet,其中包括UniversalSet

我的项目在离散值上工作,但我仍然希望为连续值添加一些支持

换句话说,我希望有一个类似于此的层次结构:

public interface UniversalSet {
}

public abstract class DiscreteUniversalSet implements UniversalSet {
}

public abstract class ContinuousUniversalSet implements UniversalSet {
}

public interface FuzzySet {
}

public abstract class DiscreteFuzzySet implements FuzzySet {
    private DiscreteUniversalSet universalSet;
}

public abstract class ContinuousFuzzySet implements FuzzySet {
    private ContinuouUniversalSet universalSet;
}
问题是,我希望离散通用集能够返回离散值列表,但连续通用集能够返回范围(下限和上限)

阿尔法交点也是如此。我希望方法
getalphacrossion(double-alpha)
返回离散模糊集的离散值列表,以及连续模糊集的范围列表

目前,这个问题稍微让我想起了一个正方形-矩形(或圆形-椭圆形)问题,但我不确定如何继续

感谢您的帮助:D

使用泛型:

public interface UniversalSet {
}

public abstract class DiscreteUniversalSet implements UniversalSet {
    public double[] getValues() {...}
}

public abstract class ContinuousUniversalSet implements UniversalSet {
    public double getLowerBound() {...}
    public double getUpperBound() {...}
}

public interface FuzzySet<T extends UniversalSet> {
    T getAlphaIntersection(double alpha);
}

public abstract class DiscreteFuzzySet implements FuzzySet<DiscreteUniversalSet> {
    public DiscreteUniversalSet getAlphaIntersection(double alpha) { ... }
}

public abstract class ContinuousFuzzySet implements FuzzySet<ContinuousUniversalSet> {
    public ContinuousUniversalSet getAlphaIntersection(double alpha) { ... }
}
公共接口通用集{
}
公共抽象类DiscreteUniversalSet实现UniversalSet{
public double[]getValues(){…}
}
公共抽象类ContinuousUniversalSet实现了UniversalSet{
公共双getLowerBound(){…}
公共双getUpperBound(){…}
}
公共接口模糊集{
T获取alpha交叉点(双alpha);
}
公共抽象类DiscreteFuzzySet实现FuzzySet{
公共离散Versalset GetAlpha相交(双alpha){…}
}
公共抽象类ContinuousFuzzySet实现了FuzzySet{
公共连续通用集GetAlpha相交(双alpha){…}
}

我不熟悉模糊逻辑领域,但我也不太理解你的问题。也许展示更多你目前拥有的东西会有所帮助。似乎要同时支持离散集和连续集,您可以声明一个返回值的抽象,该返回值将同时具有离散和连续实现。如果所有操作都返回范围值或离散值,您可以使
FuzzySet
接口通用于该类型