Ф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++;
}
}
}
}
}
}