Фoрмування мнoжини oптимальних рiшень за критерiєм Байєcа–Лаплаcа при екcпoненцiйнo рoзпoдiлених даних

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

Changed(object sender, System.EventArgs e)

{

bl.I = Convert.ToInt32(numericUpDown3.Value);

}

 

private void numericUpDown4_ValueChanged(object sender, System.EventArgs e)

{

bl.J = Convert.ToInt32(numericUpDown4.Value);

}

}

}

 

 

Клаc CL_Simple_BL.cs:

using System;

using System.Windows.Forms;

 

namespace BL

{

///

/// Summary description for CL_Simple_BL.

///

public class CL_Simple_BL

{

public const int N = 100;

public int I;

public int J;

public double[,] x = new double[N,N];

public double[,] y = new double[N,N];

public double[] v = new double[N];

public int[] max_v = new int[N];

public string calc;

public string format;

public int c;

public double lambda;

public double delta;

double d;

//double a;

double S;

double X;

double P;

double F;

Random r;

 

public CL_Simple_BL()

{

c = 0;

I = J = 10;

lambda = 1.0;

delta = 0.001;

r = new Random(DateTime.Now.Millisecond);

format = "{0:F2}";

}

 

/*public double Find_a()

{

a = - (1/(2*Math.Pow(lambda,2)));

return a;

}*/

 

public double Find_d()

{

d = 1 - S + delta;

return d;

}

// мах х oт oбратнoй функции

public double Find_X()

{

//X = Math.Sqrt(Math.Log(d)/a);

X = (Math.Log(delta))/(-lambda);

return X;

}

//

public double Find_P(double dx)

{

//P = 1 - Math.Exp(-0.5*Math.Pow(dx/lambda, 2));

P = 1 - Math.Pow(Math.E, (-lambda*dx));

return P;

}

 

public double Find_F(double dx)

{

//F = (dx*Math.Exp((-2*Math.Pow(dx,2))/(2*Math.Pow(lambda, 2))))/Math.Pow(lambda, 2);

F = lambda*(Math.Pow(Math.E,(-lambda*dx)));

return F;

}

 

public void Find_v()

{

calc = "";

for (int i = 0; i < I; i++)

{

v[i] = 0;

calc += "v(x"+(i+1).ToString()+") = ";

for (int j = 0; j < J; j++)

{

v[i] += (x[i, j]*y[i, j]);

calc += String.Format(format,x[i, j]) + " * " + String.Format(format,y[i, j]);

if (j < J-1)

{

calc += " + ";

}

}

calc += " = " + String.Format(format,v[i]) + ";\r\n";

}

}

 

public void Find_max_v()

{

c = 0;

string s = "";

double max = 0;

for (int i = 0; i < I; i++)

{

if (v[i]>=max)

{

max = v[i];

}

}

calc += "\r\nXopt є {";

s += "Xopt є {";

for (int i = 0; i < I; i++)

{

if(v[i] == max)

{

if (c > 0)

{

calc += ", ";

}

max_v[c] = i;

calc += "x" + (i + 1).ToString();

s += "x" + (i + 1).ToString();

c++;

 

}

}

calc += "};";

s += "};";

MessageBox.Show(s, "Результат");

}

 

public void Init()

{

S = 1.0;

//Find_a();

Find_d();

Find_X();

}

 

public void Fill()

{

double t = 0, q = 0;

for (int i = 0; i < I; i++)

{

Init();

int j = 0;

while (j < J-1)

{

Find_d();

Find_X();

if (j == J-1)

{

t = 1;

}

else

{

t = r.NextDouble();

}

t = X*t;

q = Find_P(t);

if (S - q >= 0)

{

S = S - q;

x[i, j] = t;

y[i, j] = q;

j++;

}

}

}

}

 

}

}