public SimplexComplex(Simplex.Simplex simplex0) { Simplex0 = simplex0; Chain = new Dictionary <int, List <Simplex.Simplex> > { [Simplex0.Dim] = new List <Simplex.Simplex> { Simplex0 } }; SimplexPairs = new Dictionary <int, List <SimplexPair> >(); }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { // Устанавливаем для сокета локальную конечную точку IPHostEntry ipHost = Dns.GetHostEntry("localhost"); IPAddress ipAddr = ipHost.AddressList[0]; IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000); // Создаем сокет Tcp/Ip sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp); // Назначаем сокет локальной конечной точке и слушаем входящие сокеты try { sListener.Bind(ipEndPoint); sListener.Listen(10); // Начинаем слушать соединения while (true) { // Программа приостанавливается, ожидая входящее соединение Socket handler = sListener.Accept(); string data = null; // Мы дождались клиента, пытающегося с нами соединиться byte[] bytes = new byte[1024]; int bytesRec = handler.Receive(bytes); data += Encoding.UTF8.GetString(bytes, 0, bytesRec); server_logs.Invoke(new Action(() => server_logs.Text += ("Данные успешно получены!\n"))); data = Cryptography.HachCipler.DecryptText(data); int lvl = 0; String[] values = new String[40]; String str = ""; for (int i = 0; i < data.Length; i++) { if (!data[i].Equals('|')) { str += data[i]; } if (data[i].Equals('|')) { values[lvl] = str; lvl++; str = ""; } ; } lvl = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < 3; j++) { table[i, j] = Convert.ToDouble(values[lvl]); lvl++; server_logs.Invoke(new Action(() => server_logs.Text += table[i, j] + " ")); } server_logs.Invoke(new Action(() => server_logs.Text += "\n")); } server_logs.Invoke(new Action(() => server_logs.Text += "\n")); String reply = ""; double[] result = new double[2]; double[,] table_result; int genCount = Convert.ToInt32(values[16]); int childCount = Convert.ToInt32(values[17]); switch (values[15]) { case "СИМПЛЕКС": Simplex.Simplex S = new Simplex.Simplex(table); table_result = S.Calculate(result); server_logs.Invoke(new Action(() => server_logs.Text += "Решение \n" + S.str + ("X[1] = " + result[0] + "\n") + ("X[2] = " + result[1] + "\n") + ("Сумма = " + table_result[4, 0] + "\n"))); reply += ("Задача была решена Симплекс-Методом") + "\n"; reply += ("Для получения максимальной прибыли в размере ") + table_result[4, 0] + " долларов\n"; reply += ("Необходимо ежемесячно производить полок:\n"); reply += "Типа А в количестве " + result[0] + " штук\n"; reply += "Типа B в количестве " + result[1] + " штук\n"; break; case "БИОНИЧЕСКИЙ": Bionical temp = new Bionical(table, childCount, genCount); List <GenPoint> answer = new List <GenPoint>(); answer = temp.getX(); double[] ans = new double[3] { (double)answer.First().x1, (double)answer.First().x2, (double)answer.First().y }; server_logs.Invoke(new Action(() => server_logs.Text += "Решение \n" + ("X[1] = " + ans[0] + "\n") + ("X[2] = " + ans[1] + "\n") + ("Сумма = " + ans[2] + "\n"))); reply += ("Задача была решена Бионическим Алгоритмом") + "\n"; reply += ("Для получения максимальной прибыли в размере ") + ans[2] + " долларов\n"; reply += ("Необходимо ежемесячно производить полок:\n"); reply += "Типа А в количестве " + ans[0] + " штук\n"; reply += "Типа B в количестве " + ans[1] + " штук\n"; break; } // Отправляем ответ клиенту byte[] msg = Encoding.UTF8.GetBytes(reply); handler.Send(msg); if (data.IndexOf("<TheEnd>") > -1) { server_logs.Invoke(new Action(() => server_logs.Text += "Сервер завершил соединение с клиентом.")); break; } handler.Shutdown(SocketShutdown.Both); handler.Close(); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
public SimplexPair(Simplex.Simplex commonBase, Simplex.Simplex simplex1, Simplex.Simplex simplex2) { CommonBase = commonBase; Simplex1 = simplex1; Simplex2 = simplex2; }