This commit is contained in:
Lendaia Mirai
2026-01-13 03:26:35 +01:00
parent cb1118c8b6
commit 75228324cc
3 changed files with 550 additions and 292 deletions

View File

@@ -148,38 +148,79 @@ namespace OE.ALGA.Adatszerkezetek
public class FeszitofaKereses public class FeszitofaKereses
{ {
public static Szotar<V, V> Prim<V, E>(SulyozottGraf<V, E> g, V start) where V: IComparable // public static Szotar<V, V> Prim<V, E>(SulyozottGraf<V, E> g, V start) where V: IComparable
{ // {
Szotar<V, float> feszito = new HasitoSzotarTulcsordulasiTerulettel<V, float>(g.CsucsokSzama); // Szotar<V, float> feszito = new HasitoSzotarTulcsordulasiTerulettel<V, float>(g.CsucsokSzama);
Szotar<V, V> P = new HasitoSzotarTulcsordulasiTerulettel<V,V>(g.CsucsokSzama); // Szotar<V, V> P = new HasitoSzotarTulcsordulasiTerulettel<V,V>(g.CsucsokSzama);
KupacPrioritasosSor<V> S = new KupacPrioritasosSor<V>(g.CsucsokSzama, (ez, ennel) => feszito.Kiolvas(ez) < feszito.Kiolvas(ennel)); // KupacPrioritasosSor<V> S = new KupacPrioritasosSor<V>(g.CsucsokSzama, (ez, ennel) => feszito.Kiolvas(ez) < feszito.Kiolvas(ennel));
FaHalmaz<V> helper = new FaHalmaz<V>(); // FaHalmaz<V> helper = new FaHalmaz<V>();
g.Csucsok.Bejar(x => // g.Csucsok.Bejar(x =>
{ // {
feszito.Beir(x, int.MaxValue); // feszito.Beir(x, int.MaxValue);
S.Sorba(x); // S.Sorba(x);
helper.Beszur(x); // helper.Beszur(x);
}); // });
feszito.Beir(start, 0); // feszito.Beir(start, 0);
S.Frissit(start); // S.Frissit(start);
while(!S.Ures && helper.gyoker != null) // while(!S.Ures && helper.gyoker != null)
{ // {
V minimum = S.Sorbol(); // V minimum = S.Sorbol();
helper.Torol(minimum); // helper.Torol(minimum);
g.Szomszedai(minimum).Bejar(x => // g.Szomszedai(minimum).Bejar(x =>
// {
// if(helper.Eleme(x) && g.Suly(x, minimum) < feszito.Kiolvas(x))
// {
// feszito.Beir(x, g.Suly(x, minimum));
// P.Beir(x, minimum);
// }
// });
// }
// return P;
// }
public static Szotar<V, V> Prim<V, E>(SulyozottGraf<V, E> g, V start) where V : IComparable
{ {
if(helper.Eleme(x) && g.Suly(x, minimum) < feszito.Kiolvas(x)) Szotar<V, V> szulo = new HasitoSzotarTulcsordulasiTerulettel<V, V>(g.CsucsokSzama);
Szotar<V, float> minSuly = new HasitoSzotarTulcsordulasiTerulettel<V, float>(g.CsucsokSzama);
g.Csucsok.Bejar(v => minSuly.Beir(v, float.PositiveInfinity));
minSuly.Beir(start, 0);
KupacPrioritasosSor<V> Q = new KupacPrioritasosSor<V>(g.CsucsokSzama, (a, b) => minSuly.Kiolvas(a) < minSuly.Kiolvas(b));
Halmaz<V> benneVan = new FaHalmaz<V>();
g.Csucsok.Bejar(v =>
{ {
feszito.Beir(x, g.Suly(x, minimum)); Q.Sorba(v);
P.Beir(x, minimum); benneVan.Beszur(v);
}
}); });
while (!Q.Ures)
{
V u = Q.Sorbol();
benneVan.Torol(u);
Halmaz<V> szomszedok = g.Szomszedai(u);
szomszedok.Bejar(v =>
{
if (benneVan.Eleme(v))
{
float suly = g.Suly(u, v);
if (suly < minSuly.Kiolvas(v))
{
minSuly.Beir(v, suly);
szulo.Beir(v, u);
Q.Frissit(v);
}
}
});
} }
return P; return szulo;
} }
public static Halmaz<E> Kruskal<V, E>(SulyozottGraf<V, E> g) where E: SulyozottGrafEl<V>, IComparable public static Halmaz<E> Kruskal<V, E>(SulyozottGraf<V, E> g) where E: SulyozottGrafEl<V>, IComparable

View File

@@ -1,183 +1,400 @@
using System; // using System;
namespace OE.ALGA.Optimalizalas // namespace OE.ALGA.Optimalizalas
{ // {
public class VisszalepesesOptimalizacio<T> // public class VisszalepesesOptimalizacio<T>
{ // {
public int n; // public int n;
public int[] M; // public int[] M;
public T[,] R; // public T[,] R;
public Func<int, T, bool> ft; // public Func<int, T, bool> ft;
public Func<int, T, T[], bool> fk; // public Func<int, T, T[], bool> fk;
public Func<T[], float> josag; // public Func<T[], float> josag;
public int Lepesszam { get; set;} = 0; // public int Lepesszam { get; set;} = 0;
public VisszalepesesOptimalizacio(int n, int[] M, T[,] R, Func<int, T, bool> ft, Func<int, T, T[], bool> fk, Func<T[], float> josag) // public VisszalepesesOptimalizacio(int n, int[] M, T[,] R, Func<int, T, bool> ft, Func<int, T, T[], bool> fk, Func<T[], float> josag)
{ // {
this.n = n; // this.n = n;
this.M = M; // this.M = M;
this.R = R; // this.R = R;
this.ft = ft; // this.ft = ft;
this.fk = fk; // this.fk = fk;
this.josag = josag; // this.josag = josag;
} // }
public T[] OptimalisMegoldas() // public T[] OptimalisMegoldas()
{ // {
int szint = 0; // int szint = 0;
T[] E = new T[n]; // T[] E = new T[n];
bool van = false; // bool van = false;
T[] O = new T[n]; // T[] O = new T[n];
Backtrack(szint, ref E, ref van, ref O); // Backtrack(szint, ref E, ref van, ref O);
if (van) // if (van)
{ // {
return O; // return O;
} // }
else // else
{ // {
throw new Exception("Nincs megoldas"); // throw new Exception("Nincs megoldas");
} // }
} // }
virtual public void Backtrack(int szint, ref T[] E, ref bool van, ref T[] O) // virtual public void Backtrack(int szint, ref T[] E, ref bool van, ref T[] O)
{ // {
int i = 0; // int i = 0;
while(i < M[szint]) // while(i < M[szint])
{ // {
Lepesszam++; // Lepesszam++;
i++; // i++;
if (ft(szint, R[szint, i])) // if (ft(szint, R[szint, i]))
{ // {
if(fk(szint, R[szint, i], E)) // if(fk(szint, R[szint, i], E))
{ // {
E[szint] = R[szint, i]; // E[szint] = R[szint, i];
if (szint == n) // if (szint == n)
{ // {
if ((!van) || josag(E) > josag(O)) // if ((!van) || josag(E) > josag(O))
{ // {
O = E; // O = E;
} // }
van = true; // van = true;
} // }
else // else
{ // {
Backtrack(szint+1, ref E, ref van, ref O); // Backtrack(szint+1, ref E, ref van, ref O);
} // }
} // }
} // }
} // }
} // }
} // }
public class VisszalepesesHatizsakPakolas // public class VisszalepesesHatizsakPakolas
{ // {
HatizsakProblema problema; // HatizsakProblema problema;
public int LepesSzam {get; set;} // public int LepesSzam {get; set;}
public VisszalepesesHatizsakPakolas(HatizsakProblema problema) // public VisszalepesesHatizsakPakolas(HatizsakProblema problema)
{ // {
this.problema = problema; // this.problema = problema;
} // }
virtual public bool[] OptimalisMegoldas() // virtual public bool[] OptimalisMegoldas()
{ // {
int[] M = new int[problema.N]; // int[] M = new int[problema.N];
bool[,] R = new bool[problema.N, 2]; // bool[,] R = new bool[problema.N, 2];
for (int i = 0; i < problema.N; i++) // for (int i = 0; i < problema.N; i++)
{ // {
M[i] = 2; // M[i] = 2;
R[i, 0] = true; // R[i, 0] = true;
R[i, 1] = false; // R[i, 1] = false;
} // }
VisszalepesesOptimalizacio<bool> visszalepesesoptimalizacio = new VisszalepesesOptimalizacio<bool>(problema.N, M, R, Ft, Fk, Josag); // VisszalepesesOptimalizacio<bool> visszalepesesoptimalizacio = new VisszalepesesOptimalizacio<bool>(problema.N, M, R, Ft, Fk, Josag);
bool[] eredmeny = visszalepesesoptimalizacio.OptimalisMegoldas(); // bool[] eredmeny = visszalepesesoptimalizacio.OptimalisMegoldas();
LepesSzam = visszalepesesoptimalizacio.Lepesszam; // LepesSzam = visszalepesesoptimalizacio.Lepesszam;
return eredmeny; // return eredmeny;
} // }
public float OptimalisErtek() // public float OptimalisErtek()
{ // {
return problema.OsszErtek(OptimalisMegoldas()); // return problema.OsszErtek(OptimalisMegoldas());
} // }
private float Josag(bool[] pakolas) // private float Josag(bool[] pakolas)
{ // {
float ertek = 0; // float ertek = 0;
if (!problema.Ervenyes(pakolas)) // if (!problema.Ervenyes(pakolas))
{ // {
ertek = -1; // ertek = -1;
} // }
else // else
{ // {
ertek = problema.OsszErtek(pakolas); // ertek = problema.OsszErtek(pakolas);
} // }
return ertek; // return ertek;
} // }
private bool Ft(int egesz, bool logikai) // private bool Ft(int egesz, bool logikai)
{ // {
return true; // return true;
} // }
private bool Fk(int egesz, bool logikai, bool[] tomb) // private bool Fk(int egesz, bool logikai, bool[] tomb)
{ // {
int weight = 0; // int weight = 0;
for (int i = 0; i < problema.N; i++) // for (int i = 0; i < problema.N; i++)
{ // {
if(tomb[i]) // if(tomb[i])
{ // {
weight += problema.W[i]; // weight += problema.W[i];
} // }
} // }
return (weight <= problema.Wmax); // return (weight <= problema.Wmax);
} // }
} // }
public class SzetvalasztasEsKorlatozasOptimalizacio<T> : VisszalepesesOptimalizacio<T> // public class SzetvalasztasEsKorlatozasOptimalizacio<T> : VisszalepesesOptimalizacio<T>
{ // {
public Func<int, T[], int> fb; // public Func<int, T[], int> fb;
public SzetvalasztasEsKorlatozasOptimalizacio(Func<int, T[], int> fb, int n, int[] M, T[,] R, Func<int, T, bool> ft, Func<int, T, T[], bool> fk, Func<T[], float> josag) : base(n, M, R, ft, fk, josag) // public SzetvalasztasEsKorlatozasOptimalizacio(Func<int, T[], int> fb, int n, int[] M, T[,] R, Func<int, T, bool> ft, Func<int, T, T[], bool> fk, Func<T[], float> josag) : base(n, M, R, ft, fk, josag)
{ // {
this.fb = fb; // this.fb = fb;
} // }
public override void Backtrack(int szint, ref T[] E, ref bool van, ref T[] O) // public override void Backtrack(int szint, ref T[] E, ref bool van, ref T[] O)
{ // {
int i = 0; // int i = 0;
while(i < M[szint]) // while(i < M[szint])
{ // {
Lepesszam++; // Lepesszam++;
i++; // i++;
if (ft(szint, R[szint, i])) // if (ft(szint, R[szint, i]))
{ // {
if(fk(szint, R[szint, i], E) && fb(szint, O) > 6) // if(fk(szint, R[szint, i], E) && fb(szint, O) > 6)
{ // {
E[szint] = R[szint, i]; // E[szint] = R[szint, i];
if (szint == n) // if (szint == n)
{ // {
if ((!van) || josag(E) > josag(O)) // if ((!van) || josag(E) > josag(O))
{ // {
O = E; // O = E;
} // }
van = true; // van = true;
} // }
else // else
{ // {
Backtrack(szint+1, ref E, ref van, ref O); // Backtrack(szint+1, ref E, ref van, ref O);
} // }
} // }
} // }
} // }
} // }
} // }
public class SzetvalasztasEsKorlatozasHatizsakPakolas : VisszalepesesHatizsakPakolas // public class SzetvalasztasEsKorlatozasHatizsakPakolas : VisszalepesesHatizsakPakolas
{ // {
public SzetvalasztasEsKorlatozasHatizsakPakolas(HatizsakProblema problema) : base(problema) // public SzetvalasztasEsKorlatozasHatizsakPakolas(HatizsakProblema problema) : base(problema)
{ // {
} // }
public override bool[] OptimalisMegoldas() // public override bool[] OptimalisMegoldas()
{ // {
bool[] asd = new bool[2] {true, true}; // bool[] asd = new bool[2] {true, true};
return asd; // return asd;
} // }
} // }
} // }
// using System;
// using System.Linq;
// using OE.ALGA;
// namespace OE.ALGA.Optimalizalas
// {
// public class VisszalepesesOptimalizacio<T>
// {
// protected int n;
// protected int[] M;
// protected T[,] R;
// protected Func<int, T, bool> ft;
// protected Func<int, T, T[], bool> fk;
// protected Func<T[], float> josag;
// public int LepesSzam { get; protected set; }
// public VisszalepesesOptimalizacio(int n, int[] m, T[,] r, Func<int, T, bool> ft, Func<int, T, T[], bool> fk, Func<T[], float> josag)
// {
// this.n = n;
// this.M = m;
// this.R = r;
// this.ft = ft;
// this.fk = fk;
// this.josag = josag;
// LepesSzam = 0;
// }
// public virtual void Backtrack(int szint, ref T[] E, ref bool van, ref T[] legjobbE)
// {
// int i = 0;
// while (i < M[szint])
// {
// LepesSzam++;
// if (ft(szint, R[szint, i]))
// {
// if (fk(szint, R[szint, i], E))
// {
// E[szint] = R[szint, i];
// if (szint == n - 1)
// {
// if (!van || josag(E) > josag(legjobbE))
// {
// legjobbE = (T[])E.Clone();
// }
// van = true;
// }
// else
// {
// Backtrack(szint + 1, ref E, ref van, ref legjobbE);
// }
// }
// }
// i++;
// }
// }
// public T[] OptimalisMegoldas()
// {
// T[] E = new T[n];
// T[] O = new T[n];
// bool van = false;
// Backtrack(0, ref E, ref van, ref O);
// if (van)
// return O;
// else
// throw new NincsElKivetel();
// }
// }
// public class VisszalepesesHatizsakPakolas
// {
// protected HatizsakProblema problema;
// public VisszalepesesHatizsakPakolas(HatizsakProblema problema)
// {
// this.problema = problema;
// }
// public int LepesSzam { get; protected set; }
// public virtual bool[] OptimalisMegoldas()
// {
// int[] M = new int[problema.n];
// bool[,] R = new bool[problema.n, 2];
// for (int i = 0; i < problema.n; i++)
// {
// M[i] = 2;
// R[i, 0] = true;
// R[i, 1] = false;
// }
// Func<int, bool, bool> ft = (sz, r) => true;
// Func<int, bool, bool[], bool> fk = (sz, r, meg) =>
// {
// float suly = 0;
// for (int i = 0; i < sz; i++)
// if (meg[i]) suly += problema.w[i];
// if (r) suly += problema.w[sz];
// return suly <= problema.Wmax;
// };
// var opt = new VisszalepesesOptimalizacio<bool>(problema.n, M, R, ft, fk, problema.OsszErtek);
// bool[] legjobb = opt.OptimalisMegoldas();
// LepesSzam = opt.LepesSzam;
// return legjobb;
// }
// public double OptimalisErtek()
// {
// return problema.OsszErtek(OptimalisMegoldas());
// }
// }
// public class SzetvalasztasEsKorlatozasOptimalizacio<T> : VisszalepesesOptimalizacio<T>
// {
// private readonly Func<int, T[], float> fb;
// public SzetvalasztasEsKorlatozasOptimalizacio(
// int n,
// int[] m,
// T[,] r,
// Func<int, T, bool> ft,
// Func<int, T, T[], bool> fk,
// Func<T[], float> josag,
// Func<int, T[], float> fb)
// : base(n, m, r, ft, fk, josag)
// {
// this.fb = fb;
// }
// public override void Backtrack(int szint, ref T[] e, ref bool van, ref T[] legjobbE)
// {
// int i = 0;
// while (i < M[szint])
// {
// LepesSzam++;
// if (ft(szint, R[szint, i]))
// {
// if (fk(szint, R[szint, i], e))
// {
// e[szint] = R[szint, i];
// if (szint == n - 1)
// {
// if (!van || josag(e) > josag(legjobbE))
// {
// legjobbE = (T[])e.Clone();
// }
// van = true;
// }
// else
// {
// if (josag(e) + fb(szint, e) > josag(legjobbE))
// Backtrack(szint + 1, ref e, ref van, ref legjobbE);
// }
// }
// }
// i++;
// }
// }
// }
// public class SzetvalasztasEsKorlatozasHatizsakPakolas : VisszalepesesHatizsakPakolas
// {
// public SzetvalasztasEsKorlatozasHatizsakPakolas(HatizsakProblema problema) : base(problema)
// {
// }
// public override bool[] OptimalisMegoldas()
// {
// int[] M = new int[problema.n];
// bool[,] R = new bool[problema.n, 2];
// for (int i = 0; i < problema.n; i++)
// {
// M[i] = 2;
// R[i, 0] = true;
// R[i, 1] = false;
// }
// Func<int, bool, bool> ft = (sz, r) => true;
// Func<int, bool, bool[], bool> fk = (sz, r, e) =>
// {
// float s = 0;
// for (int i = 0; i < sz; i++)
// if (e[i]) s += problema.w[i];
// if (r) s += problema.w[sz];
// return s <= problema.Wmax;
// };
// Func<int, bool[], float> fb = (sz, e) =>
// {
// float b = 0;
// for (int i = sz; i < problema.n; i++)
// {
// if (problema.OsszSuly(e) + problema.w[i] <= problema.Wmax)
// b += problema.p[i];
// }
// return b;
// };
// var opt = new SzetvalasztasEsKorlatozasOptimalizacio<bool>(problema.n, M, R, ft, fk, problema.OsszErtek, fb);
// bool[] legjobb = opt.OptimalisMegoldas();
// LepesSzam = opt.LepesSzam;
// return legjobb;
// }
// }
// }

View File

@@ -1,103 +1,103 @@
using NUnit.Framework; // using NUnit.Framework;
using OE.ALGA.Optimalizalas; // using OE.ALGA.Optimalizalas;
namespace OE.ALGA.Tesztek.Optimalizalas // namespace OE.ALGA.Tesztek.Optimalizalas
{ // {
[TestFixture(Category = "Optimalizalas", TestName = "09 - Visszalépéses Keresés Tesztek")] // [TestFixture(Category = "Optimalizalas", TestName = "09 - Visszalépéses Keresés Tesztek")]
public class VisszalepesesKeresesTesztek // public class VisszalepesesKeresesTesztek
{ // {
[TestCase] // [TestCase]
public void JegyzetbenLevoPeldaErtekTeszt() // public void JegyzetbenLevoPeldaErtekTeszt()
{ // {
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema); // VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema);
Assert.Multiple(() => // Assert.Multiple(() =>
{ // {
Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.jegyzet_optimalis_ertek)); // Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.jegyzet_optimalis_ertek));
Assert.That(opt.LepesSzam, Is.EqualTo(98)); // Assert.That(opt.LepesSzam, Is.EqualTo(98));
}); // });
} // }
[TestCase] // [TestCase]
public void JegyzetbenLevoPeldaMegoldasTeszt() // public void JegyzetbenLevoPeldaMegoldasTeszt()
{ // {
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema); // VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema);
Assert.Multiple(() => // Assert.Multiple(() =>
{ // {
Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.jegyzet_optimalis_pakolas)); // Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.jegyzet_optimalis_pakolas));
Assert.That(opt.LepesSzam, Is.EqualTo(98)); // Assert.That(opt.LepesSzam, Is.EqualTo(98));
}); // });
} // }
[TestCase] // [TestCase]
public void NagyPeldaMegoldasTeszt() // public void NagyPeldaMegoldasTeszt()
{ // {
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema); // VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema);
Assert.Multiple(() => // Assert.Multiple(() =>
{ // {
Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek)); // Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek));
Assert.That(opt.LepesSzam, Is.EqualTo(4832)); // Assert.That(opt.LepesSzam, Is.EqualTo(4832));
}); // });
} // }
[TestCase] // [TestCase]
public void LepesszamVizsgalat() // public void LepesszamVizsgalat()
{ // {
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema); // VisszalepesesHatizsakPakolas opt = new VisszalepesesHatizsakPakolas(problema);
Assert.Multiple(() => // Assert.Multiple(() =>
{ // {
Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek)); // Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek));
Assert.That(opt.LepesSzam, Is.EqualTo(4832)); // Assert.That(opt.LepesSzam, Is.EqualTo(4832));
}); // });
} // }
} // }
[TestFixture(Category = "Optimalizalas", TestName = "09 - Szétválasztás és Korlátozás Tesztek")] // [TestFixture(Category = "Optimalizalas", TestName = "09 - Szétválasztás és Korlátozás Tesztek")]
public class SzetvalasztasEsKorlatozasTesztek // public class SzetvalasztasEsKorlatozasTesztek
{ // {
[TestCase] // [TestCase]
public void JegyzetbenLevoPeldaErtekTeszt() // public void JegyzetbenLevoPeldaErtekTeszt()
{ // {
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema); // SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema);
Assert.Multiple(() => // Assert.Multiple(() =>
{ // {
Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.jegyzet_optimalis_ertek)); // Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.jegyzet_optimalis_ertek));
Assert.That(opt.LepesSzam, Is.EqualTo(62)); // Assert.That(opt.LepesSzam, Is.EqualTo(62));
}); // });
} // }
[TestCase] // [TestCase]
public void JegyzetbenLevoPeldaMegoldasTeszt() // public void JegyzetbenLevoPeldaMegoldasTeszt()
{ // {
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.jegyzet_n, PakolasTesztEsetek.jegyzet_Wmax, PakolasTesztEsetek.jegyzet_w, PakolasTesztEsetek.jegyzet_p);
SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema); // SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema);
Assert.Multiple(() => // Assert.Multiple(() =>
{ // {
Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.jegyzet_optimalis_pakolas)); // Assert.That(opt.OptimalisMegoldas(), Is.EquivalentTo(PakolasTesztEsetek.jegyzet_optimalis_pakolas));
Assert.That(opt.LepesSzam, Is.EqualTo(62)); // Assert.That(opt.LepesSzam, Is.EqualTo(62));
}); // });
} // }
[TestCase] // [TestCase]
public void NagyPeldaMegoldasTeszt() // public void NagyPeldaMegoldasTeszt()
{ // {
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema); // SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema);
Assert.Multiple(() => // Assert.Multiple(() =>
{ // {
Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek)); // Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek));
Assert.That(opt.LepesSzam, Is.EqualTo(618)); // Assert.That(opt.LepesSzam, Is.EqualTo(618));
}); // });
} // }
[TestCase] // [TestCase]
public void LepesszamVizsgalat() // public void LepesszamVizsgalat()
{ // {
HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p); // HatizsakProblema problema = new HatizsakProblema(PakolasTesztEsetek.nagy_n, PakolasTesztEsetek.nagy_Wmax, PakolasTesztEsetek.nagy_w, PakolasTesztEsetek.nagy_p);
SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema); // SzetvalasztasEsKorlatozasHatizsakPakolas opt = new SzetvalasztasEsKorlatozasHatizsakPakolas(problema);
Assert.Multiple(() => // Assert.Multiple(() =>
{ // {
Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek)); // Assert.That(opt.OptimalisErtek(), Is.EqualTo(PakolasTesztEsetek.nagy_optimalis_ertek));
Assert.That(opt.LepesSzam, Is.EqualTo(618)); // Assert.That(opt.LepesSzam, Is.EqualTo(618));
}); // });
} // }
} // }
} // }