public static void DonguCalistir()
        {
            int sayac = 0;

            ////////////////////////////////////////LOOP//////////////////////////////////////////////////////////////////////////////////////////
            for (int i = 0; i < PipeOp.Get_numofPipe(); i++)
            {
                PublicListeler.ANALISTE.Add(i, Sabitler.Pipe_Diameters[Sabitler.Pipe_Diameters.Length - 1]);//yani 558,8
                UnsafeNativeMethods.ENsetlinkvalue(i + 1, LinkValue.InitSetting, 130);
            }
            Console.WriteLine(1 + ". Döngü Başlangıcı");
            PublicListeler.DonguListesi = Iterations.Iteration_ILK(PublicListeler.ANALISTE).ToDictionary(entry => entry.Key, entry => entry.Value);
            Console.WriteLine("-------1. iterasyon sonucu Reilience index: " + ResIndexClass.Calculate_Resindex());
            Console.WriteLine("-------1. iterasyon sonucu head difference: " + FailureIndexClass.Calculate_Failureindex());
            Console.WriteLine("Hizlar ");
            var hizlar = PipeOp.Get_Velocity();

            for (int i = 0; i < PipeOp.Get_numofPipe(); i++)
            {
                Console.WriteLine(hizlar[i]);
            }
            PublicListeler.AraList_kontrolSonrasi.Clear();
            do
            {
                sayac = sayac + 1;
                Console.WriteLine("------------------------------------");
                Console.WriteLine(sayac + 1 + ". Döngü Başlangıcı");
                PublicListeler.DonguListesi = Iterations.Iteration(PublicListeler.DonguListesi).ToDictionary(entry => entry.Key, entry => entry.Value);
                int say = sayac + 1;
                Console.WriteLine("-------" + say + ". iterasyon sonucu Reilience index: " + ResIndexClass.Calculate_Resindex());
                Console.WriteLine("-------" + say + ". iterasyon sonucu head difference: " + FailureIndexClass.Calculate_Failureindex());
                Console.WriteLine("Hizlar ");
                var hizlar2 = PipeOp.Get_Velocity();
                for (int i = 0; i < PipeOp.Get_numofPipe(); i++)
                {
                    Console.WriteLine(hizlar2[i]);
                }
                PublicListeler.AraList_kontrolSonrasi.Clear();
            } while (PublicListeler.SabitListe.Count < PublicListeler.ANALISTE.Count);
            ////////////////////////////////////////LOOP/////////////////////////////////////////////////////////////////////////////////////////////
            Console.WriteLine(" ");
            var sonhal = PublicListeler.SabitListe.OrderBy(x => x.Key).ToList();

            Console.WriteLine(" ");
            Console.WriteLine("-----------SON DURUMDA ÇAPLAR---------------");
            foreach (KeyValuePair <int, float> kvp in sonhal)
            {
                UnsafeNativeMethods.ENsetlinkvalue(kvp.Key + 1, LinkValue.Diameter, kvp.Value);
                Console.WriteLine("Son hal > Boru = {0}, Çap = {1}", kvp.Key + 1, kvp.Value);
            }
            Console.WriteLine(" ");
            float min = FailureIndexClass.Calculate_Failureindex();
            float rez = ResIndexClass.Calculate_Resindex();

            PipeOp.CostCalculation(PublicListeler.SabitListe);
            Console.WriteLine("Pressure-30m= " + min);
            Console.WriteLine("Resilience index: " + rez);
        }
Ejemplo n.º 2
0
        public static Dictionary <int, float> Iteration_ILK(Dictionary <int, float> icListem)
        {
            PipeOp.Calculate_PowDis_ILK(icListem);
            var RankedList = PublicListeler.Powdis_Dict_ILK.OrderByDescending(x => x.Value).ToList();

            foreach (var itemq in RankedList.ToList())
            {
                UnsafeNativeMethods.ENgetlinkvalue(itemq.Key + 1, LinkValue.Diameter, out float valueDiam);
                PublicListeler.List_BoruvCap.Add(itemq.Key, valueDiam);
            }
            RankedList.Clear(); // RANKEDLIST ICINI TEMIZLIYORUM BURDA1
            NetworkOp.SaveAndRun();
            foreach (var FLitemler in PublicListeler.List_BoruvCap)
            {
                int   a = (Array.FindIndex(Sabitler.Pipe_Diameters, x => x.Equals(FLitemler.Value)));
                float b = Sabitler.Pipe_Diameters[a - 1];
                UnsafeNativeMethods.ENsetlinkvalue(FLitemler.Key + 1, LinkValue.Diameter, b);  //Diameter Reduction


                if (Iterations.Kontroller(FLitemler.Key) == true)
                {
                    Console.WriteLine(FLitemler.Key + 1 + ". pipe will be Reduced.....");
                    UnsafeNativeMethods.ENgetlinkvalue(FLitemler.Key + 1, LinkValue.Diameter, out float valueDiaa);
                    PublicListeler.AraList_kontrolSonrasi.Add(FLitemler.Key, valueDiaa);
                }
                else
                {
                    int   d = (Array.FindIndex(Sabitler.Pipe_Diameters, x => x.Equals(FLitemler.Value)));
                    float e = Sabitler.Pipe_Diameters[d];
                    UnsafeNativeMethods.ENsetlinkvalue(FLitemler.Key + 1, LinkValue.Diameter, e);
                    UnsafeNativeMethods.ENgetlinkvalue(FLitemler.Key + 1, LinkValue.Diameter, out float valueDiaa2);
                    Console.WriteLine(FLitemler.Key + 1 + ". pipe will be remained SAME");
                    PublicListeler.AraList_kontrolSonrasi.Add(FLitemler.Key, valueDiaa2);
                    NetworkOp.SaveAndRun();
                    PublicListeler.SabitListe.Add(FLitemler.Key, valueDiaa2);       //boru çapı azalmayacağı için Sabit listeye atanıyor.
                }
            }
            NetworkOp.OnlySave();
            Console.WriteLine("_____________________________");
            var yazdirilk = PublicListeler.List_BoruvCap.OrderBy(x => x.Key);

            foreach (KeyValuePair <int, float> kvp in yazdirilk)
            {
                UnsafeNativeMethods.ENsetlinkvalue(kvp.Key + 1, LinkValue.Diameter, kvp.Value);
                Console.WriteLine("iterasyon sonucunda > Boru = {0} = {1}", kvp.Key + 1, kvp.Value);
            }
            PublicListeler.List_BoruvCap.Clear();// List_BoruvCap LISTESINI TEMIZLIYORUM BURDA
            return(PublicListeler.AraList_kontrolSonrasi);
        }
