Ejemplo n.º 1
0
        private double solda(IsemriL isemriL)
        {
            int cevap = Convert.ToInt32(Convert.ToInt32(isemriL.Konum1Kolon) + Convert.ToInt32(isemriL.Konum2Kolon) < this.max_kolon + this.min_kolon);

            // sifirsa -1, 1 ise 1 donmeli
            return(2 * cevap - 1);
        }
Ejemplo n.º 2
0
        private bool sinirlaricinde(int vincNo, IsemriL isemriL)
        {
            int vincIndex  = vincNo - 2;
            int lowerIndex = this.vinc_sinirlar[vincIndex, 0];
            int upperIndex = this.vinc_sinirlar[vincIndex, 1];
            int konum1     = Convert.ToInt32(isemriL.Konum1Kolon);
            int konum2     = Convert.ToInt32(isemriL.Konum2Kolon);

            return(konum1 <= upperIndex && konum1 >= lowerIndex && konum2 <= upperIndex && konum2 >= lowerIndex);
        }
Ejemplo n.º 3
0
 private bool onculersaglandi(IsemriL isemriL, string[] islistesi)
 {
     if (Predecessor.ContainsKey(isemriL))
     {
         string oncu = Predecessor[isemriL];
         if (oncu is null)
         {
             return(true);
         }
         else
         {
             return(islistesi.Contains(oncu));
         }
     }
     else
     {
         return(true);
     }
 }
Ejemplo n.º 4
0
        public void Solve(out List <IsemriL> WorkList)
        {
            Console.WriteLine($"{this.IsemriTable.Count} is emri mevcut. {this.timelimit} dakika icinde yapilacaklar optimize ediliyor...");
            this.cevap = new Dictionary <Durum, Yapilacak>();
            String[] yapilanisler = new String[0];
            WorkList = new List <IsemriL>();
            detay  dummy = new detay();
            double totalcost;

            detay vinc2iptal = new detay();

            vinc2iptal.bitimzamani     = timelimit + 1;
            vinc2iptal.baslangiczamani = 0;
            vinc2iptal.bitimkonumu     = vinc2_ilkkonum;

            detay vinc3iptal = new detay();

            vinc3iptal.bitimzamani     = timelimit + 1;
            vinc3iptal.baslangiczamani = 0;
            vinc3iptal.bitimkonumu     = vinc3_ilkkonum;

            Durum simdikidurum;


            if (this.vinc2_on && this.vinc3_on)
            {
                simdikidurum = new Durum(this.DurumCounter++, 0, yapilanisler, false, false, this.vinc2_ilkkonum, this.vinc3_ilkkonum, dummy, dummy);
            }
            else if (this.vinc2_on)
            {
                simdikidurum = new Durum(this.DurumCounter++, 0, yapilanisler, false, true, this.vinc2_ilkkonum, this.vinc3_ilkkonum, dummy, vinc3iptal);
            }
            else
            {
                simdikidurum = new Durum(this.DurumCounter++, 0, yapilanisler, true, false, this.vinc2_ilkkonum, this.vinc3_ilkkonum, vinc2iptal, dummy);
            }

            if (this.vinc2_on && this.vinc3_on)
            {
                totalcost = RecursiveFun(simdikidurum, null, null);
            }
            else if (this.vinc2_on)
            {
                totalcost = RecursiveFun(simdikidurum, null, null);
            }
            else
            {
                totalcost = RecursiveFun(simdikidurum, null, null);
            }

            //resolve the answer here

            while (simdikidurum.getZaman() < this.timelimit && this.cevap.Keys.Contains(simdikidurum))
            {
                Yapilacak yap       = this.cevap[simdikidurum];
                int       aksiyon   = yap.aksiyontipi;
                string    yazilacak = yap.id;

                IsemriL data = IsemriTable.FirstOrDefault(o => o.UniqueID.Equals(yazilacak));

                string temp;

                if (aksiyon == 2)
                {
                    temp               = ($"t={simdikidurum.getZaman()}, {data.AtmosphereTuru},  vinc 2 ile {data.Konum1Kaide} nolu kaideden {data.Konum2Kaide} nolu kaideye {data.Yapilacakis} | {data.UniqueID}  |  Konum (kolon1) {data.Konum1Kolon}  Konum (kolon2) {data.Konum2Kolon} | {yap.skor}");
                    data.VincNo        = 2;
                    data.yapilacagi_dk = simdikidurum.getZaman();
                    Console.WriteLine(temp);
                    Program.writeLog(temp, "ATAMA");
                }
                else if (aksiyon == 3)
                {
                    temp               = ($"t={simdikidurum.getZaman()}, {data.AtmosphereTuru},   vinc 3 ile {data.Konum1Kaide} nolu kaideden {data.Konum2Kaide} nolu kaideye {data.Yapilacakis} | {data.UniqueID} |  Konum (kolon1) {data.Konum1Kolon}  Konum (kolon2) {data.Konum2Kolon} | {yap.skor}");
                    data.VincNo        = 3;
                    data.yapilacagi_dk = simdikidurum.getZaman();
                    Console.WriteLine(temp);
                    Program.writeLog(temp, "ATAMA");
                }
                else
                {
                    Console.WriteLine($"{yap.id}");
                    Program.writeLog($"{yap.id}", "ATAMA");
                }
                WorkList.Add(data);
                simdikidurum = yap.sonDurum;
            }
        }
Ejemplo n.º 5
0
 private double sagda(IsemriL isemriL)
 {
     return(-solda(isemriL));
 }
