所以基本上我有不同的科学模型(算法)来计算某个值。每个算法都可以使用不同的参数集来微调模型。这些参数必须由用户更改。 (现在它将是一个简单的属性文件)。我正在使用的语言是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方法,因此客户端如何设置参数值并知道其类型?
答案 0 :(得分:0)
我会将所有参数视为int
或double
,即使只有两个可能的值,例如使用0和1而不是true和false。
你的算法需要一个可以改变的参数集合,以便产生结果。