PDA

View Full Version : سوال: راهنمایی در تابع هدف



zardosht
دوشنبه 19 اسفند 1392, 22:21 عصر
با سلام خدمت دوستان عزیز ببخشید من این کد رو اماده کردم برای خوشه بندی ولی در زمان اجرا در بعضی از مواقع خطای

Index was outside the bounds of the array.


در خط

int[] duplicates = temp[al].Intersect(temp[rand[cx]]).ToArray();

میده میتونید راهنماییم کنید مشکل کجاست؟


double xy1 = 0;
double xy2 = 0;
double x1 = 0;
double y1 = 0;
double min = 1;//import
double dl = 0;
double[] simil = newdouble[all];
double result=0;
int ind = 0;
try
{
for (int al = 0; al < all; al++) //////محاسبه فاصله كسينوسي تك تك عناصر از مراكز خوشه
{
for (int cx = 0; cx < k; cx++) ///تعداد كلاستر ها
{
xy1 = 0;
xy2 = 0;
x1 = 0;
y1 = 0;
int[] duplicates = temp[al].Intersect(temp[rand[cx]]).ToArray();
foreach (var d in duplicates)
{
xy1 = xy1 + user[al, d] * user[rand[cx], d];
}
x1 = userHelp[al, 0];
y1 = userHelp[rand[cx], 0];
xy2 = Math.Sqrt(x1 * y1);
dl = dl + (1 - (xy1 / xy2)) * (1 - (xy1 / xy2));
if ((1 - (xy1 / xy2)) <= min)
{
min = (1 - (xy1 / xy2));
}
}
simil[al] = Math.Sqrt(dl); /////هر كدوم كمتر بود به عنوان مركز در نظر مي گيري
dl = 0;
}
 
//////////////////////////////مراكز جديد بازيابي مي شوند///////////////////////////////
if (simil.Length != 0)
{
ind = Array.IndexOf(simil, simil.Min());
result = simil.Min();
//center[i] = simil1[ind];
}
}
catch (IndexOutOfRangeException)
{
MessageBox.Show("Index Out Of range");
}
 
 
return (result);
}

rahnema1
سه شنبه 20 اسفند 1392, 06:02 صبح
سلام،
اطلاعات کافی برای اینکه بفهمیم اشکال از کجاست را ارائه ندادید. مثلا معلوم نیست آرایه rand چه طور پر شده و چند عضو داره و همچنین در مورد آرایه temp چیزی نمیدونیم. اگه بتونید لطفا کد کامل را بذارید

agent_6332
سه شنبه 20 اسفند 1392, 08:24 صبح
اگر آرایه با حلقه پیمایش میشه باید پایان حلقه با تعداد ایندکس های آرایه تنظیم شود . البته جناب rahnema1 درست فرمودند اطلاعاتی که به ما دادید ناقص می باشد