Ejemplo n.º 6
0
        public ProblemVerisiFULL()
        {
            JSONdosyalar = new JsonReader();
            DataTable DTtahmini_proses_bitim = new DataTable();
            DataTable OOtahmini_proses_bitim = new DataTable();
            DataTable DTkaide             = new DataTable();
            DataTable DTgomlek            = new DataTable();
            DataTable DTfirin             = new DataTable();
            DataTable DTsogutmacani       = new DataTable();
            DataTable DTkonvektor         = new DataTable();
            DataTable DTliste             = new DataTable();
            DataTable DTkaidebobin        = new DataTable();
            DataTable DTbobinsayisi       = new DataTable();
            DataTable bobinsayisi         = new DataTable();
            DataTable DTEquipList         = new DataTable();
            DataTable DTZoneList          = new DataTable();
            DataTable CreateSsysWorkOrder = new DataTable();

            string[] SonucArray = new string[100];
            Console.WriteLine("web service bağlanılıyor-" + DateTime.Now.ToString());
            BAF_WebService.BAF_WebService objService = new BAF_WebService.BAF_WebService();


            byte equipmentID = 1;

            DTtahmini_proses_bitim = objService.GetAnnealingEstimatedProcessEnding().Tables[0];
            DTkaide       = objService.GetAnnealingEquipments(equipmentID).Tables[0];
            DTgomlek      = objService.GetAnnealingEquipments(++equipmentID).Tables[0];
            DTfirin       = objService.GetAnnealingEquipments(++equipmentID).Tables[0];
            DTsogutmacani = objService.GetAnnealingEquipments(++equipmentID).Tables[0];
            DTkonvektor   = objService.GetAnnealingEquipments(++equipmentID).Tables[0];
            DTkaidebobin  = objService.GetAnnealingWarehouseBatchesForLogistic().Tables[0];
            DTliste       = objService.GetAnnealingStateRecords().Tables[0];
            DTEquipList   = objService.GetSsysEquipmentList().Tables[0];
            DTZoneList    = objService.GetSsysBafZoneDefinitions().Tables[0];

            //objService.CreateSsysWorkOrder(strObjeNo, strObjeTipi, strEmirTipi, strAlHat, strBrkHat, strAciklama);
            OOtahmini_proses_bitim = DTtahmini_proses_bitim;

            SogutmacanListesi = new List <Sogutmacan>();
            foreach (DataRow dr in DTsogutmacani.Rows)
            {
                // objeyi oluşturmak gerekiyor. Parametresiz oluşturacaksan constructor eklemen lazım
                // İstersen Sogutmacan(int no, String atmosphereType, String statusText, int baseNumber, int isIdled) olarak doldurabilirsin
                Sogutmacan sogutmacani = new Sogutmacan();
                sogutmacani.AtmosphereType = dr["AtmosphereType"].ToString();
                sogutmacani.BaseNumber     = Convert.ToInt32(dr["BaseNumber"].ToString());
                sogutmacani.StatusText     = dr["StatusText"].ToString();
                sogutmacani.IsIdled        = Convert.ToInt32(dr["IsIdled"].ToString());
                // yukardakileri direkt constructor içinde de yazabilirsin. Classta parametrelerle tanımlamıştık, yapmicam şimdi :D

                SogutmacanListesi.Add(sogutmacani);
            }
            KaideListesi = new List <Kaide>();
            foreach (DataRow dr in DTkaide.Rows)
            {
                Kaide kaide = new Kaide();
                kaide.AtmosphereType = dr["AtmosphereType"].ToString();
                kaide.No             = Convert.ToInt32(dr["No"].ToString());
                kaide.StatusText     = dr["StatusText"].ToString();
                kaide.IsIdled        = Convert.ToInt32(dr["IsIdled"].ToString());
                KaideListesi.Add(kaide);
            }
            GomlekListesi = new List <Gomlek>();
            foreach (DataRow dr in DTgomlek.Rows)
            {
                Gomlek gomlek = new Gomlek();
                gomlek.AtmosphereType = dr["AtmosphereType"].ToString();
                gomlek.BaseNumber     = Convert.ToInt32(dr["BaseNumber"].ToString());
                gomlek.StatusText     = dr["StatusText"].ToString();
                gomlek.IsIdled        = Convert.ToInt32(dr["IsIdled"].ToString());
                GomlekListesi.Add(gomlek);
            }
            FirinListesi = new List <Firin>();
            foreach (DataRow dr in DTfirin.Rows)
            {
                Firin firinl = new Firin();
                firinl.AtmosphereType = dr["AtmosphereType"].ToString();
                firinl.BaseNumber     = Convert.ToInt32(dr["BaseNumber"].ToString());
                firinl.StatusText     = dr["StatusText"].ToString();
                firinl.IsIdled        = Convert.ToInt32(dr["IsIdled"].ToString());
                FirinListesi.Add(firinl);
            }
            //	OOtahmini_proses_bitim.DefaultView.RowFilter = "ProcessEnd = '1.01.1900 00:00:00'";
            //	OOtahmini_proses_bitim = OOtahmini_proses_bitim.DefaultView.ToTable();
            //	OOtahmini_proses_bitim.DefaultView.RowFilter = "State = '102'";
            //	OOtahmini_proses_bitim = OOtahmini_proses_bitim.DefaultView.ToTable();
            DateTime TimeNow   = DateTime.Now;
            DateTime UpTimeNow = TimeNow.AddMinutes(720);
            //Console.WriteLine(TimeNow);
            string TimeNowS = TimeNow.ToString();

            //TimeNow.ToString("MM.dd.yyyy HH:mm:ss");
            //	DTtahmini_proses_bitim.DefaultView.RowFilter = "ProcessEnd > #1.01.1900 00:00:00#";
            //	DTtahmini_proses_bitim = DTtahmini_proses_bitim.DefaultView.ToTable();
            DTtahmini_proses_bitim.DefaultView.RowFilter = "ProcessEnd <#" + UpTimeNow.ToString("MM.dd.yyyy HH:mm:ss") + "#";
            DTtahmini_proses_bitim = DTtahmini_proses_bitim.DefaultView.ToTable();
            DTtahmini_proses_bitim.DefaultView.Sort = "ProcessEnd";
            DTtahmini_proses_bitim = DTtahmini_proses_bitim.DefaultView.ToTable();
            ProsesbitimListesi     = new List <Prosesbitim>();
            foreach (DataRow dr in DTtahmini_proses_bitim.Rows)
            {
                Prosesbitim ProcessBitimL = new Prosesbitim();
                ProcessBitimL.BaseNumber    = Convert.ToInt32(dr["BaseNumber"].ToString());
                ProcessBitimL.PlugNumber    = Convert.ToInt32(dr["PlugNumber"].ToString());
                ProcessBitimL.ProgramNumber = Convert.ToInt32(dr["ProgramNumber"].ToString());
                ProcessBitimL.State         = Convert.ToInt32(dr["State"].ToString());
                ProcessBitimL.ProcessEnd    = dr["ProcessEnd"].ToString();
                ProsesbitimListesi.Add(ProcessBitimL);
                //	}
            }
            KaideBobinListesi = new List <Kaidebobin>();
            foreach (DataRow dr in DTkaidebobin.Rows)
            {
                Kaidebobin kaideBobin = new Kaidebobin();
                kaideBobin.BatchNumber   = dr["BatchNumber"].ToString();
                kaideBobin.BatchOrder    = Convert.ToInt32(dr["BatchOrder"].ToString());
                kaideBobin.ProgramNumber = Convert.ToInt32(dr["ProgramNumber"].ToString());
                kaideBobin.Status        = dr["Status"].ToString();
                kaideBobin.A510_B        = dr["A510_B"].ToString();
                KaideBobinListesi.Add(kaideBobin);
            }

            //	ProsesbitimListesiO = new List<Prosesbitim>();
            //	foreach (DataRow drO in OOtahmini_proses_bitim.Rows)
            //	{
            //		Prosesbitim ProcessBitimO = new Prosesbitim();
            //		ProcessBitimO.BaseNumber = Convert.ToInt32(drO["BaseNumber"].ToString());
            //		ProcessBitimO.PlugNumber = Convert.ToInt32(drO["PlugNumber"].ToString());
            //		ProcessBitimO.State = Convert.ToInt32(drO["State"].ToString());
            //		ProcessBitimO.ProcessEnd = drO["ProcessEnd"].ToString();
            //		ProsesbitimListesiO.Add(ProcessBitimO);
            //
            //	}
            //Console.WriteLine(DTkaidebobin.DefaultView.Count);
            //Console.WriteLine(ProsesbitimListesiO.Count);
            list         = new List <IsemriL>();
            YukleListHNX = new List <IsemriL>();
            YukleListH2  = new List <IsemriL>();
            int IS_TAHMIN       = ProsesbitimListesi.Count;
            int islem_sirasiTAV = 1;
            int islem_sirasiBOS = 1;
            int islem_sirasiSOG = 1;

            for (int i = 0; i < IS_TAHMIN; i++)
            {
                IsemriL     isemri  = new IsemriL();
                Prosesbitim ProTurn = ProsesbitimListesi[i];

                int    emir_sirasiTAV = 1;
                int    emir_sirasiBOS = 1;
                int    emir_sirasiSOG = 1;
                string id_strBOS;
                double süretaşimaBOS;
                string id_strTAV;
                double süretaşimaFIR;
                double süretaşimaSOCA;
                string id_strSOG;
                double süretaşimaSOG;
                string id_strBOB;
                double süretaşimaBOB;



                DateTime IsBas = Convert.ToDateTime(ProTurn.ProcessEnd);
                if (ProTurn.State == 202 || ProTurn.State == 210 || ProTurn.State == 0)                 //
                {
                    if (ProTurn.PlugNumber != 0)
                    {
                        bobinsayisi = DTkaidebobin;
                        int BobinNO = Convert.ToInt32(ProTurn.BaseNumber.ToString());
                        bobinsayisi.DefaultView.RowFilter = String.Format("ProgramNumber  = '{0}'", BobinNO);
                        bobinsayisi.DefaultView.RowFilter = $"ProgramNumber  = '{BobinNO}'";
                        if (bobinsayisi.DefaultView.Count > 0)
                        {
                            IsemriL isemriSC = new IsemriL();
                            isemriSC.Konum1Kaide = ProTurn.BaseNumber.ToString();

                            TimeSpan ZamanFark = IsBas - DateTime.Now;
                            //yoksa bu şekilde zaman farkı falan hesaplayamazsın, ya da zaman<diğer zaman gibi if içine koyamazsın
                            //	int zamfark = Convert.ToInt32(ZamanFark.TotalMinutes);
                            if (IsBas.ToString() == "1.01.1900 00:00:00")
                            {
                                isemriSC.IntZaman = 0;
                            }
                            else
                            {
                                double zamfark = Convert.ToDouble(ZamanFark.TotalMinutes);
                                isemriSC.IntZaman = Math.Round(zamfark, 1);
                            }


                            isemriSC.Zaman = IsBas;

                            var koloneslesme = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == ProTurn.BaseNumber);

                            isemriSC.Konum1Kaide = ProTurn.BaseNumber.ToString();
                            isemriSC.Konum2Kaide = ProTurn.BaseNumber.ToString();
                            isemriSC.Konum1Kolon = koloneslesme.Kolonno + "";
                            isemriSC.Konum2Kolon = koloneslesme.Kolonno + "";

                            if (ProTurn.BaseNumber <= 34)
                            {
                                isemriSC.AtmosphereTuru = "HNX";
                                isemriSC.AtacmanTipi    = "Konvektor Tasima Aparatı";
                                isemriSC.Issuresi       = 2.5;
                                //süretaşimaBOS = Convert.ToDouble(SureTable.Rows[20]["Süre"]);
                            }
                            else
                            {
                                isemriSC.AtmosphereTuru = "H2";
                                isemriSC.AtacmanTipi    = "Yok";
                                isemriSC.Issuresi       = 2.5;
                                //süretaşimaBOS = Convert.ToDouble(SureTable.Rows[8]["Süre"]);
                            }
                            isemriSC.Yapilacakis     = ProTurn.PlugNumber + "no lu Sogutma Canını çıkart";
                            isemriSC.Yapilacakisturu = "Soğuma bitişi";
                            id_strSOG         = idStringHazirla(3, islem_sirasiSOG, 1, emir_sirasiSOG, isemriSC.Issuresi, isemriSC.AtmosphereTuru);
                            isemriSC.UniqueID = id_strSOG;
                            if (isemriSC.AtmosphereTuru == "H2")
                            {
                                isemriSC.skor = 3 * skorhesapla(isemriSC.UniqueID);
                            }
                            else
                            {
                                isemriSC.skor = 2 * skorhesapla(isemriSC.UniqueID);
                            }

                            list.Add(isemriSC);
                            emir_sirasiSOG = emir_sirasiSOG + 1;

                            IsemriL isemriGO = new IsemriL();
                            if (ProTurn.BaseNumber <= 34)
                            {
                                isemriGO.AtmosphereTuru = "HNX";
                                isemriGO.AtacmanTipi    = "Konvektor Tasima Aparatı";
                                isemriGO.Issuresi       = 2.5;
                                //süretaşimaSOG = Convert.ToDouble(SureTable.Rows[20]["Süre"]);
                            }
                            else
                            {
                                isemriGO.AtmosphereTuru = "H2";
                                isemriGO.AtacmanTipi    = "Yok";
                                isemriGO.Issuresi       = 2.5;
                                //süretaşimaSOG = Convert.ToDouble(SureTable.Rows[8]["Süre"]);
                            }
                            isemriGO.Konum1Kaide = ProTurn.BaseNumber.ToString();
                            TimeSpan ZamanFarkGO = IsBas - DateTime.Now;
                            if (IsBas.ToString() == "1.01.1900 00:00:00")
                            {
                                isemriGO.IntZaman = 0;
                            }
                            else
                            {
                                double zamfarkGO = Convert.ToDouble(ZamanFarkGO.TotalMinutes);
                                isemriGO.IntZaman = Math.Round((zamfarkGO + isemriGO.Issuresi), 1);
                            }

                            //int zamfarkGO = Convert.ToInt32(ZamanFarkGO.TotalMinutes);


                            isemriGO.Zaman       = IsBas;
                            isemriGO.Konum1Kaide = ProTurn.BaseNumber.ToString();
                            isemriGO.Konum2Kaide = ProTurn.BaseNumber.ToString();
                            isemriGO.Konum1Kolon = koloneslesme.Kolonno + "";
                            isemriGO.Konum2Kolon = koloneslesme.Kolonno + "";
                            //
                            //	if (ProTurn.BaseNumber <= 34)
                            //	{
                            //		isemriGO.AtmosphereTuru = "HNX";
                            //		isemriGO.AtacmanTipi = "Konvektor Tasima Aparatı";
                            //		isemriGO.Issuresi = "2.5";
                            //		//süretaşimaSOG = Convert.ToDouble(SureTable.Rows[20]["Süre"]);
                            //	}
                            //	else
                            //	{
                            //		isemriGO.AtmosphereTuru = "H2";
                            //		isemriGO.AtacmanTipi = "Yok";
                            //		isemriGO.Issuresi = "2.5";
                            //		//süretaşimaSOG = Convert.ToDouble(SureTable.Rows[8]["Süre"]);
                            //	}
                            isemriGO.Yapilacakis     = "Gömleği çıkart";
                            isemriGO.Yapilacakisturu = "Soğuma bitişi";
                            id_strSOG         = idStringHazirla(3, islem_sirasiSOG, 1, emir_sirasiSOG, isemriGO.Issuresi, isemriGO.AtmosphereTuru);
                            isemriGO.UniqueID = id_strSOG;
                            isemriGO.skor     = skorhesapla(isemriGO.UniqueID);
                            list.Add(isemriGO);
                            //islem_sirasiSOG = islem_sirasiSOG + 1;
                            emir_sirasiSOG = emir_sirasiSOG + 1;


                            //	bobinsayisi = DTkaidebobin;
                            //	int BobinNO = Convert.ToInt32(ProTurn.BaseNumber.ToString());
                            //	bobinsayisi.DefaultView.RowFilter = String.Format("ProgramNumber  = '{0}'", BobinNO);
                            //	bobinsayisi.DefaultView.RowFilter = $"ProgramNumber  = '{BobinNO}'";
                            //Console.WriteLine("bobin sayisısısıs" + bobinsayisi.DefaultView.Count);
                            TimeSpan ZamanFarkBOS = IsBas - DateTime.Now;
                            double   zamfarkBOS   = Convert.ToDouble(ZamanFarkBOS.TotalMinutes);
                            zamfarkBOS = Math.Round((isemriGO.IntZaman + isemriGO.Issuresi), 1);

                            for (int j = 0; j < bobinsayisi.DefaultView.Count; j++)
                            {
                                IsemriL isemriBOS = new IsemriL();


                                //tahmini_proses_bitim.Rows[i]["ProcessEnd"].ToString()


                                //	isemriBOS.Konum1Kolon = SonucArray[Convert.ToInt32(tahmini_proses_bitim.Rows[i]["BaseNumber"].ToString())];
                                isemriBOS.Konum1Kaide = ProTurn.BaseNumber.ToString();
                                isemriBOS.Konum1Kolon = koloneslesme.Kolonno + "";
                                isemriBOS.Zaman       = IsBas;
                                isemriBOS.Konum2Kolon = "22";
                                isemriBOS.Konum2Kaide = "C.S.";
                                //IsemriNewRowBEM["Konum2 -Kolon"] = "22 Cebir Soğutma";
                                //IsemriNewRowBEM["Konum2 -Kaide"] = "22 Cebir Soğutma";
                                if (IsBas.ToString() == "1.01.1900 00:00:00")
                                {
                                    isemriBOS.IntZaman = 0;
                                }
                                else
                                {
                                    isemriBOS.IntZaman = zamfarkBOS;
                                }
                                if (Convert.ToInt32(ProTurn.BaseNumber.ToString()) <= 34)
                                {
                                    isemriBOS.AtmosphereTuru = "HNX";
                                    isemriBOS.AtacmanTipi    = "Bobin Aparatı";
                                    isemriBOS.Issuresi       = 4.0;
                                    //isemriBOS.IntZaman = zamfarkBOS;
                                    zamfarkBOS = zamfarkBOS + 4;
                                }
                                else
                                {
                                    isemriBOS.AtmosphereTuru = "H2";
                                    isemriBOS.AtacmanTipi    = "Bobin Aparatı";
                                    isemriBOS.Issuresi       = 4.0;
                                    zamfarkBOS = zamfarkBOS + 4;
                                }


                                isemriBOS.Yapilacakis     = "Bobin taşı";                            // temp[0]["No"].ToString()  can numarasını yaz kaide numarasını yazdır
                                isemriBOS.Yapilacakisturu = "Kaide boşalt";
                                id_strBOB = idStringHazirla(4, islem_sirasiBOS, 1, emir_sirasiSOG, isemriBOS.Issuresi, isemriBOS.AtmosphereTuru);
                                //islem_sirasiBOS = islem_sirasiBOS + 1;
                                emir_sirasiSOG     = emir_sirasiSOG + 1;
                                isemriBOS.UniqueID = id_strBOB;
                                isemriBOS.skor     = skorhesapla(isemriBOS.UniqueID);
                                list.Add(isemriBOS);

                                emir_sirasiBOS = emir_sirasiBOS + 1;
                                //
                            }
                            islem_sirasiBOS = islem_sirasiBOS + 1;
                            islem_sirasiSOG = islem_sirasiSOG + 1;
                        }
                    }
                }
                else if (ProTurn.State == 1 || ProTurn.State == 2 || ProTurn.State == 3 || ProTurn.State == 4 || ProTurn.State == 5 || ProTurn.State == 6 || ProTurn.State == 7 || ProTurn.State == 8 || ProTurn.State == 9 || ProTurn.State == 10 || ProTurn.State == 190 || ProTurn.State == 200)
                {
                    DataTable UygunKaideATMHNX = UygunKaideHNX(DTkaide);
                    DataTable UygunKaideATMH2  = UygunKaideH2(DTkaide);



                    IsemriL isemriTAVBIT = new IsemriL();
                    isemriTAVBIT.Konum1Kaide = ProTurn.BaseNumber.ToString();

                    double   zamfark   = 0;
                    TimeSpan ZamanFark = IsBas - DateTime.Now;
                    zamfark = ZamanFark.TotalMinutes;
                    if (IsBas.ToString("dd.MM.yyy HH:mm:ss") == "01.01.1900 00:00:00")
                    {
                        isemriTAVBIT.IntZaman = 0;
                    }
                    else
                    {
                        isemriTAVBIT.IntZaman = Math.Round(zamfark);
                    }

                    //	Console.WriteLine(isemriTAVBIT.IntZaman);

                    isemriTAVBIT.Zaman = IsBas;
                    var koloneslesme = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == ProTurn.BaseNumber);

                    isemriTAVBIT.Konum1Kolon = koloneslesme.Kolonno + "";
                    isemriTAVBIT.Konum1Kaide = ProTurn.BaseNumber.ToString();
                    isemriTAVBIT.Konum2Kolon = koloneslesme.Kolonno + "";
                    isemriTAVBIT.Konum2Kaide = ProTurn.BaseNumber.ToString();
                    //	if (ProsesbitimListesiO.Count > 0)
                    //	{
                    //		Prosesbitim ProTurnO = ProsesbitimListesiO[0];
                    //		var koloneslesmeO = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == ProTurnO.BaseNumber);
                    //		isemriTAVBIT.Konum2Kolon = koloneslesmeO.Kolonno + "";
                    //		isemriTAVBIT.Konum2Kaide = ProTurnO.BaseNumber.ToString();
                    //	}
                    //	else
                    //	{
                    //		isemriTAVBIT.Konum2Kolon = koloneslesme.Kolonno + "";
                    //		isemriTAVBIT.Konum2Kaide = ProTurn.BaseNumber.ToString();
                    //
                    //	}

                    //  if(ProTurn.PlugNumber!= 0) {
                    if (Convert.ToInt32(ProTurn.BaseNumber.ToString()) <= 34)
                    {
                        isemriTAVBIT.AtmosphereTuru = "HNX";
                        isemriTAVBIT.AtacmanTipi    = "YOK";
                        isemriTAVBIT.Issuresi       = 2.0;
                        //süretaşimaFIR = Convert.ToDouble(SureTable.Rows[17]["Süre"]);
                        //isemriTAVBIT.IntZaman = zamfark + süretaşimaFIR;
                    }
                    else
                    {
                        isemriTAVBIT.AtmosphereTuru = "H2";
                        isemriTAVBIT.AtacmanTipi    = "YOK";
                        isemriTAVBIT.Issuresi       = 2.0;
                        //süretaşimaFIR = Convert.ToDouble(SureTable.Rows[5]["Süre"]);
                        //IsemriNewRowTAV["IntZaman"] = zamfark + süretaşimaFIR;
                    }

                    isemriTAVBIT.Yapilacakis     = ProTurn.PlugNumber + " Nolu Fırın çıkart";                // tempF[0]["No"].ToString() + temp[0]["No"].ToString()  can numarasını yaz kaide numarasını yazdır
                    isemriTAVBIT.Yapilacakisturu = "TAV bitişi";
                    id_strTAV             = idStringHazirla(2, islem_sirasiTAV, 1, emir_sirasiTAV, isemriTAVBIT.Issuresi, isemriTAVBIT.AtmosphereTuru);
                    isemriTAVBIT.UniqueID = id_strTAV;
                    if (isemriTAVBIT.AtmosphereTuru == "H2")
                    {
                        isemriTAVBIT.skor = 3 * skorhesapla(isemriTAVBIT.UniqueID);
                    }
                    else
                    {
                        isemriTAVBIT.skor = 2 * skorhesapla(isemriTAVBIT.UniqueID);
                    }

                    emir_sirasiTAV = emir_sirasiTAV + 1;
                    list.Add(isemriTAVBIT);
                    //	}
                    DataTable UygunSOCAH2  = UygunSoCaH2(DTsogutmacani);
                    DataTable UygunSOCAHNX = UygunSoCaHNX(DTsogutmacani);

                    int Finalfark = 100;
                    int MinRow    = 0;



                    if (Convert.ToInt32(ProTurn.BaseNumber.ToString()) <= 34)
                    {
                        //int Alternatif = 1;
                        //for (int k = 0; k < UygunSOCAHNX.DefaultView.Count; k++)
                        //{
                        if (UygunSOCAHNX.DefaultView.Count > 0)
                        {
                            IsemriL isemriSoCaHNX = new IsemriL();
                            for (int t = 0; t < UygunSOCAHNX.DefaultView.Count; t++)
                            {
                                var SSkoloneslesmeSOCA = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == Convert.ToInt32(UygunSOCAHNX.Rows[t]["BaseNumber"]));
                                int farkC = Math.Abs(koloneslesme.Kolonno - SSkoloneslesmeSOCA.Kolonno);
                                if (farkC < Finalfark)
                                {
                                    Finalfark = farkC;
                                    MinRow    = t;
                                }
                            }

                            //	TimeSpan ZamanFark = IsBas - DateTime.Now;
                            //	zamfark = Convert.ToInt32(ZamanFark.TotalMinutes);
                            if (IsBas.ToString() == "1.01.1900 00:00:00")
                            {
                                isemriSoCaHNX.IntZaman = 0;
                            }
                            else
                            {
                                isemriSoCaHNX.IntZaman = Math.Round((zamfark + isemriTAVBIT.Issuresi), 1);
                            };



                            isemriSoCaHNX.Zaman       = IsBas;
                            isemriSoCaHNX.Konum1Kaide = UygunSOCAHNX.Rows[MinRow]["BaseNumber"].ToString();
                            var koloneslesmeSOCA = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == Convert.ToInt32(UygunSOCAHNX.Rows[MinRow]["BaseNumber"]));
                            isemriSoCaHNX.Konum1Kolon    = koloneslesmeSOCA.Kolonno + "";
                            isemriSoCaHNX.Konum2Kaide    = ProTurn.BaseNumber.ToString();
                            isemriSoCaHNX.Konum2Kolon    = koloneslesme.Kolonno + "";
                            isemriSoCaHNX.AtmosphereTuru = "HNX";
                            isemriSoCaHNX.AtacmanTipi    = "Konvektor Tasima Aparatı";
                            isemriSoCaHNX.Issuresi       = 2.0;

                            isemriSoCaHNX.Yapilacakis     = UygunSOCAHNX.Rows[MinRow]["No"].ToString() + " Nolu Soğutma Çanı tak";                        // tempF[0]["No"].ToString() + temp[0]["No"].ToString()  can numarasını yaz kaide numarasını yazdır
                            isemriSoCaHNX.Yapilacakisturu = "TAV bitişi";
                            id_strTAV              = idStringHazirla(2, islem_sirasiTAV, 1, emir_sirasiTAV, isemriSoCaHNX.Issuresi, isemriSoCaHNX.AtmosphereTuru);
                            emir_sirasiTAV         = emir_sirasiTAV + 1;
                            islem_sirasiTAV        = islem_sirasiTAV + 1;
                            isemriSoCaHNX.UniqueID = id_strTAV;

                            isemriSoCaHNX.skor = 2 * skorhesapla(isemriSoCaHNX.UniqueID);
                            list.Add(isemriSoCaHNX);
                            //Alternatif = Alternatif + 1;
                        }
                        else
                        {
                            Console.WriteLine("Boş HNX soğutma çanı yok");
                        }

                        //}
                    }
                    else
                    {
                        if (UygunSOCAH2.DefaultView.Count > 0)
                        {
                            for (int t = 0; t < UygunSOCAH2.DefaultView.Count; t++)
                            {
                                var SSkoloneslesmeSOCA = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == Convert.ToInt32(UygunSOCAH2.Rows[t]["BaseNumber"]));
                                int farkC = Math.Abs(koloneslesme.Kolonno - SSkoloneslesmeSOCA.Kolonno);
                                if (farkC < Finalfark)
                                {
                                    Finalfark = farkC;
                                    MinRow    = t;
                                }
                            }
                            IsemriL isemriSoCaH2 = new IsemriL();

                            //TimeSpan ZamanFark = IsBas - DateTime.Now;
                            //zamfark = Convert.ToInt32(ZamanFark.TotalMinutes);
                            if (IsBas.ToString() == "1.01.1900 00:00:00")
                            {
                                isemriSoCaH2.IntZaman = 0;
                            }
                            else
                            {
                                isemriSoCaH2.IntZaman = Math.Round((zamfark + isemriTAVBIT.Issuresi), 1);
                            };
                            isemriSoCaH2.Zaman       = IsBas;
                            isemriSoCaH2.Konum1Kaide = UygunSOCAH2.Rows[MinRow]["BaseNumber"].ToString();
                            var koloneslesmeSOCAH2 = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == Convert.ToInt32(UygunSOCAH2.Rows[MinRow]["BaseNumber"]));
                            isemriSoCaH2.Konum1Kolon    = koloneslesmeSOCAH2.Kolonno + "";
                            isemriSoCaH2.Konum2Kaide    = ProTurn.BaseNumber.ToString();
                            isemriSoCaH2.Konum2Kolon    = koloneslesme.Kolonno + "";
                            isemriSoCaH2.AtmosphereTuru = "H2";
                            isemriSoCaH2.AtacmanTipi    = "Konvektor Tasima Aparatı";
                            isemriSoCaH2.Issuresi       = 2.0;

                            isemriSoCaH2.Yapilacakis     = UygunSOCAH2.Rows[MinRow]["No"].ToString() + "Nolu Soğutma Çanı tak";                        // tempF[0]["No"].ToString() + temp[0]["No"].ToString()  can numarasını yaz kaide numarasını yazdır
                            isemriSoCaH2.Yapilacakisturu = "TAV bitişi";
                            id_strTAV             = idStringHazirla(2, islem_sirasiTAV, 1, emir_sirasiTAV, isemriSoCaH2.Issuresi, isemriSoCaH2.AtmosphereTuru);
                            islem_sirasiTAV       = islem_sirasiTAV + 1;
                            emir_sirasiTAV        = emir_sirasiTAV + 1;
                            isemriSoCaH2.UniqueID = id_strTAV;
                            isemriSoCaH2.skor     = 3 * skorhesapla(isemriSoCaH2.UniqueID);
                            list.Add(isemriSoCaH2);
                        }
                        else
                        {
                            Console.WriteLine("Boş H2 soğutma çanı yok");
                        }
                    }
                }

                else if (ProTurn.State == 102 || ProTurn.State == 101)
                {
                    //Uygun fırını bul tak
                    DataTable UygunFurH2  = UygunFirinH2(DTfirin);
                    DataTable UygunFurHNX = UygunFirinHNX(DTfirin);
                    Console.WriteLine("H2 firin :" + UygunFurH2.DefaultView.Count + "HNX firin :" + UygunFurHNX.DefaultView.Count);
                    int zamfark = 0;
                    if (Convert.ToInt32(ProTurn.BaseNumber.ToString()) <= 34)
                    {
                        if (UygunFurHNX.Rows.Count != 0)
                        {
                            int     Finalfark      = 100;
                            int     MinRow         = 0;
                            IsemriL isemriFirinHNX = new IsemriL();
                            for (int t = 0; t < UygunFurHNX.DefaultView.Count; t++)
                            {
                                var koloneslesmeFur = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == Convert.ToInt32(UygunFurHNX.Rows[t]["BaseNumber"]));
                                int farkC           = Math.Abs(koloneslesmeFur.Kolonno - koloneslesmeFur.Kolonno);
                                if (farkC < Finalfark)
                                {
                                    Finalfark = farkC;
                                    MinRow    = t;
                                }
                            }
                            var koloneslesme = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == ProTurn.BaseNumber);
                            if (IsBas.ToString("dd.MM.yyyy HH:mm:ss") == "01.01.1900 00:00:00")
                            {
                                isemriFirinHNX.IntZaman = 0;
                            }
                            else
                            {
                                TimeSpan ZamanFark = IsBas - DateTime.Now;
                                zamfark = Convert.ToInt32(ZamanFark.TotalMinutes);
                                isemriFirinHNX.IntZaman = zamfark;
                            }


                            isemriFirinHNX.Zaman       = IsBas;
                            isemriFirinHNX.Konum1Kaide = UygunFurHNX.Rows[MinRow]["BaseNumber"].ToString();
                            var koloneslesmeFurHNX = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == Convert.ToInt32(UygunFurHNX.Rows[MinRow]["BaseNumber"]));
                            isemriFirinHNX.Konum1Kolon    = koloneslesmeFurHNX.Kolonno + "";
                            isemriFirinHNX.Konum2Kaide    = ProTurn.BaseNumber.ToString();
                            isemriFirinHNX.Konum2Kolon    = koloneslesme.Kolonno + "";
                            isemriFirinHNX.AtmosphereTuru = "HNX";
                            isemriFirinHNX.AtacmanTipi    = "YOK";
                            isemriFirinHNX.Issuresi       = 2.0;

                            isemriFirinHNX.Yapilacakis     = " Fırın tak";                        // tempF[0]["No"].ToString() + temp[0]["No"].ToString()  can numarasını yaz kaide numarasını yazdır
                            isemriFirinHNX.Yapilacakisturu = "Tav baslama";
                            id_strTAV = idStringHazirla(1, islem_sirasiTAV, 1, emir_sirasiTAV, isemriFirinHNX.Issuresi, isemriFirinHNX.AtmosphereTuru);
                            isemriFirinHNX.UniqueID = id_strTAV;
                            if (isemriFirinHNX.AtmosphereTuru == "H2")
                            {
                                isemriFirinHNX.skor = 3 * skorhesapla(isemriFirinHNX.UniqueID);
                            }
                            else
                            {
                                isemriFirinHNX.skor = 2 * skorhesapla(isemriFirinHNX.UniqueID);
                            }

                            list.Add(isemriFirinHNX);
                        }
                    }
                    else
                    {
                        if (UygunFurH2.Rows.Count != 0)
                        {
                            int     Finalfark     = 100;
                            int     MinRow        = 0;
                            IsemriL isemriFirinH2 = new IsemriL();
                            for (int t = 0; t < UygunFurH2.DefaultView.Count; t++)
                            {
                                var koloneslesmeFur = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == Convert.ToInt32(UygunFurH2.Rows[t]["BaseNumber"]));
                                int farkC           = Math.Abs(koloneslesmeFur.Kolonno - koloneslesmeFur.Kolonno);
                                if (farkC < Finalfark)
                                {
                                    Finalfark = farkC;
                                    MinRow    = t;
                                }
                            }
                            var koloneslesme = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == ProTurn.BaseNumber);
                            if (IsBas.ToString("dd.MM.yyyy HH:mm:ss") == "01.01.1900 00:00:00")
                            {
                                isemriFirinH2.IntZaman = 0;
                            }
                            else
                            {
                                TimeSpan ZamanFark = IsBas - DateTime.Now;
                                zamfark = Convert.ToInt32(ZamanFark.TotalMinutes);
                                isemriFirinH2.IntZaman = zamfark;
                            }


                            isemriFirinH2.Zaman       = IsBas;
                            isemriFirinH2.Konum1Kaide = UygunFurH2.Rows[MinRow]["BaseNumber"].ToString();
                            var koloneslesmeFurH2 = JSONdosyalar.KaideKolonEslesmesi.Find(e => e.BaseNumber == Convert.ToInt32(UygunFurH2.Rows[MinRow]["BaseNumber"]));
                            isemriFirinH2.Konum1Kolon    = koloneslesmeFurH2.Kolonno + "";
                            isemriFirinH2.Konum2Kaide    = ProTurn.BaseNumber.ToString();
                            isemriFirinH2.Konum2Kolon    = koloneslesme.Kolonno + "";
                            isemriFirinH2.AtmosphereTuru = "H2";
                            isemriFirinH2.AtacmanTipi    = "YOK";
                            isemriFirinH2.Issuresi       = 2.0;

                            isemriFirinH2.Yapilacakis     = " Fırın tak";                        // tempF[0]["No"].ToString() + temp[0]["No"].ToString()  can numarasını yaz kaide numarasını yazdır
                            isemriFirinH2.Yapilacakisturu = "Tav baslama";
                            id_strTAV = idStringHazirla(1, islem_sirasiTAV, 1, emir_sirasiTAV, isemriFirinH2.Issuresi, isemriFirinH2.AtmosphereTuru);
                            isemriFirinH2.UniqueID = id_strTAV;
                            if (isemriFirinH2.AtmosphereTuru == "H2")
                            {
                                isemriFirinH2.skor = 3 * skorhesapla(isemriFirinH2.UniqueID);
                            }
                            else
                            {
                                isemriFirinH2.skor = 2 * skorhesapla(isemriFirinH2.UniqueID);
                            }

                            list.Add(isemriFirinH2);
                        }
                    }
                }
            }
            //ProsesbitimListesi = list;

            //return list;
        }
