private void standardDeviationClicked(object sender, EventArgs e) { string operatorType = "SD"; Form dlg1 = new AnalyzeForm(); if (analyzeOption(dlg1)) { for (int i = 0; i < Data.columnChoosen.Length; i++) { if (Data.columnChoosen[i] != -1) { int column = Data.columnChoosen[i]; double[] data; int miss, dataSize; double result; createDataArr(column, out data, out miss, out dataSize); Debug.WriteLine(miss); result = FunctionClass.StandardDeviation(data, miss, dataSize); Debug.WriteLine("deviasi standar-nya adalah " + result); results.Add(result.ToString()); } } DialogResult dialog = new DialogResult(); Form dialogResult = new ResultForm(operatorType); dialog = dialogResult.ShowDialog(); results.Clear(); } else { dlg1.Close(); } }
private void regresionClicked(object sender, EventArgs e) { string operatorType = "Linear Regression"; Form dlg1 = new AnalyzeForm(); if (analyzeOption(dlg1)) { List <double[]> xy = new List <double[]>(); for (int i = 0; i < Data.columnChoosen.Length; i++) { if (Data.columnChoosen[i] != -1) { int column = Data.columnChoosen[i]; int miss, dataSize; double[] data; createDataArr(column, out data, out miss, out dataSize); Debug.WriteLine(miss); xy.Add(data); } } double r, rPar, a, aPar, b, bPar; long time, timeSeq; FunctionClass.LinearRegression( xy[0], xy[1], 0, xy[0].Length < xy[1].Length?xy[0].Length:xy[1].Length, out r, out b, out a, out timeSeq); ParallelFunctionClass.LinearRegressionPar( xy[0], xy[1], 0, xy[0].Length < xy[1].Length ? xy[0].Length : xy[1].Length, out rPar, out bPar, out aPar, out time); Debug.WriteLine("regresi linear-nya {2} adalah: Y = {0}X + {1}", a, b, timeSeq); Debug.WriteLine("regresi linearPar-nya {2} adalah: Y = {0}X + {1}", aPar, bPar, time); results.Add("Y = " + a + "X + " + b); DialogResult dialog = new DialogResult(); Form dialogResult = new ResultForm(operatorType); dialog = dialogResult.ShowDialog(); results.Clear(); } else { dlg1.Close(); } }
private void rangeClicked(object sender, EventArgs e) { string operatorType = "Range"; Form dlg1 = new AnalyzeForm(); if (analyzeOption(dlg1)) { for (int i = 0; i < Data.columnChoosen.Length; i++) { if (Data.columnChoosen[i] != -1) { int column = Data.columnChoosen[i]; double[] data; int miss, dataSize; double result, parRes, parRes1, parRes2; long timeSeq, timePar, timePar1, timePar2; createDataArr(column, out data, out miss, out dataSize); Debug.WriteLine(miss); result = FunctionClass.Range(data, miss, dataSize, out timeSeq); parRes = ParallelFunctionClass.RangeParTask1(data, miss, dataSize, out timePar); parRes1 = ParallelFunctionClass.RangeParTask2(data, miss, dataSize, out timePar1); Debug.WriteLine("range-nya adalah " + result + " waktu: " + timeSeq); Debug.WriteLine("range_parallel (1): " + parRes + " waktu: " + timePar); Debug.WriteLine("range_parallel (2): " + parRes1 + " waktu: " + timePar1); results.Add(result.ToString()); } } DialogResult dialog = new DialogResult(); Form dialogResult = new ResultForm(operatorType); dialog = dialogResult.ShowDialog(); results.Clear(); } else { dlg1.Close(); } }
private void modusToolStripMenuItem_Click(object sender, EventArgs e) { DialogResult dr = new DialogResult(); Form dlg1 = new AnalyzeForm(); dr = dlg1.ShowDialog(); for (int ix = 0; ix < Data.columnChoosen.Length; ix++) if (Data.columnChoosen[ix] != -1) columnChoosen.Add(Data.variableView[Data.columnChoosen[ix]].nama); judul = "Modus"; if (dr == DialogResult.OK) { for (int index = 0; index < Data.columnChoosen.Length; index++) if (Data.columnChoosen[index] != -1) { int column = Data.columnChoosen[index]; try { var sheet = reoGridControl2.CurrentWorksheet; int N = jumlahdata2(column); float[] a = new float[N]; float[] b = new float[N]; a = InitData2(column, N, a); float temp, temp2; int missingCount = 0; for (int bx = 0; bx < Data.variableView[column].missing.Count; bx++) { for (int ax = 0; ax < N; ax++) { float.TryParse(Data.variableView[column].missing[bx], out temp); if (a[ax] == temp) { a[ax] = 0; missingCount++; } } } if (Data.variableView[column].missingRange.Count > 1) { for (int ax = 0; ax < N; ax++) { float.TryParse(Data.variableView[column].missingRange[0], out temp); float.TryParse(Data.variableView[column].missingRange[1], out temp2); if (a[ax] >= temp && a[ax] <= temp2) { a[ax] = 0; missingCount++; } } } Debug.WriteLine(missingCount); float Modus = modus(N, a); results.Add(Modus); } catch (CudafyLanguageException cle) { } catch (CudafyCompileException cce) { } catch (CudafyHostException che) { Console.Write(che.Message); } } DialogResult dialog = new DialogResult(); Form dialogResult = new ResultForm(); dialog = dialogResult.ShowDialog(); // Console.ReadLine(); } else dlg1.Close(); }
private void varianceToolStripMenuItem_Click(object sender, EventArgs e) { DialogResult dr = new DialogResult(); Form dlg1 = new AnalyzeForm(); dr = dlg1.ShowDialog(); for (int ix = 0; ix < Data.columnChoosen.Length; ix++) if (Data.columnChoosen[ix] != -1) columnChoosen.Add(Data.variableView[Data.columnChoosen[ix]].nama); judul = "Variance"; if (dr == DialogResult.OK) { for (int index = 0; index < Data.columnChoosen.Length; index++) if (Data.columnChoosen[index] != -1) { int column = Data.columnChoosen[index]; try { CudafyModule km = CudafyTranslator.Cudafy(eArchitecture.sm_20); _gpu = CudafyHost.GetDevice(eGPUType.Cuda); _gpu.LoadModule(km); GPGPUProperties gpprop = _gpu.GetDeviceProperties(false); var sheet = reoGridControl2.CurrentWorksheet; // Get the first CUDA device and load our module int N = jumlahthread(column); float[] a = new float[N]; float[] b = new float[N]; float[] c = new float[N]; // fill the arrays 'a' and 'b' on the CPU int jumlahData = jumlahdata(column,N); a = InitData(1, column, N,a,b); b = InitData(2, column, N,a,b); float temp, temp2; int missingCount = 0; for (int bx = 0; bx < Data.variableView[column].missing.Count; bx++) { for (int ax = 0; ax < N; ax++) { float.TryParse(Data.variableView[column].missing[bx], out temp); if (a[ax] == temp) { a[ax] = 0; missingCount++; } } } if (Data.variableView[column].missingRange.Count > 1) { for (int ax = 0; ax < N; ax++) { float.TryParse(Data.variableView[column].missingRange[0], out temp); float.TryParse(Data.variableView[column].missingRange[1], out temp2); if (a[ax] >= temp && a[ax] <= temp2) { a[ax] = 0; missingCount++; } } } Debug.WriteLine(missingCount); float[] dev_a = _gpu.CopyToDevice(a); float[] dev_b = _gpu.CopyToDevice(b); float[] dev_c = _gpu.Allocate<float>(c); int N1 = N; float hasil = jumlahan(N, dev_a, dev_b, dev_c, c); float mean = (hasil / (jumlahData - missingCount)); _gpu.FreeAll(); c = new float[N1]; dev_a = _gpu.CopyToDevice(a); dev_b = _gpu.CopyToDevice(b); dev_c = _gpu.Allocate<float>(c); _gpu.Launch((N1 + 127) / 128, 128).powerVector(dev_a, dev_c, mean, N1); _gpu.CopyFromDevice(dev_c, c); _gpu.Free(dev_a); _gpu.Free(dev_c); float[] d = new float[N]; dev_c = _gpu.Allocate<float>(d); _gpu.Launch((N1 + 127) / 128, 128).powerVector(dev_b, dev_c, mean, N1); _gpu.CopyFromDevice(dev_c, d); _gpu.Free(dev_b); _gpu.Free(dev_c); _gpu.FreeAll(); if (jumlahData%2 != 0) { d[N1-1] = 0; } float[] f = new float[N1]; hasil = new float(); dev_a = _gpu.CopyToDevice(c); dev_b = _gpu.CopyToDevice(d); dev_c = _gpu.Allocate<float>(c); hasil = jumlahan(N, dev_a, dev_b, dev_c, c); float variance = (hasil / (jumlahData - missingCount-1)); results.Add(variance); } catch (CudafyLanguageException cle) { } catch (CudafyCompileException cce) { } catch (CudafyHostException che) { Console.Write(che.Message); } } DialogResult dialog = new DialogResult(); Form dialogResult = new ResultForm(); dialog = dialogResult.ShowDialog(); // Console.ReadLine(); } else dlg1.Close(); }
private void rankToolStripMenuItem_Click(object sender, EventArgs e) { DialogResult dr = new DialogResult(); Form dlg1 = new AnalyzeForm(); dr = dlg1.ShowDialog(); for (int ix = 0; ix < Data.columnChoosen.Length; ix++) if (Data.columnChoosen[ix] != -1) columnChoosen.Add(Data.variableView[Data.columnChoosen[ix]].nama); if (dr == DialogResult.OK) { for (int index = 0; index < Data.columnChoosen.Length; index++) if (Data.columnChoosen[index] != -1) { int column = Data.columnChoosen[index]; rank(column); } DialogResult dialog = new DialogResult(); Form dialogResult = new ResultForm(); dialog = dialogResult.ShowDialog(); // Console.ReadLine(); } else dlg1.Close(); }
private void modusToolStripMenuItem_Click(object sender, EventArgs e) { IDictionary<string, double> hasilmodus = new Dictionary<string, double>(); DialogResult dr = new DialogResult(); Form dlg1 = new AnalyzeForm(); dr = dlg1.ShowDialog(); for (int ix = 0; ix < Data.columnChoosen.Length;ix++ ) if(Data.columnChoosen[ix]!=-1) columnChoosen.Add(Data.variableView[Data.columnChoosen[ix]].nama); if (dr == DialogResult.OK) { for (int index = 0; index < Data.columnChoosen.Length;index++) if (Data.columnChoosen[index] != -1) { int column = Data.columnChoosen[index]; string labelkolom = Data.variableView[Data.columnChoosen[index]].nama; Console.WriteLine(column); try { var sheet=reoGridControl2.CurrentWorksheet; int N = sheet.RowCount; Console.WriteLine(N); double[] arrayIsi = new double[N]; for (int i = 0; i < N; i++) { var isi = sheet.GetCell(i, column); if (isi != null && isi.Data != null) { string s = isi.Data.ToString(); double bil; try { bil = double.Parse(s); } catch (Exception c) { bil = 0; } arrayIsi[i] = bil; /* for (int ix = 0; ix < Data.variableView[column].missing.Count; ix++) { if(bil.ToString() != Data.variableView[column].missing[ix]) }*/ } } double temp, temp2; IDictionary<double, int> zz = new Dictionary<double, int>(); for(int i = 0; i<arrayIsi.Length; i++) { foreach (var terserah in Data.variableView[column].missing) // Missing Diskritisasi { if (terserah != arrayIsi[i].ToString()) if (zz.ContainsKey(arrayIsi[i])) { zz[arrayIsi[i]] = zz[arrayIsi[i]] + 1; } else { zz.Add(arrayIsi[i], 1); } //untuk mengeluarkan perhitungan frekuensi dari sebuah bilangan } if (Data.variableView[column].missingRange.Count > 0) { double.TryParse(Data.variableView[column].missingRange[0], out temp); double.TryParse(Data.variableView[column].missingRange[1], out temp2); if ( arrayIsi[i] < temp || arrayIsi[i] > temp2) if (zz.ContainsKey(arrayIsi[i])) { zz[arrayIsi[i]] = zz[arrayIsi[i]] + 1; } else { zz.Add(arrayIsi[i], 1); } } } if (zz.Count == 0) { for (int i = 0; i < arrayIsi.Length; i++) if (zz.ContainsKey(arrayIsi[i])) { zz[arrayIsi[i]] = zz[arrayIsi[i]] + 1; } else { zz.Add(arrayIsi[i], 1); } } zz.Remove(0); //Parallel Disini aja kali ya //Menghitung Jumlah data dan dibagi 2 di masukan ke dalam thread double mode = 0; int ma = 0; var sw = Stopwatch.StartNew(); foreach (KeyValuePair<double, int> pair in zz) { if (ma < pair.Value) { ma = pair.Value; mode = pair.Key; } //Console.WriteLine("{0}, {1}", pair.Key, pair.Value); Console.WriteLine("Sekuensial thread {0} nilainya {1}", Thread.CurrentThread.ManagedThreadId, pair); } Console.WriteLine("Nilai Modusnya adalah : {0}", mode); Console.WriteLine("waktu seq: {0}", sw.Elapsed.TotalMilliseconds); Console.WriteLine(); hasilmodus.Add(labelkolom, mode); double labelparalel = 0; float modusparalel = 0; sw = Stopwatch.StartNew(); Parallel.ForEach(zz, isi => { if (modusparalel < isi.Value) { modusparalel = isi.Value; labelparalel = isi.Key; } Console.WriteLine("Paralel thread {0} nilainya {1}", Thread.CurrentThread.ManagedThreadId, isi); }); results.Add(labelparalel); Console.WriteLine("hasil modus paralel: {0}", labelparalel); Console.WriteLine("Wktu parael: {0}", sw.Elapsed.TotalMilliseconds); /*int jumlahData = arrayIsi.Length / 2; double[] bagian_1 = new double[jumlahData]; double[] bagian_2 = new double[jumlahData]; double[] allocate = new double[jumlahData]; int counter = 0; foreach (double data in arrayIsi) { if (counter <= jumlahData) { bagian_1[counter] = data; } else { bagian_2[counter] = data; } counter++; } double[] dev_a = _gpu.CopyToDevice(bagian_1); double[] dev_b = _gpu.CopyToDevice(bagian_2); double[] dev_c = _gpu.Allocate<double>(allocate); while (jumlahData > 1) { if (jumlahData % 2 == 0) { jumlahData = jumlahData / 2; } else { jumlahData = (jumlahData + 1) / 2; } } */ //mode = zz.GroupBy(value => value.Value).OrderByDescending(group => group.Count()).First().First().Key; //Console.WriteLine(mode); //hasilmodus.Add(labelkolom, mode); //Console.WriteLine("di atas ini"); /* * hapus aja int[] data = new int[10000000]; int[] K=new int[2500]; IDictionary<string, int> kamus = new Dictionary<string, int>(); kamus.Add("1", 13); kamus.Add("2", 99999668); int maxValue = 0; for (int i = 0; i < sheet.RowCount;i++ ) { data[i] = Convert.ToInt32(sheet[i,0]); } for (int x = 0; x < data.Length; x++) { //K[data[x]] = K[data[x]] + 1; if(kamus.ContainsKey(data[x].ToString())) { kamus[data[x].ToString()] = kamus[data[x].ToString()] + 1; //kamus.Add(data[x].ToString(), kamus[data[x].ToString()] + 1); } else { //kamus[data[x].ToString()] = 1; kamus.Add(data[x].ToString(), 1); } } //Console.WriteLine(kamus.ToString()); foreach (int z in kamus.Values) { //Console.WriteLine(z); } maxValue = kamus.Values.Max(); for (int y = 0; y < data.Length; y++) { if(data[y]>kamus[data[y].ToString()]) //(data[y]>K[data[y]]) { maxValue=data[y]; //diubah //maxValue = kamus[data[y]]; } } Debug.WriteLine(maxValue); */ } catch (CudafyLanguageException cle) { } catch (CudafyCompileException cce) { } catch (CudafyHostException che) { Console.Write(che.Message); } } DialogResult dialog = new DialogResult(); Form dialogResult = new ResultForm(); /* foreach (KeyValuePair<string, double> pair in hasilmodus) { Console.WriteLine("Kolom {0} nilai modus {1}", pair.Key, pair.Value); } */ dialog = dialogResult.ShowDialog(); // Console.ReadLine(); } else dlg1.Close(); }