using System.Collections.Generic;
List<Bin> bins = new List<Bin>(1);
List<float> assets = new List<float>(1);
List<float> arr = new List<float>{1f, 3f, 4f, 5f, 2f};
public static void Main()
Program instance_obj = new Program();
instance_obj.GenarateRandomAssets(instance_obj.assets, instance_obj.r, 1000);
instance_obj.BinPack3(instance_obj.assets);
public void BinPack(List<float> assets)
for (var i = 0; i < assets.Count; i++)
if (assets[i] < (bins[0].GetCapacity() - bins[0].GetCurrentCap()))
bins[0].AddElement(assets[i]);
public void BinPack2(List<float> assets)
for (var i = 0; i < assets.Count; i++)
if (assets[i] < (bins[0].GetCapacity() - bins[0].GetCurrentCap()))
bins[0].AddElement(assets[i]);
Console.WriteLine("We are here");
Console.WriteLine("The Number of Bins is " + bins.Count);
for (var k = 0; k < bins.Count; k++)
if (bins[k].GetElementsLength() != 0)
Console.WriteLine("Length of bin: " + k + " is " + bins[k].GetElementsLength());
totMem += bins[k].GetMem();
Console.WriteLine("The denominator N is " + N);
Console.WriteLine("Average memory per bin is " + avgBinMem);
public void BinPack3(List<float> assets)
for (var i = 0; i < assets.Count; i++)
if (assets[i] < (bins[0].GetCapacity() - bins[0].GetCurrentCap()))
bins[0].AddElement(assets[i]);
float overflow = bins[0].GetCurrentCap() - bins[0].GetCapacity();
float closest = 10000000;
for (var k = 0; k < assets.Count; k++)
if (overflow - assets[k] < closest)
bins[0].AddElement(closest);
Console.WriteLine("We are here");
Console.WriteLine("The Number of Bins is " + bins.Count);
for (var k = 0; k < bins.Count; k++)
if (bins[k].GetElementsLength() != 0)
Console.WriteLine("Length of bin: " + k + " is " + bins[k].GetElementsLength());
totMem += bins[k].GetMem();
Console.WriteLine("The denominator N is " + N);
Console.WriteLine("Average memory per bin is " + avgBinMem);
public void CycleElements2(List<float> ls)
for (var i = index; i > 0; i--)
Console.WriteLine("AAA");
public void CycleElements3(List<Bin> ls)
for (var i = index; i > 0; i--)
public void CycleElements(List<Bin> ls)
for (var i = index; i > 0; i--)
ls[index] = ls[index + 1];
public void GenarateRandomAssets(List<float> assets, Random r, int size)
for (var k = 0; k < size; k++)
assets.Add(RandomRangeFloat(10, r));
public float RandomRangeFloat(int range, Random r)
return ((float)(r.NextDouble() * range));
public int RandomRangeInt(int range, Random r)
return ((int)(r.NextDouble() * range));
private float currentCap = 0;
private List<float> elements = new List<float>(1);
private float score = 0f;
public Bin(int size, float cap)
this.elements = new List<float>(size);
this.elements = elements;
public void AddElement(float element)
public void SetScore(float sc)
public float GetCapacity()
public float GetCurrentCap()
public void PrintElements()
for (var i = 0; i < elements.Count; i++)
Console.WriteLine(elements[i]);
public int GetElementsLength()
for (var i = 0; i < elements.Count; i++)