'язково знати, скільки елементів має бути в її складі. Тим більше що це і не завжди можливо.
До того ж, елементи деяких видів колекцій можуть індексуватися будь-яким об'єктом, тобто їх індекс, на відміну від індексу елемента масиву, може не бути цілим числом (карта - список пар ключ - значення raquo ;, де ключ - об'єкт). В інших випадках колекції дозволяють абстрагуватися від індексу взагалі (безліч, стек, чергу, кільцевий буфер, кільцевої зв'язний список).
У даній програмі визначені класи, які описують наступні сутності:
1. упаковують об'єкт. Цей клас містить параметри упаковуємо об'єктів - обсяг, вага і оцінки по корисності.
2. Контейнер. Описує одновимірний контейнер.
3. Пакувальник. Здійснює операції по створенню парних об'єктів, формуванню шарів Парето, упаковці об'єктів у контейнери.
4. ЛПР. Містить алгоритм обчислення цінності (функція цінності), вміє порівнювати об'єкти по корисності, відображати парні об'єкти в один об'єкт.
5. Склад. Те місце, звідки отримують об'єкти для упаковки і куди повертаються об'єкти, що не помістилися в контейнери.
6. Бінарне відношення (інтерфейс). Містить один метод - compare ( порівняти ). Реалізовано вкладеним класом в класі, що описує ЛПР.
Також є один клас, що містить метод main, в якому реалізована послідовність дій описуваних сутностей від моменту створення всіх об'єктів і до моменту упаковки об'єктів.
Приклад рішення задачі
Розглянемо наступну задачу:
Маємо 40 об'єктів. Об'єкти мають два фізичних параметра - вагу і об'єм, цінність об'єкта оцінюється за п'ятьма критеріями. Причому оцінки за двома критеріями (критерій 1 і 2) більш важливі, ніж оцінки за іншими критеріями. Обчислимо корисність кожного об'єкта. Скористаємося прямим методом оцінки багатовимірних альтернатив, тоді функція корисності кожного об'єкта буде мати наступний вигляд:
де wi - вага i-го критерію, який призначається ЛПР: - оцінка альтернативи за i - му крітерію.- кількість кімнат критеріїв.
Призначимо ваги критеріїв, відповідно до умовою нормування:
Так як критерій 1 і 2 мають велику важливість, то їм буде відповідати велику вагу.
Вага критеріїв наведено в таблиці 5.3.1.
Таблиця 5.3.1 Вагомості критеріїв
№ критерію Вага критерію, wi 10,4520,4530,0440,0450,02
На рис. 5.3.1 наведені характеристики об'єктів і контейнерів. На цьому етапі є можливість створювати і розбивати пари об'єктів, а також міняти їх характеристики і характеристики контейнерів.
Рис. 5.3.1 Об'єкти і контейнери.
На рис. 5.3.2 наведені сформовані шари Парето, виділені з вихідного безлічі на підставі переваг ОПР. Об'єкти всередині шарів відсортовані за корисності. Корисність об'єкта при упаковці прямо пропорційна значенням оцінок за критеріями і обернено пропорційна масі і обсягом.
Рис. 5.3.2 Шари Парето, відсортовані за корисності.
На рис. 5.3.3 показані шари Парето, відсортовані за обсягом і масі.
Рис. 5.3.3 Шари Парето, відсортовані за обсягом і масі.
Результати упаковки для сортування по корисності і за обсягом і масі показані на малюнках 5.3.4 і 5.3.5 відповідно.
Рис. 5.3.4 Результат упаковки при сортуванні по корисності.
Рис. 5.3.5 Результат упаковки при сортуванні за обсягом і вагою.
Висновок
У процесі роботи над дипломним проектом розроблена і написана програма, що реалізує процес упаковки предметів із заданими параметрами (маса і об'єм) по контейнерах в умовах недостатності контейнерів для упаковки всіх предметів. Після процесу упаковки можливий перегляд отриманих даних (результатів) у вигляді текстової інформації. У ході виконання роботи були описані методи оцінки багатовимірних альтернатив і один з методів вирішення багатокритеріальних задач.
Було розглянуто і вирішено два варіанти завдання про упаковку. У першому випадку отримана інформація дозволяє визначити порядок упаковки багатокритеріальних об'єктів, а в другому дозволяє визначити, яким чином можна упакувати п...