add (item);
return true ;
}
}
for (Container container: containers) {
if (canPack (container, item, map)) {. get (container). add (item);
return true ;
}
}
return false ;
}
/**
* Отримати вільне місце в контейнерах.
* @ param map Карта, що містить інформацію про контейнерах і про упакованих об'єктах.
* @ return Вільне місце.
*/
private double getFreeSpace (SortedMap lt; Container, List lt; Item gt ; gt; map) {
double freeSpace=0.0;
for (Container c: map. keySet ()) {
double itemsVolume=0.0;
for (Item i: map. get (c)) {+=i. volume;
} +=(c. getVolume () - itemsVolume);
}
return freeSpace;
}
/**
* Отримати залишилася вантажопідйомність контейнерів.
* @ param map Карта, що містить інформацію про контейнерах і про упакованих об'єктах.
* @ return Залишилася вантажопідйомність контейнерів.
*/
private double getFreeCargo (SortedMap lt; Container, List lt; Item gt ; gt; map) {
double freeCargo=0.0;
for (Container c: map. keySet ()) {
double itemsWeight=0.0;
for (Item i: map. get (c)) {+=i. weight;
} +=(c. getCargo () - itemsWeight);
}
return freeCargo;
}
/**
* Перевірити можливість упаковки об'єкта в контейнер.
* @ param c Контейнер.
* @ param i Об'єкт.
* @ param map Карта, що містить інформацію про упакованих об'єктах.
* @ return Прапор перевірки.
*/
private boolean canPack (Container c, Item i, SortedMap lt ; Container, List lt; Item gt; gt; map) {
//Отримуємо список об'єктів, упакованих в цей контейнер. lt; Item gt; items=map. get (c);
int totalVolume=0;
double totalWeight=0.0;
//Отримуємо сумарна вага і обсяг об'єктів, упакованих в цей контейнер.
for (Item item: items) {+=item. volume; +=item. weight;
}
//Якщо маса або обсяг об'єкта, що перевіряється
//більше залишилася вантажопідйомності
//або вільного місця в контейнері,
//об'єкт в нього упакувати можна.
if (c. getVolume () - totalVolume lt; i. volume ||. getCargo () - totalWeight lt; i. weight) {
return false ;
}
return true ;
}
/**
* Створити парні об'єкти на вихідному множині.
* @ param pairsNum Необхідна кількість пар.
* @ param items Початкове безліч.
*/
public void createPairs ( int pairsNum, List lt; Item gt; items) {r= new Random ();
int pairCounter=0;
while (pairCounter lt; pairsNum) {(items. get (r. nextInt (items. size ())), items);=countPairs (items);
}
}