Ejemplo n.º 7
0
        static void Main()
        {
            writeLog("Program Baþladý", "INF");
            DateTime       t             = DateTime.Now;
            bool           readDB        = true;
            String         fileaddress   = "Tavlama_2021_05_21-15-38-21IsEmr_Log.json";
            List <IsemriL> IsemriTableTZ = null;
            List <IsemriL> IsemriTableTN = null;
            List <IsemriL> WorkList      = new List <IsemriL>();
            ProblemVerisi  problem       = null;

            if (readDB)
            {
                problem = new ProblemVerisi(false);
                writeLog("Problem verisi alýndý (Geçen Süre: " + DateTime.Now.Subtract(t).TotalSeconds + " sn)", "INF");

                Console.WriteLine(DateTime.Now.Subtract(t).TotalSeconds);
                t = DateTime.Now;
                ProblemVerisi problemFULL = new ProblemVerisi(true);
                writeLog("ProblemFULL verisi alýndý (Geçen Süre: " + DateTime.Now.Subtract(t).TotalSeconds + " sn)", "INF");
                Console.WriteLine(DateTime.Now.Subtract(t).TotalSeconds);


                List <IsemriL> isemrilistesi = problem.IsEmriYarat();               //"CGL3", 4
                //	LoadingEmir YüklemeProb = new LoadingEmir();
                //double islemZamaniMS = DateTime.Now.Subtract(t).TotalMilliseconds;
                //LoadingEmir YuklemeIsEmri = LoadingEmir(kaide, firin, gomlek, 82, "RCM", 4, 1, 26, SonucArray, SureTable);
                IsEmriObj  Isjr   = new IsEmriObj();
                Kolon      Koll   = new Kolon();
                SSure      Surr   = new SSure();
                SStatus    Status = new SStatus();
                KaideKolon KaKol  = new KaideKolon();
                AtacKanca  ataka  = new AtacKanca();

                // IsemriTable olus (
                List <IsemriL> IsemriTable = new List <IsemriL>();
                IsemriTableTZ = new List <IsemriL>();
                IsemriTableTN = new List <IsemriL>();
                //	List<IsemriL> IsemriTableTN = new List<IsemriL>();
                IsemriTable = problem.list;
                //   IsemriTable.AddRange(isemrilistesi);
                if (isemrilistesi.Count > 0)
                {
                    Solution recursionLOAD = new Solution(isemrilistesi, 1, 26);
                    recursionLOAD.Solve(out WorkList);
                }

                //	IsemriTableTZ = IsemriTable.OrderByDescending(o => o.Zaman).ThenByDescending(x => x.skor).ToList();

                //	IsemriTableTZ = IsemriTable.Where(o => o.Zaman.Year == 1900).ToList();


                IsemriTableTZ = IsemriTable.Where(o => o.Zaman.Year < 2000).ToList();
                IsemriTableTZ = IsemriTableTZ.OrderByDescending(o => o.skor).ToList();
                IsemriTableTN = IsemriTable.Where(o => o.Zaman.Year >= 2000).ToList();
                IsemriTableTN = IsemriTableTN.OrderByDescending(o => o.skor).ToList();
                IsemriTableTZ.AddRange(IsemriTableTN);
                //	IsemriTableTZ = IsemriTable.Where(o => o.Zaman.ToString("dd.MM.yyyy HH:mm:ss") == "01.01.1900 00:00:00").ToList();
                // ses deneme bir ki
                //	isemrilistesi.AddRange(IsemriTableTZ);
                //	IsemriTableTZ = isemrilistesi;
                for (int i = 0; i < problem.ProcessBitimNumber; i++)
                {
                    IsemriL IsemriO = new IsemriL();
                    IsemriO.konumlar(problem.ProsesbitimListesi[i].BaseNumber.ToString(), problem.ProsesbitimListesi[i].BaseNumber.ToString());
                    IsemriTable.Add(IsemriO);
                }
                Console.WriteLine("1 : UniqueID\t 2 :Zaman \t 3 : IntZaman \t 4 : AtmosphereTürü \t 5 : Konum1-Kolon\t 6 : Konum1 -Kaide \t 7 : Konum2 -Kolon \t 8 : Konum2 -Kaide \t  9 : Yapilacakis\t 10 : Skor");
                foreach (IsemriL dr in IsemriTableTZ)
                {
                    Console.WriteLine("1 : {0}\t 2 : {1} \t 3 : {2} \t 4 : {3}\t 5 : {4}\t 6 : {5}\t 7 : {6}\t 8 : {7}\t 9 : {8}\t 10 : {9} ", dr.UniqueID, dr.Zaman, dr.IntZaman, dr.AtmosphereTuru, dr.Konum1Kolon, dr.Konum1Kaide, dr.Konum2Kolon, dr.Konum2Kaide, dr.Yapilacakis, dr.skor);
                }
                var json = JsonConvert.SerializeObject(IsemriTableTZ);
                writeJson(json, "IsEmr");
            }
            else
            {
                JsonRead jr = new JsonRead();
                IsemriTableTZ = jr.LoadJsonIsEmr(fileaddress);
                ProblemVerisi p = new ProblemVerisi();

                foreach (var ie in IsemriTableTZ)
                {
                    ie.skor = p.skorhesapla(ie.UniqueID);
                }
            }

            if (IsemriTableTZ.Count > 0)
            {
                Solution recursion = new Solution(IsemriTableTZ, 1, 26);
                recursion.Solve(out WorkList);
            }
            Console.ReadLine();
        }