示例#1
0
        private int SelectFile(int index)
        {
            //if (!pm_inited)
            //    InitService();

            if (!pm_inited)
            {
                return(int.MinValue);
            }

            isloaded         = false;
            selectfile_index = index;
            if (CheckSelectedFile())
            {
                if (!pm.Load(ListOfProblem[index], ref M))
                {
                    return(int.MinValue);
                }
                if (M == -1)
                {
                    isloaded = true;
                }
                return(M);
            }
            else
            {
                selectfile_index = -1;
                return(int.MinValue);
            }
        }
示例#2
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                //questa sotto è per debuggure e testare l'algoritmo con "test creati ad hoc" !!!
                //quindi lasciarla commentata a meno che non si deva testare casi particolari per algoritmo, il file è strutturato diversamente.
                //if (!pm.LoadTest(openFileDialog1.FileName))
                int M = 0;
                if (!pm.Load(openFileDialog1.FileName, ref M))
                {
                    MessageBox.Show(openFileDialog1.FileName + " is not a valid P-Median file.", "Load Error!!!", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    notifyIcon1.ShowBalloonTip(500, "P-Median Project", "File not loaded!", ToolTipIcon.Error);
                    this.showMatrixCostToolStripMenuItem.Enabled = false;
                }
                else
                {
                    if (M >= 0)
                    {
                        CPMedFormInsertionNumProblem ChooseMForm = new CPMedFormInsertionNumProblem(M);
                        if (ChooseMForm.ShowDialog() == DialogResult.OK)
                        {
                            SolutionViewer.Nodes.Clear();
                            this.ClusterTextBox.Clear();
                            this.ClusterTextBox.AppendText("P-Median Project");
                            int m = ChooseMForm.M;

                            if (!pm.Load(openFileDialog1.FileName, ref m, false))
                            {
                                MessageBox.Show(openFileDialog1.FileName + " is not a valid P-Median file.", "Load Error!!!", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                                notifyIcon1.ShowBalloonTip(500, "P-Median Project", "File not loaded!", ToolTipIcon.Error);
                                this.showMatrixCostToolStripMenuItem.Enabled = false;
                                return;
                            }
                            else
                            {
                                this.Text = TitleForm + " - " + openFileDialog1.SafeFileName + " - m=" + m.ToString();
                            }
                        }
                        else
                        {
                            return;
                        }
                    }
                    else
                    {
                        SolutionViewer.Nodes.Clear();
                        this.ClusterTextBox.Clear();
                        this.ClusterTextBox.AppendText("P-Median Project");
                        this.Text = TitleForm + " - " + openFileDialog1.SafeFileName;
                    }
                    computeToolStripMenuItem.Enabled = true;
                    notifyIcon1.ShowBalloonTip(500, "P-Median Project", "File loaded.", ToolTipIcon.Info);
                    this.showMatrixCostToolStripMenuItem.Enabled = true;
                }
            }
        }
示例#3
0
        static void EsempioMinimale()
        {
            String FileName = "Nome e Percorso del problema da elaborare";
            PMed3  pmed;
            int    m = 0; //per capacitated problem

            try
            {
                //Punto 1
                pmed = new PMed3(Console.Write, 1);

                //Punto 2
                if (pmed.Load(FileName, ref m))
                {
                    if (m == -1) //allora è di tipo uncapacitated (già caricato)
                    {
                        //....
                        //si può non fare niente oppure gestire cio che si deve gestire.
                        //
                    }
                    else
                    {
                        //questo fase è necessaria perchè sono molto diversi i file come strutturazione.
                        //invece che fare 2 metodi load, si è scelto di farne uno che a seconda di cosa ritorna
                        //nel parametro reference m, fa capire di che tipo è il problema,
                        //la seconda volta solo per i capacitated è da richiamare perchè la prima restituisce
                        //quanti sono i problemi in esso contenuti, la seconda carica il problema scelto.
                        int m_problem = 1; // dev'essere fra 1 e m.

                        if (!pmed.Load(FileName, ref m_problem, false))
                        {
                            Console.WriteLine("Impossibile caricare il file...");
                            return;
                        }
                    }
                    //Fine Punto 2
                    //a questo punto ho il file caricato sia uncapacitated che capacitated
                    //Punto 3
                    if (pmed.ComputeSolutions(true, true))
                    {
                        //Punto 4
                        //gestione dati....
                    }
                    else
                    {
                        Console.WriteLine("Erorre nella computazione...");
                    }
                }
            }
            catch (DllNotFoundException e)
            {
                Console.WriteLine("DLL NON TROVATA!!! \r\n{0}", e.Message);
            }
        }
示例#4
0
        private static bool LoadPmedProb(string filename, ref int m, bool return_m)
        {
            if (!pmed.Load(filename, ref m, return_m))
            {
                return(false);
            }

            //if(return_m)
            //    return true;

            //if (m == -1)
            //{
            //uncap
            //    return true;
            //}
            //else if(!pmed.Load(filename, ref m, return_m))
            //    return false;

            return(true);
        }
示例#5
0
        private static void TestPMedWrapper_Large()
        {
            //risolviamo il Pmed1.txt in large!!! 10.000

            PMed3 pmed3;
            uint  nsol = 2;

            try
            {
                pmed3 = new PMed3(Console.Write, nsol, "TestWrap", false, false);
            }
            catch (Exception e)
            {
                Console.WriteLine("exception: {0}", e.Message);
                Console.WriteLine("{0}", Directory.GetCurrentDirectory());
                return;
            }
//#if DEBUG
            int m = 0;

            if (!pmed3.Load(@"..\..\..\pmed1.txt", ref m))
            {
                Console.WriteLine("ERROR LOAD FILE!!!");
                return;
            }

            pmed3.ComputeSolutions(false, false);
            //pmed3.InitProblem();
//#endif

            //pmed3.InitProblem();
            //pmed3.BuildSolutionFromWrapper();

            Console.ReadKey();
            pmed3.ShowWrapperSolution(Console.Write);
            pmed3.CheckWrapperClusterSolution();
        }
示例#6
0
        private static void TestWrapperUncapacitated()
        {
            PMed3 pmed3;
            uint  nsol = 1;
            int   m    = 0;


            try
            {
                pmed3 = new PMed3(Console.Write, nsol, "TestWrap", false, false);
            }
            catch (Exception e)
            {
                Console.WriteLine("exception: {0}", e.Message);
                Console.WriteLine("{0}", Directory.GetCurrentDirectory());
                return;
            }


            if (!pmed3.Load(@"..\..\..\pmed4.txt", ref m, false))
            {
                Console.WriteLine("ERROR LOAD FILE!!!");
                return;
            }

            pmed3.ComputeSolutions(false, false);
            //pmed3.InitProblem();
            //#endif

            //pmed3.InitProblem();
            //pmed3.BuildSolutionFromWrapper();

            //Console.ReadKey();
            //pmed3.ShowWrapperSolution(Console.Write);
            pmed3.CheckWrapperClusterSolution();
        }