gn="justify"> @ param i Об'єкт.
* @ return Оцінка об'єкта.
*/
public double getUtility (Item i) {
double ratesSum=i. rate1 * weights. get (0) +. rate2 * weights. get (1) +. rate3 * weights. get (2) +. rate4 * weights. get (3) +. rate5 * weights. get (4);
return ratesSum/i. weight/i. volume;// ((I. Weight + i. Volume)/2);
}
/**
* Показати пару об'єктів в один об'єкт.
* @ param i Будь-який об'єкт з пари.
* @ return Результуючий об'єкт.
*/
public static Item mapPair (Item i) {first= i; second=i. getPair (); resultItem= new Item (first. id + laquo ;: + second. id ,. volume + second. volume ,. weight + second. weight ,. rate1 + second. rate1, first. rate2 + second. rate2, first. rate3 + second. rate3, first. rate4 + second. rate4, first. rate5 + second. rate5);
return resultItem;
}
/**
* Отримати бінарне відношення, визначене ЛПР.
* @ return Бінарне відношення.
*/
public BinaryRelation lt; Item gt; getBinaryRelation () {
return new BossBinaryRelation ();
}
}
Клас Склад raquo ;. Його поля - список упаковуємо об'єктів, список контейнерів, сформовані шари Парето (при створенні об'єкта це поле дорівнює null), карта упакованих об'єктів і залишок, що вдає із себе список об'єктів. Також є поле типу java. math. Random, использующееся при ініціалізації упаковуємо об'єктів і контейнерів.
/**
* Склад.
* @ author AtemB
*
*/
public class Store {
class MapKeysComparator implements Comparator lt; Container gt; {
@ Override
public int compare (Container c1, Container c2) {
return c1. getId () - c2. getId ();
}
}
private List lt; Item gt; items;
private List lt; Container gt; containers;
private Random r= new Random ();
private List lt; List lt; Item gt; gt; paretoSet;
private SortedMap lt; Container, List lt; Item gt; gt; map;
private List lt; Item gt; rest;
public Store () {= new ArrayList lt; Container gt; ();= new ArrayList lt; Item gt; ();= new ArrayList lt; Item gt; ();= new TreeMap lt; Container, List lt; Item gt; gt; ( new MapKeysComparator ());
}
public void createContainers ( int containersNum, ContainerTemplate ct, int maxVolume, int maxCargo) {r= new Random ();
int volumeDiapasonLength=maxVolume - ct. getVolume (). getBegin ();
int cargoDiapasonLength=maxCargo - ct. getCargo (). getBegin ();
for ( int i=0; i lt; containersNum; i ++) {. add ( new Container (i ,. nextInt (volumeDiapasonLength + 1) + ct. getVolume (). getBegin () ,. nextInt (cargoDiapasonLength + 1) + ct. getCargo (). getBegin ()));
}
for (Container c: containers) {. put (c, new LinkedList lt; Item gt; ());
}
}
public void