mostmegisjoabilenytuzet

This commit is contained in:
Lendaia Mirai
2025-11-06 16:38:19 +01:00
parent 0484b1fd83
commit 986f22194b
2 changed files with 175 additions and 178 deletions

View File

@@ -10,8 +10,8 @@ namespace OE.ALGA.Optimalizalas
public int N { get; }
public int Wmax { get; }
public int[] W { get; }
public double[] P { get; }
public HatizsakProblema(int n, int wmax, int[] w, double[] p)
public float[] P { get; }
public HatizsakProblema(int n, int wmax, int[] w, float[] p)
{
N = n;
Wmax = wmax;
@@ -24,21 +24,18 @@ namespace OE.ALGA.Optimalizalas
public int OsszSuly(bool[] pakolas)
{
int osszsuly = 0;
if (pakolas.Length == N)
for (int i = 0; i < N; i++)
{
for (int i = 0; i < N; i++)
if (pakolas[i])
{
if (pakolas[i])
{
osszsuly += W[i];
}
osszsuly += W[i];
}
}
return osszsuly;
}
public double OsszErtek(bool[] pakolas)
public float OsszErtek(bool[] pakolas)
{
double osszertek = 0;
float osszertek = 0;
if (pakolas.Length == N)
{
for (int i = 0; i < N; i++)
@@ -60,13 +57,13 @@ namespace OE.ALGA.Optimalizalas
{
int m;
Func<int, T> generator;
Func<T, double> josag;
Func<T, float> josag;
int lepesszam;
public int LepesSzam
{
get { return lepesszam; }
}
public NyersEro(int m, Func<int, T> generator, Func<T, double> josag)
public NyersEro(int m, Func<int, T> generator, Func<T, float> josag)
{
this.m = m;
this.generator = generator;
@@ -75,10 +72,10 @@ namespace OE.ALGA.Optimalizalas
public T OptimalisMegoldas()
{
T legjobb = generator(0);
for (int i = 0; i < m; i++)
for (int i = 1; i < m; i++)
{
T tmp = generator(i);
if (josag(tmp) > josag(legjobb))
if (josag(tmp) >= josag(legjobb))
{
legjobb = tmp;
}
@@ -103,10 +100,10 @@ namespace OE.ALGA.Optimalizalas
{
int szam = i;
bool[] pakolas = new bool[problema.N];
for (int j = problema.N; j >= 0; j--)
for (int j = problema.N - 1; j >= 0; j--)
{
bool ertek = (szam % 2 != 0);
pakolas[i] = ertek;
pakolas[j] = ertek;
if (ertek && szam > 0)
{
szam--;
@@ -115,10 +112,10 @@ namespace OE.ALGA.Optimalizalas
}
return pakolas;
}
public double Josag(bool[] pakolas)
public float Josag(bool[] pakolas)
{
double ertek = 0;
if (problema.Ervenyes(pakolas))
float ertek = 0;
if (!problema.Ervenyes(pakolas))
{
ertek = -1;
}
@@ -135,7 +132,7 @@ namespace OE.ALGA.Optimalizalas
lepesszam = nyersero.LepesSzam;
return megoldas;
}
public double OptimalisErtek()
public float OptimalisErtek()
{
return problema.OsszErtek(OptimalisMegoldas());
}