Example #1
0
        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();
            }
        }
Example #2
0
        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();
            }
        }
Example #3
0
        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();
        }
Example #4
0
        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();
        }
Example #5
0
        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();
        }
Example #6
0
        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();
        }