Перейти к основному содержимому

О2_Knapsack_МенеджерЭлементов.Добавить

Создаёт и регистрирует в модели новый элемент. Основной способ вызова — через менеджер элементов модели: Модель.Элементы().Добавить(Ценность, Веса, Имя).

Синтаксис

Модель.Элементы().Добавить(Ценность, Веса, Имя)

Параметры

  • ЦенностьЧисло — значимость элемента. Формирует целевую функцию модели — суммарная ценность отобранных элементов максимизируется.
  • ВесаМассив из Число, Число — веса элемента по каждому измерению модели. Для одномерной задачи можно передавать число напрямую; для многомерной — массив, размер которого равен Размерность, заданной в параметрах модели.
  • ИмяСтрока, Неопределено — уникальное имя элемента. Должно быть валидным идентификатором. Если не указано, присваивается автоматически по индексу элемента: _<Индекс> (нумерация с 0).

Возвращаемое значение

  • ФиксированнаяСтруктура — данные зарегистрированного элемента.

Пример

Одномерная задача:

Модель = О2.Модели().МодельЗадачиРюкзака().СоздатьМодель();
Модель.Ограничения().Установить(50); // макс. вес 50

Модель.Элементы().Добавить(60, 10, "a");
Модель.Элементы().Добавить(100, 20, "b");
Модель.Элементы().Добавить(120, 30, "c");

Двумерная задача (задаётся параметром Размерность = 2):

Параметры = О2.Модели().МодельЗадачиРюкзака().СоздатьПараметрыМодели();
Параметры.Размерность = 2;

Модель = О2.Модели().МодельЗадачиРюкзака().СоздатьМодель(Параметры);

// Ограничения: вес <= 50, объём <= 30
Модель.Ограничения().Установить(О2.Утилиты().Массив(50, 30));

Модель.Элементы().Добавить(60, О2.Утилиты().Массив(10, 5), "a");
Модель.Элементы().Добавить(100, О2.Утилиты().Массив(20, 8), "b");

См. также