public float[] HitungFitness()
{
float[] fitness = new float[populasi];
for (var individu = 0; individu < populasi; individu++)
{
fitness[individu] = CekConstraint(individu);
}
string[] sort = new string[populasi];
for (int i = 0; i < populasi; i++)
{
sort[i] = string.Format("\nIndividu {0} :Fitness {1}",(i + 1), fitness[i]);
}
bool swapped = true;
while (swapped)
{
swapped = false;
for (int i = 0; i < populasi-1 ; i++)
{
string[] strI = sort[i].Split('.');
float fitI = float.Parse(string.Format("0.{0}", strI[1]));
string[] strJ = sort[i + 1].Split('.');
float fitJ = float.Parse(string.Format("0.{0}", strJ[1]));
if (fitI < fitJ)
{
string sTmp = sort[i];
sort[i] = sort[i + 1];
sort[i + 1] = sTmp;
swapped = true;
}
}
}
return fitness;
}
可變populasi賦值= 12獲取錯誤 'System.IndexOutOfRangeException'
函數CekConstraint是給之間的返回值 '0 ***' 爲 '1'
我有一個問題搭配:
float fitI = float.Parse(string.Format("0.{0}", strI[1]));
或
float fitJ = float.Parse(string.Format("0.{0}", strI[1]));
當strI
或strJ
只給一個數組的值如strJ[1]
或stri[1]
然後我得到索引超出數組的界限。我承認錯誤,但我該如何解決這個問題?
請幫幫我。
我想這個問題是你的分割應該是':',而不是'.',所以改變這種排序'[I] .Split( '') ;'into this'sort [i] .Split(':');' – Pikoh
sort []數組元素包含「。」的唯一場景。在你寫入的fitness []元素的小數點中。當您調用** strI [1] **時,您將sort []元素除以「。」。並檢索第二個元素,因此您將檢索其中包含的fitness []元素的小數部分,但如果這個元素沒有小數點,則會顯示「。」。不會出現,因此也不會包含多個元素 – Innat3