Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
§ 11. Задачи целочисленного программирования. Понятие о нелинейном программированииНа практике часто встречаются задачи, совпадающие по постановке с задачами линейного программирования, но отличающиеся той особенностью, что искомые значения переменных непременно должны быть целыми. Такие задачи называются задачами целочисленного программирования; дополнительное условие целочисленности переменных существенно затрудняет их решение. Рассмотрим пример такой задачи. Пусть имеется ряд предметов (ценностей) Введем в рассмотрение переменные При заданных значениях
Теперь запишем общую стоимость предметов, которую мы хотим максимизировать:
Таким образом, задача на вид почти не отличается от обычной задачи линейного программирования: найти неотрицательные значения переменных
Ничуть не бывало! Найденное таким образом решение может оказаться не целым, а дробным, а значит неосуществимым (не можем же мы погрузить в машину треть рояля и половину шкафа!). Наша задача отличается от обычной задачи линейного программирования: она представляет собой задачу целочисленного программирования. Вторая мысль, которая приходит в голову: а нельзя ли решить обычную задачу линейного программирования и округлить полученные значения Надо заметить, что вообще задачи целочисленного программирования гораздо труднее, чем обычные задачи линейного программирования. На практике применяется ряд методов решения подобных задач; все они (при сколько-нибудь значительном числе переменных) очень сложны и трудоемки. Мы не будем пытаться излагать эти методы здесь, а отошлем интересующегося читателя к более подробным руководствам (например, [7, 81). В заключение скажем несколько слов о задачах нелинейного программирования. Общая постановка задачи нелинейного программирования следующая. Найти неотрицательные значения переменных
я обращающие в максимум произвольную нелинейную функцию этих переменных:
Общих способов решения задачи нелинейного программирования не существует; в каждой конкретной задаче способ выбирается в зависимости от вида функции W и накладываемых на элементы решения ограничений. Задачи нелинейного программирования на практике возникают довольно часто, например, когда затраты растут не пропорционально количеству закупленных или произведенных товаров (эффект «оптовости»), но многие нелинейные задачи могут быть приближенно заменены линейными (линеаризованы), по крайней мере в области, близкой к оптимальному решению. Если это и невозможно, все же обычно нелинейные задачи, возникающие на практике, приводят к сравнительно «благополучным» формам нелинейности. В частности, нередко встречаются задачи «квадратичного программирования», когда W есть полином 2-й степени относительно переменных Далее можно, увеличивая абсолютное значение а, посмотреть, как изменяется при этом оптимальное решение В последнюю очередь упомянем о так называемых задачах стохастического программирования. Особенность их в том, что ищется оптимальное решение в условиях неполной определенности, когда ряд параметров, входящих в целевую функцию W, и ограничения, накладываемые на решение, представляют собой случайные величины. Такое программирование называется стохастическим. Существуют задачи, где стохастическое программирование сводится к обычному, детерминированному. Например, когда оптимизация производится «в среднем», целевая функция W линейно зависит от элементов решения, случайны только коэффициенты при элементах решения, а накладываемые условия не содержат случайности. Тогда можно оптимизировать решение, забыв о случайном характере коэффициентов и заменив их математическими ожиданиями (ибо, как вы знаете, математическое ожидание линейной функции равно той же линейной функции от математических ожиданий аргументов). Гораздо более серьезен случай, когда на элементы решения накладываются стохастические ограничения. Проблемы стохастического программирования довольно полно освещены в монографии [31]. В отличие от задач линейного программирования, методы решения которых хорошо отлажены, устоялись и не представляют существенных трудностей, задачи целочисленного, нелинейного и особенно стохастического программирования принадлежат к сложным и трудным вычислительным задачам. При их решении часто приходится прибегать к приближенным, так называемым «эвристическим» методам оптимизации, так как точные методы по своей трудоемкости оказываются неподъемными даже для современной вычислительной техники. Бывает так, что весь выигрыш, который был бы получен от точной оптимизации решения, «съедается» затратами на получение этого решения, так что «игра не стоит свеч». Здесь опять мы встречаемся с необходимостью «системного» подхода к задачам исследования операций, учета не только непосредственного выигрыша в данной операции, но и затрат на ее оптимизацию. Правда, возможности вычислительной техники (быстродействие, объем памяти) с течением времени растут, и то, что невыгодно экономически сегодня, может сделаться выгодным завтра. С другой стороны, параллельно с ростом возможностей вычислительной техники растет и сложность оптимизационных задач, которые приходится решать. Не надо забывать, что принятие того или иного способа оптимизации решения есть тоже «решение», и иной раз весьма ответственное.
|
1 |
Оглавление
|