2012-12-07 341 views
0

我一直在研究一个涉及模糊逻辑控制器的项目,到目前为止一切都很顺利。模糊逻辑域模型

我已经成功地建模和实现了规范(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; 
} 

的问题是,我想为离散通用设置要能够返回离散值的列表,但对于连续的通用集来返回范围(下限和上限)。

同样适用于alpha交叉。我想方法getAlphaIntersection(double alpha)返回离散模糊集合的离散值列表,以及连续列表的范围列表。

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

任何帮助表示赞赏:d

+2

我不熟悉的模糊逻辑域,不过我还不太明白你的问题。也许更多地展示你迄今为止的内容将会有所帮助。看起来,为了支持离散和连续集合,您可以声明一个返回值的抽象,这将具有离散和连续的实现。 – eulerfx

+1

,如果你的所有操作都返回范围或离散值,那么你可以让你的'FuzzySet'接口通用于该类型 –

回答

1

使用泛型:

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) { ... } 
}