public enum ALGORYTHM {
/** У перший підходящий. */
FIRST ,
/** У перший підходящий з спадання. */
FIRST_DECREASE ,
/** У кращий з відповідних. */
BEST ,
/** У кращий з відповідних з спадання. */
BEST_DECREASE
}
/**
* Тип сортування.
* @ author AtemB
*
*/
public enum SORT_TYPE {
/** За вагою. */
WEIGHT ,
/** За обсягом. */
VOLUME ,
/** За корисності. */
UTILITY ,
/** За величиною. */
SIZE
}
private Store store;
private Boss boss;
public Packer (Store store, Boss boss) {
this . store=store;
this . boss=boss;
}
public void breakPair (Item i1, Item i2) {. setPair ( null ) ;. setPair ( null );
}
public void createPair (Item i1, Item i2) {. setPair (i2) ;. setPair (i1);
}
/**
* Обробити парні об'єкти.
* @ param items Початкове безліч об'єктів.
* @ return Результуюче безліч об'єктів.
*/
public List lt; Item gt; processPairs (List lt; Item gt; items) { lt; Item gt; listForRemove= new ArrayList lt; Item gt; ();
//Відображаємо всі пари в монолітні об'єкти.
for ( int i=0; i lt; items. size (); i ++) {current=items. get (i);
if (current. hasPair ()) {
//Розміщуємо парний поточним об'єкт в список на видалення,
//т.к. тепер його параметри будуть відображені в результуючому об'єкті .. add (current. getPair ()); resultItem=Boss. mapPair (current);
//заміщати вихідний об'єкт за поточним індексом результуючим .. set (i, resultItem) ;. getPair (). setPair ( null );
}
}
//Видаляємо парні об'єкти зі списку.
for (Item i: listForRemove) {. remove (i);
}
return items;
}
/**
* Створити шар Парето.
* @ param boss ЛПР.
* @ param items Початкове безліч.
* @ return Шар парето.
*/
public List lt; Item gt; extractParetoLayer (List lt; Item gt; items) { lt; Item gt; relation=boss. getBinaryRelation ();
if (items. isEmpty ()) {
return null ;
} else {
//Спочатку витягаємо перший-ліпший недомініруемих об'єкт на вихідному множині. lt; Item gt; bestItems= new ArrayList lt; Item gt; (); best=items. get (0);
for (Item i: items) {
//Порівнюємо поточний елемент з кожним з елементів послідовності.
//Якщо новий елемент краще поточного - ініціалізіруем їм посилання на кращий об'єкт.
if (relationpare (best, i) == i) {= i;
}
}
//Видаляємо недомініруемих об'єкт з вихідного безлічі .. remove (best);
//Додаємо його в шар Парето .. add (best);
//Тепер потрібно знайти вс...