Реферат: Ия, в котором искомые переменные имели бы целочисленные значения, а иногда и значения из какого-либо дискретного множества, множества не обязательно целых чисел
МЕТОД БАЛАНСА
Камышников Владимир Андреевич
Томский государственный архитектурно-строительный университет,
Актуальность и постановка задачи
Некоторые практические задачи оптимизации требуют получения оптимального решения, в котором искомые переменные имели бы целочисленные значения, а иногда и значения из какого-либо дискретного множества, множества не обязательно целых чисел. Такие задачи называют задачами целочисленного или дискретного программирования.
Если переменные принимают только два значения: 0 и 1, как это следует в задаче о ранце, то такие задачи относят к задачам булевого программирования.
Среди методов решения подобной задачи нередко называют метод ветвей и границ и алгоритмы отсечений Гомори. Эти методы достаточно хорошо и широко описаны и часто дают решения некоторых задач. Счетность множества решений задач дискретного программирования всегда давало соблазн их простого перебора. К сожалению, полный перебор мог быть осуществлен лишь для задач малой размерности, но эта лежащая на поверхности идея способствовала появлению методов неявного перебора, в которых активно используется информация о решаемой задаче.
В настоящее время считается работоспособным алгоритм, если трудоемкость решения задач с его помощью растет полиномиально с ростом размера входных данных – переменных и ограничений. К сожалению, задачи линейного программирования, в т.ч. и дискретные задачи линейного программирования относятся к NP-полным задачам, которые нельзя решить никаким полиномиальным алгоритмом.
Поэтому конструирование точного метода для решения таких задач, особенно большой размерности до сих пор сталкивается с непреодолимым препятствием – длительностью решения, и до сих пор оценка эффективности для таких задач в руках вычислительной практики.
Все это свидетельствует об актуальности работ по созданию эффективных методов решения задач линейного целочисленного, в т. ч. булевого программирования.
Основные результаты и научная новизна
Метод баланса осуществляет неявный перебор решений задачи и напоминает в чем-то известный аддитивный алгоритм Балаша. Как показал массовый вычислительный эксперимент он, этот метод практически всегда дает решение, а часто и условно точное (оптимальное) решение задачи линейного целочисленного программирования с булевыми переменными за приемлемое время. Размерность, решаемой задачи определяется только емкостью жесткого диска, Удалось решать задачи (Fortran-программа) на компьютере с емкостью жесткого диска 6 GB до размерности 10000 переменных за время измеряемое минутами. И это не предел.
Надо заметить, что оптимальная точка неизвестна, поэтому для оценки точности решения использовалась точка, наилучшая для генерируемой модели. Генератор задач вначале процесса выбирает случайным образом точку, которая будет допустимой, а м. б. и оптимальной для будущей модели. В качестве цифровых значений коэффициентов целевой функции и ограничений генератор выбирает также случайные числа. Затем производится расчет правых частей ограничений. Такой порядок формирования математической модели задачи при поиске максимума целевой функции обеспечивал то, что значение целевой функции в выбранной случайно допустимой точке могло служить нижней оценкой максимального значения целевой функции задачи на области определения.
Экспериментальная проверка алгоритма позволила получить приближенную оценку числа итераций – чаще всего число итераций не превышало 10n, где n – число переменных задачи, и зависимость числа итераций от числа переменных близка к линейной.
Подсчет арифметических и логических операций, которые необходимо выполнить при реализации одной итерации алгоритма показал, что ее трудоемкость примерно равна трудоемкости одной итерации симплекс-метода при решении такой же по размеру задачи линейного программирования.
Приведенные здесь результаты решения тестовых задач, доказывают неприхотливость алгоритма, его всеядность, независимость от вида ограничений и значений коэффициентов.
Ниже даются таблицы результатов вычислительных экспериментов над более чем 8000 задач с булевыми переменными. Не нашлось решение 1507 задач, что составило 18,83% от общего числа решаемых задач. Среднее отклонение от предполагаемого максимума целевой функции в решенных задачах составило 1,79 единиц.
Решение находилось всегда, если коэффициенты модели были положительны или нуль, а не нашлось решение только для некоторых задач, в математической модели которых встречались отрицательные коэффициенты.
Несомненно, это свидетельствует о научной новизне полученных результатов.
Сокращенная таблица результатов решения задач линейного программирования с булевыми переменными методом баланса
Число
переменных
Число
ограничений
Число решаемых задач:
Отклонение от контрольного значения
Среднее время
решения задачи, мин.
Решалось
Не
Решено
В %
10
100
19
0
0,00
2,58
1,71
10
1000
2
0
0,00
1,00
1,82
50
5
144
2
1,39
0,69
13,20
50
10
87
0
0,00
2,11
3,19
50
50
5
0
0,00
1,80
12,52
100
5
20
0
0,00
1,95
10,37
100
10
30
0
0,00
2,83
22,30
500
10
1
0
0,00
3,00
9,97
1000
10
1
0
0,00
3,00
5,13
В следующей таблице приведены результаты решения задач линейного программирования с булевыми переменными (2412 задач).
^ Затратные характеристики алгоритма баланса при решении задач линейного программирования с булевыми переменными
N
M
L
T
Iter
t
2N
%
10NM
5
100
21
0,16
11
0,86
32
34,38
5000
7
2000
1
1,29
23
3,36
128
17,97
140000
10
100
19
1,71
42
2,45
1024
4,10
10000
10
1000
2
1,82
40
2,73
1024
3,91
100000
100
5
20
10,37
237
2,63
>>1016
0,00
5000
100
10
30
22,30
233
5,74
>>1016
0,00
10000
500
10
1
9,97
202
2,96
>>1016
0,00
50000
1000
10
11
5,13
59
5,22
>>1016
0,00
100000
10000
5
10
22,1
411
17,3
>>1016
0,00
500000
Обозначения, использованные в таблице: Iter, T – среднее число итераций и среднее время (мин.), потребовавшихся алгоритму баланса для решения L задач размерностью NM; t – среднее время выполнения одной итерации (сек.); 2N – число возможных решений (число полного перебора решений); % – значение Iter в процентах к 2N; 10NM – оценка числа итераций для симплекс метода при решении задачи линейного программирования.
еще рефераты
Еще работы по разное
Реферат по разное
2. Линейное программирование (ЛП)
17 Сентября 2013
Реферат по разное
Кафедра «Прикладная математика» Экономические приложения линейного программирования
17 Сентября 2013
Реферат по разное
Изменение №1
17 Сентября 2013
Реферат по разное
О проведении открытого аукциона в электронной форме
17 Сентября 2013