Ejemplo n.º 3
0
        public static Dictionary <int, float> Iteration(Dictionary <int, float> icListe)
        {
            PipeOp.Calculate_PowerDissipation(icListe);

            var RankedList = PublicListeler.Powdis_Dict.OrderByDescending(x => x.Value).ToList();

            foreach (var itemq in RankedList.ToList())
            {
                UnsafeNativeMethods.ENgetlinkvalue(itemq.Key + 1, LinkValue.Diameter, out float valueDiam);
                PublicListeler.List_BoruvCap.Add(itemq.Key, valueDiam);
            }
            RankedList.Clear();                                           // RANKEDLIST ICINI TEMIZLIYORUM BURDA
            PublicListeler.Powdis_Dict.Clear();                           //Powdis_Dict ICINI TEMIZLIYORUM

            foreach (var FLitemler in PublicListeler.List_BoruvCap)       //kontroller ve azaltmalar
            {
                if (PublicListeler.SabitListe.ContainsKey(FLitemler.Key)) //Eğer test edilen eleman Sabit listede varsa
                {
                    UnsafeNativeMethods.ENgetlinkvalue(FLitemler.Key + 1, LinkValue.Diameter, out float c2);
                    PublicListeler.AraList_kontrolSonrasi.Add(FLitemler.Key, c2);
                }
                else
                {
                    if (Array.FindIndex(Sabitler.Pipe_Diameters, x => x.Equals(FLitemler.Value)) == 0)
                    {
                        int a = (Array.FindIndex(Sabitler.Pipe_Diameters, x => x.Equals(FLitemler.Value)));
                        UnsafeNativeMethods.ENsetlinkvalue(FLitemler.Key + 1, LinkValue.Diameter, a);  //AZALTMAYI BURDA YAPIYORUM\\\
                        NetworkOp.SaveAndRun();
                    }
                    else
                    {
                        int   a = (Array.FindIndex(Sabitler.Pipe_Diameters, x => x.Equals(FLitemler.Value)));
                        float b = Sabitler.Pipe_Diameters[a - 1];                                     //bu son boruya gelince saçmalıyor düzeltmemiz lazım
                        UnsafeNativeMethods.ENsetlinkvalue(FLitemler.Key + 1, LinkValue.Diameter, b); //AZALTMAYI BURDA YAPIYORUM\\\
                        NetworkOp.SaveAndRun();
                    }


                    if (Iterations.Kontroller(FLitemler.Key) == true)
                    {
                        Console.WriteLine(FLitemler.Key + 1 + ". pipe will be Reduced.....");
                        UnsafeNativeMethods.ENgetlinkvalue(FLitemler.Key + 1, LinkValue.Diameter, out float valueDiaa);
                        PublicListeler.AraList_kontrolSonrasi.Add(FLitemler.Key, valueDiaa);
                    }
                    else
                    {
                        int   a = (Array.FindIndex(Sabitler.Pipe_Diameters, x => x.Equals(FLitemler.Value)));
                        float c = Sabitler.Pipe_Diameters[a];
                        UnsafeNativeMethods.ENsetlinkvalue(FLitemler.Key + 1, LinkValue.Diameter, c);
                        //UnsafeNativeMethods.ENgetlinkvalue(FLitemler.Key + 1, LinkValue.Diameter, out float valueDiaa2);
                        Console.WriteLine(FLitemler.Key + 1 + ". pipe will be remained SAME");
                        PublicListeler.AraList_kontrolSonrasi.Add(FLitemler.Key, c);
                        NetworkOp.SaveAndRun();
                    }
                }
            }

            NetworkOp.SaveAndRun();
            foreach (var eleman in PublicListeler.AraList_kontrolSonrasi)
            {
                if (eleman.Value == PublicListeler.List_BoruvCap[eleman.Key])   //&&
                {
                    if (PublicListeler.SabitListe.ContainsKey(eleman.Key))
                    {
                        // Console.WriteLine("Sabit listede var Boru = {0}, Çap = {1}", eleman.Key, eleman.Value);
                    }
                    else
                    {
                        PublicListeler.SabitListe.Add(eleman.Key, eleman.Value);
                        // Console.WriteLine("SONHAL" + (eleman.Key + 1) + ". borunun Çapı: " + eleman.Value);
                    }
                }
            }
            Console.WriteLine("_____________________________");
            var yazdir = PublicListeler.List_BoruvCap.OrderBy(x => x.Key);

            foreach (KeyValuePair <int, float> kvp in yazdir)
            {
                UnsafeNativeMethods.ENsetlinkvalue(kvp.Key + 1, LinkValue.Diameter, kvp.Value);
                Console.WriteLine("iterasyon sonucunda > Boru = {0} = {1}", kvp.Key + 1, kvp.Value);
            }
            PublicListeler.List_BoruvCap.Clear();// List_BoruvCap LISTESINI TEMIZLIYORUM BURDA
            return(PublicListeler.AraList_kontrolSonrasi);
        }
