іям
//(один краще за одними критеріями, інший по іншим).
if (flags. get (i - 1)!=flags. get (i)) {
return null ;
}
}
//Якщо попередній цикл виконався до кінця, значить,
//один з об'єктів виявився краще іншого.
//Перевіряємо значення результуючого прапора
//і повертаємо домінуючий об'єкт.
if (resultFlag) {
return i1;
} else {
return i2;
}
}
}
}
private List lt; Double gt; weights;
public Boss () {= new ArrayList lt; Double gt; ();
{. add (0.45) ;. add (0.45) ;. add (0.04) ;. add (0.04) ;. add (0.02);
}
}
/**
* Отримати корисність об'єкта.
* @ 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;
}
private double getCriterialUtility (Item i) {
return i. rate1 * weights. get (0) +. rate2 * weights. get (1) +. rate3 * weights. get (2) +. rate4 * weights. get (3) +. rate5 * weights. get (4);
}
/**
* Показати пару об'єктів в один об'єкт.
* @ 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 ();
}
public double getPackUtility (Map lt; Container, List lt; Item gt ; gt; map) {
double utility=0;
for (Container c: map. keySet ()) {
for (Item i: map. get (c)) {+=getCriterialUtility (i);
}
}
return utility;
}
}. java
package core;
/**
* Контейнер.
* @ author AtemB
*
*/
public class Container {
/** ID. */
private int id;
/** Обсяг. */
private int volume;
/** Вантажопідйомність. */
private int cargo;
public Container ( int id, int volume, int cargo) {