0

所以基本上我有不同的科学模型(算法)来计算某个值。每个算法都可以有一组不同的参数来微调模型。这些参数必须可由用户更改。(现在它将是一个简单的属性文件)。我使用的语言是Java。

所以我试着关注这个出版物

http://www.hillside.net/plop/2010/papers/sobajic.pdf

这是上面pdf的代码示例,我假设它是C#:

abstract class Algorithm
{
    public Algorithm()
        { }
    protected Parameter[] parameters;
    public Parameter[] getParameters()
        { return parameters.copy(); }
    public abstract void execute();
}

abstract class Parameter
{
    private string name;
    public string GetName()
        { return name; }
    public Parameter(string name)
        { this.name = name; }
}
class BoolParameter : Parameter
{
    private bool Value;
    public bool GetValue()
        { return Value; }
    public void SetValue(bool value)
        { Value = value; }
    public BoolParameter(string name, bool defaultvalue)
        : base(name)
    {
    Value = defaultvalue;
    }
}
class IntParameter : Parameter
{
private int min;
    private int max;
    private int Value;
    public int GetValue()
        { return Value; }
    public void SetValue(int value)
    {
        if (value < min)
        throw new ArgumentOutOfRange(GetName() + " can’t be less than " + min);
        if (value > max)
        throw new ArgumentOutOfRange(GetName() + " can’t be greater than " + max);
        Value = value;
    }
    public IntParameter(string name, int min, int max, int defaultvalue) : base(name)
    {
        this.min = min;
        this.max = max;
        Value = defaultvalue;
    }
}

如何设置参数值?假设具体算法返回 2 个参数的数组或列表,一个是 IntegerParameter,另一个是 StringParameter。然而,上述模式中的 Parameter 接口没有 setValue 方法,因此客户端如何设置参数值并知道其类型?

4

1 回答 1

0

我会将所有参数视为一个,int或者double即使只有两个可能的值,例如使用 0 和 1 而不是 true 和 false。

您的算法需要一个可以更改的参数集合,以便产生结果。

于 2012-07-06T11:29:02.123 回答