Пример #1
0
        /// <summary>
        /// Método que define a função objetivo da operação
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void funcaoObjetivoButton_Click(object sender, EventArgs e)
        {
            try
            {
                funObj = new FuncaoObjetivo()
                {
                    NomeVarX       = nomeXTextBox.Text.Trim(),
                    NomeVarY       = nomeYTextBox.Text.Trim(),
                    ValidaOperacao = maximizacaoRadioButton.Checked ? "Maximização" : "Minimização"
                };

                if (valorXTextBox.Text.Equals(""))
                {
                    throw new InvalidOperationException("Variável X não possui valor para calcular.");
                }
                funObj.ValorX = double.Parse(valorXTextBox.Text.Trim());
                if (valorYTextBox.Text.Equals(""))
                {
                    throw new InvalidOperationException("Variável Y não possui valor para calcular.");
                }
                funObj.ValorY = double.Parse(valorYTextBox.Text.Trim());

                MessageBox.Show("Função Objetivo definida com sucesso!", "Sucesso");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Пример #2
0
 /// <summary>
 /// Método para resetar tudo
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void resetOperaçãoButton_Click(object sender, EventArgs e)
 {
     try
     {
         funObj = new FuncaoObjetivo();
         restricoes.Clear();
         nomeXTextBox.Text = nomeYTextBox.Text = valorXTextBox.Text = valorYTextBox.Text = restricaoXTextBox.Text = restricaoYTextBox.Text = limiteRestricaoTextBox.Text = resultadoTextBox.Text = "";
         restricaoInequaComboBox.SelectedIndex = -1;
         restricoesListBox.Items.Clear();
         maximizacaoRadioButton.Checked = true;
         MessageBox.Show("Funções resetadas com sucesso!");
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Пример #3
0
        /// <summary>
        /// Método para resolução do problema previamente digitado
        /// </summary>
        /// <param name="f"></param>
        /// <param name="restr"></param>
        /// <returns></returns>
        public string SolucaoOtima(FuncaoObjetivo f, List <Restricoes> restr)
        {
            if (funObj == null)
            {
                throw new InvalidOperationException("Não há função objetivo definida");
            }
            double x, y, z, a;

            switch (restricoesListBox.Items.Count)
            {
            case 2:
                a   = Matriz.MatrizDeterminanteA2x2(Matriz.DefinirMatriz(restr));
                x   = Matriz.MatrizDeterminanteX2x2(Matriz.DefinirMatriz(restr)) / a;
                y   = Matriz.MatrizDeterminanteY2x2(Matriz.DefinirMatriz(restr)) / a;
                f.X = x < 0 ? x * -1 : x;
                f.Y = y < 0 ? y * -1 : y;
                break;

            case 3:
                a   = Matriz.MatrizDeterminanteA3x3(Matriz.DefinirMatriz(restr));
                x   = Matriz.MatrizDeterminanteX3x3(Matriz.DefinirMatriz(restr)) / a;
                y   = Matriz.MatrizDeterminanteY3x3(Matriz.DefinirMatriz(restr)) / a;
                f.X = x < 0 ? x * -1 : x;
                f.Y = y < 0 ? y * -1 : y;
                break;

            //case 4:
            //    a = Matriz.MatrizDeterminanteA4x4(Matriz.DefinirMatriz(restr));
            //    x = Matriz.MatrizDeterminanteX4x4(Matriz.DefinirMatriz(restr)) / a;
            //    y = Matriz.MatrizDeterminanteY4x4(Matriz.DefinirMatriz(restr)) / a;
            //    f.X = x < 0 ? x * -1 : x;
            //    f.Y = y < 0 ? y * -1 : y;
            //    break;
            //case 5:
            //    a = Matriz.MatrizDeterminanteA5x5(Matriz.DefinirMatriz(restr));
            //    x = Matriz.MatrizDeterminanteX5x5(Matriz.DefinirMatriz(restr)) / a;
            //    y = Matriz.MatrizDeterminanteY5x5(Matriz.DefinirMatriz(restr)) / a;
            //    f.X = x < 0 ? x * -1 : x;
            //    f.Y = y < 0 ? y * -1 : y;
            //    break;
            default:
                a   = Matriz.MatrizDeterminanteA3x3(Matriz.DefinirMatriz(restr));
                x   = Matriz.MatrizDeterminanteX3x3(Matriz.DefinirMatriz(restr)) / a;
                y   = Matriz.MatrizDeterminanteY3x3(Matriz.DefinirMatriz(restr)) / a;
                f.X = x < 0 ? x * -1 : x;
                f.Y = y < 0 ? y * -1 : y;
                break;
            }
            if (maximizacaoRadioButton.Checked)
            {
                f.ValidaOperacao = "maximização";
            }
            else if (minimizacaoRadioButton.Checked)
            {
                f.ValidaOperacao = "minimização";
            }
            else
            {
                throw new InvalidOperationException("Não há operação de otimização selecionada");
            }
            f.ValorOtimo = f.ValorX * f.X + f.ValorY * f.Y;
            return(string.Format("A Solução ótima desta operação será:{6}{0:n2} {1}{6}{2:n2} {3} para {4} esta operação.{6}Total:{5:n2}", f.X, f.NomeVarX, f.Y, f.NomeVarY, f.ValidaOperacao, f.ValorOtimo, Environment.NewLine));
        }
Пример #4
0
 public int CompareTo(Individuo individuo) => FuncaoObjetivo.CompareTo(individuo.FuncaoObjetivo);