0

情報:私の説明が十分かどうか確信が持てないので、前もってお詫び申し上げます。遺伝的アルゴリズムがどのように記述されるかについて頭を悩ませようとしています。以下の説明は、GA固有の知識ではないため、合理的な量のC#経験を持つ人が答えることができるはずの一般的な部分です。

質問: メソッド (Manager_Method) を作成する必要があります。メソッド (Manager_Method) の主な目的は、パラメーターのさまざまな組み合わせを 2 番目のメソッド (Computation_Method) に渡すことです。このメソッドは、これらの入力値を使用して結果を返します。

注意が必要なのは、選択した Computation_Method に必要なパラメーターを Manager_Method が判断できる必要があるという事実です (それぞれ異なる数/タイプの入力を持つ複数の Computation_Method があります)。

だから、誰かがこれを回避するための巧妙な方法、配列にハードコードする必要があるバー、各 Computation_Method の入力を知っているかどうか疑問に思っています。新しい Computation_Method を追加するたびに再コンパイルが必要になります。

前もって感謝します。

編集:XMLはアイデアかもしれません。回避しようとしているのは、パラメーターのハードコーディングです。私が避けようとしているのは、新しいComputation_Methodを追加したイベントで再コンパイルすることであり、また、Managerメソッドが各Computation_Methodに必要なパラメーターを認識できるようにすることです。これを行うには何らかの方法があるだろうと考えました。

4

2 に答える 2

1

あなたの質問を理解できるかどうかわかりませんが、ここでリフレクションを使用できるようです。特にMethodInfoクラスとそのGetParametersメソッド。これが私がそれを行う方法です:

public class A
{
    public void MyMethod(int integer, string str)
    {
    }
}

void Main()
{
    System.Reflection.MethodInfo method = typeof(A).GetMethod("MyMethod");
    ParameterInfo[] pars = method.GetParameters();
    foreach (ParameterInfo p in pars) 
    {
        Console.WriteLine(p.Name + ": " + p.ParameterType);
    }
}
于 2012-06-15T19:20:57.590 に答える
1

それらがどのようなパラメーターになるかはわかりませんが、提供した情報が限られているため、ManagerMethod に辞書を入力し、それを Computation_Method に渡して、キーと値のペアを確認できると思います。キーはパラメーター名、値は渡すパラメーター値になります。

例えば:

private vioid ManagerMethod()
{
   Dictionary<string,string>  params = new Dictionary<string,string>();
   params.Add("param1","Value1");
    params.Add("param2","Value2");
    params.Add("param3","Value3");

   ComputationMethod(params);
}
private void ComputationMethod(Dictionary<string,string> param)
{ 
   //Iterate through the Dictioanry
   // Check for your Key/Value and performa accoudringly.
}

同じ考えに基づいています。これで、パラメーターを XML ファイルにも入れることができます。それらを読んで渡します。オブジェクトのリストを作成し、それをメソッドに渡すこともできます。

これは何かを思いつくのに役立つと思います。

于 2012-06-15T19:03:52.743 に答える