Ejemplo n.º 4
0
        public static void Main()
        {
            ResIndexClass ResIndex = new ResIndexClass();
            NetworkOp     RunSim   = new NetworkOp();

            RunSim.StartSimulation();  // Networkü perform eder

            //Console.WriteLine("Resilience Index: ");//Kullanıcıdan Resilience index alınır
            //ResIndex.SetResindex(Convert.ToDouble(Console.ReadLine()));
            //double UserDefinedResindex=ResIndex.GetResindex();      //UserDefinedResindex Resilience indexi veriyor
            //PipeOp.Get_Flow(PipeOp.Get_numofPipe());

            PipeOp.Get_Flow();
            NetworkOp.SaveAndRun();

            //Console.WriteLine(PipeOp.PipeCost_Dia(1));
            //ReservoirOp.Get_ResElevation();

            //BU REZERVUAR YÜKSEKLİKLERİNİ ALABİLDİĞİM KISIM
            //float[] resyukseklikleri = ReservoirOp.Get_ResElevations();
            //foreach (float i in resyukseklikleri)
            //{
            //Console.WriteLine( "{0}", i);
            //}
            //BU REZERVUAR YÜKSEKLİKLERİNİ ALABİLDİĞİM KISIM

            //ReservoirOp.Calculate_TotalPowerofSystem();
            //PipeOp.Set_PipeDia(550);
            NetworkOp.SaveAndRun();


            //float[] Diameter1 = new float[PipeOp.Get_numofPipe()];
            //float[] Diameter2 = new float[PipeOp.Get_numofPipe()];

            //for (int j = 0; j < PipeOp.Get_numofPipe(); j++)
            //{
            //    Diameter1[j] = 550;
            //    Diameter2[j] = 500;

            //}

            // PipeOp.Calculate_PowerDissipation(Diameter1, Diameter2);
            PipeOp.Set_PipeDia(550);



            ////////////////////////////////////////DÖNGÜ/////////////////////////////////////////////////////////////////////////////////////////////
            for (int i = 0; i < PipeOp.Get_numofPipe(); i++)
            {
                PublicListeler.ANALISTE.Add(i, Sabitler.Pipe_Diameters[Sabitler.Pipe_Diameters.Length - 1]);//yani 550
            }

            Console.WriteLine(1 + ". Döngü Başlangıcı");
            PublicListeler.DonguListesi = Iterations.Iteration_ILK(PublicListeler.ANALISTE).ToDictionary(entry => entry.Key, entry => entry.Value);
            PublicListeler.AraList_kontrolSonrasi.Clear();
            PublicListeler.SabitListe.Add(-1, 0);

            do
            {
                sayac = sayac + 1;
                Console.WriteLine("------------------------------------");
                Console.WriteLine(sayac + 1 + ". Döngü Başlangıcı");
                PublicListeler.DonguListesi = Iterations.Iteration(PublicListeler.DonguListesi).ToDictionary(entry => entry.Key, entry => entry.Value);
                PublicListeler.AraList_kontrolSonrasi.Clear();
            } while (PublicListeler.SabitListe.Count < PublicListeler.ANALISTE.Count);
            //
            ////////////////////////////////////////DÖNGÜ/////////////////////////////////////////////////////////////////////////////////////////////



            Console.WriteLine(" ");
            Console.WriteLine("-----------SON DURUM-------------------------");
            foreach (KeyValuePair <int, float> kvp in PublicListeler.SabitListe)
            {
                Console.WriteLine("Sabit Liste > Boru = {0}, Çap = {1}", kvp.Key, kvp.Value);
            }



            Console.ReadLine();
        }