ПРАКТИЧЕСКАЯ ЧАСТЬ
Max 60×1 + 60×2 + 40×3 + 10×4 + 20×5 + 10×6 +3x7
при ограничениях
3x1 + 5×2 + 4×3 + 1×4 + 4×5 + 3×6 + 1×7 10,
все xj = 0,1.
Следует обратить внимание на два основных различия между методом ветвей и границ и методом частичного перебора.
Во-первых, в аддитивном алгоритме требуется выполнение только операций сложения и вычитания. Выбор на шагах 1 и 4 может основываться на информации, полученной из оптимального решения задачи линейного программирования (3.1), (3.2) и ограничении 0 xj 1.
Во-вторых, каждое частичное решение удовлетворяет условиям целочисленности, но в отличие от метода, основанного на решении задач линейного программирования, может не удовлетворять линейным неравенствам (3.2). Применяя удачные правила выбора на шагах 1 и 4, с помощью аддитивного алгоритма можно найти допустимое по всем ограничениям и близкое к оптимальному решение на начальной итерации.
Для реализации вышеизложенных методов целочисленного булевого программирования на практике были написаны две программы на языке Turbo Pascal 7.0. Текст программы, реализующий алгоритм метода ветвей и границ, можно посмотреть в приложении А, а результаты решения задачи приведены в приложении Б. Текст программы, релизующий алгоритм частичного перебора находится в приложении В, а результаты решения задачи приведены в приложении Г.
Для удобства анализа полученных результатов при использовании алгоритма, основанного на методе ветвей и границ, ход итераций представим графически в виде дерева.