русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Задача о распределении ресурсов.


Дата добавления: 2015-06-12; просмотров: 926; Нарушение авторских прав


В нашем распоряжении имеется какой-то запас дополнительных средств (ресурсов) К, который должен быть распределен между m популяциями животных П1, П2, …, Пm. Каждая из популяций Пi при вложении в нее средств (например, дополнительного корма) в размере х приносит дополнительный доход, зависящий от х, то есть φi(х). Все функции φi(х)(i=1, 2,…, m) заданы (эти функции неубывающие и, возможно, нелинейные). Спрашивается, как нужно распределить средства К между популяциями, чтобы в сумме они дали максимальный дополнительный доход?

Эта задача легко решается методом динамического программирования. Хотя в своей постановке она не содержит упоминания о времени, можно все же операцию распределения средств мысленно развернуть в какой-то последовательности, считая за первый шаг вложение средств в популяцию П1, за второй – в П2 и т.д. (хотя их можно поменять местами).

Управляемая система S в данном случае – дополнительные средства (ресурсы), которые обязательно распределяются до конца. Состояние системы S перед каждым «шагом» характеризуется одним числом s– наличным запасом еще не вложенных средств. В этой задаче «шаговыми управлениями» являются средства х1, х2,…хm, выделяемые популяциям. Требуется найти оптимальное управление, то есть такую совокупность чисел х1, х2,…хm (∑xi = К), при которой суммарный доход максимален:

Перейдем к предпоследнему, (m-1)-му «шагу» (популяции). Пусть мы подошли к нему с запасом средств s (остаток к шагу m-1). Обозначим Wm-1(S) условный оптимальный выигрыш на двух последних шагах: (m-1)-м и m-м (который, как предполагается, уже оптимизирован). Если мы выделим на (m-1)-м шаге (m-1)-ой популяции средства х, то на последний шаг останется s – x. Выигрыш на двух последних «шагах» будет равен

φm-1(x)+Wm(S – x),

и нужно найти такое х, при котором этот выигрыш максимален:



Знак max означает, что меняя х от 0 до s, ищем максимальное значение выигрыша, то есть max выражения, стоящего в фигурных скобках. Этот максимум и есть условный оптимальный выигрыш за два последних шага, а найденное значение х, при котором этот максимум достигается, - условное оптимальное управление на (m-1)-м шаге.

Далее оптимизируем (m-2)-ой, (m-3)-й и т.д. шаги. Вообще, для любого i-го шага (i – ой популяции) будем находить условный оптимальный выигрыш за все шаги с этого и до конца по формуле

и соответствующее ему условное оптимальное управление xi – то значение х, при котором этот максимум достигается.

Продолжая таким образом, дойдем, наконец, до 1-ой популяции П1. Здесь нам не нужно будет варьировать значения S: мы точно знаем, что запас средств перед первым шагом равен К:

Итак, максимальный выигрыш (доход) от всех популяций найден. Теперь остается только «прочесть рекомендации». То значение х, при котором достигается максимум (W*), и есть оптимальное управление х1* на первом шаге. После того, как мы вложим эти средства в 1-ю популяцию, у нас их останется К – х1*. «Читая» рекомендацию для этого значения s, выделяем второй популяции оптимальное количество средств х2* и т.д. до конца.

Пример. Исходный запас дополнительных средств К=10 (единиц кормов). Требуется его оптимальным образом распределить между пятью популяциями (m=5). Для простоты предположим, что вкладываются только целые количества средств. Значения функции дохода φi(х) (например, в тыс. руб.) приведены в таблице.

В каждом столбце, начиная с какой-то суммы вложений, доходы перестают возрастать (реально это соответствует тому, что каждая популяция способна «потребить» лишь ограниченное количество кормов).

х φ1(х) φ2(х) φ3(х) φ4(х) φ5(х)
0,5 0,1 0,6 0,3 1,0
1,0 0,5 1,1 0,6 1,2
1,4 1,2 1,2 1,3 1,3
2,0 1,8 1,4 1,4 1,3
2,5 2,5 1,6 1,5 1,3
2,8 2,9 1,7 1,5 1,3
3,0 3,5 1,8 1,5 1,3
3,0 3,5 1,8 1,5 1,3
3,0 3,5 1,8 1,5 1,3
3,0 3,5 1,8 1,5 1,3

 

 

Для получения ответа вначале произведем условную оптимизацию так, как это было описано выше, начиная с последнего, 5-го шага. Каждый раз, когда мы подходим к очередному шагу, имея запас средств s, мы пробуем выделить на этот шаг то или другое количество средств. Берем доход на данном шаге по таблице и складываем с уже оптимизированным доходом на всех последующих шагах до конца (учитывая, что средств у нас осталось уже меньше, как раз на такое количество средств, которое мы выделили). Находим то вложение для очередного шага, при котором эта сумма достигает максимума. Такое вложение и есть условное оптимальное управление на данном шаге, а сам максимум – условный оптимальный доход. В таблице даны результаты условной оптимизации по всем шагам.

 

s i=5 i=4 i=3 i=2 i=1
x5(s) W5(s) x4(s) W4(s) x3(s) W3(s) x2(s) W2(s) x1(s) W1(s)
1 1,0 0 1,0 1,0 1,0    
1,2 1,3 1,6 1,6    
1,3 1,6 2 2,1 2,1    
1,3 2,3 2,4 2,4    
1,3 2,5 2,9 2,9    
1,3 2,6 3,4 3,5    
1,3 2,7 3,6 4,1    
1,3 2,8 3,7 5 4,6    
1,3 2,8 3,9 5,1    
1,3 2,8 4,1 5,6 2 5,6

 

Таблица построена так: в первом столбце даются возможные значения запаса средств s, с которыми мы подходим к данному шагу. Далее таблица разделена на пять пар столбцов, соответственно номеру шага. В первом столбце каждой пары приводится значение условного оптимального управления, во втором – условного оптимального выигрыша. Таблица заполняется слева направо, сверху вниз. Решение на пятом – последнем шаге вынужденное: выделяются все оставшиеся средства. На всех остальных шагах решение приходится оптимизировать.

В результате последовательной оптимизации 5-го, 4-го, 3-го, 2-го и 1-го шагов мы получим полный список всех рекомендаций по оптимальному управлению и безусловный оптимальный выигрыш W* за всю операцию – в данном случае он равен 5,6. В последних двух столбцах таблицы заполнена только одна строка, так как состояние системы перед началом первого шага нам в точности известно (к нему подходим с полным запасом ресурсов): s0=K=10. Оптимальные управления на всех шагах подчеркнуты.

Таким образом, мы получили окончательный вывод: надо выделить первой популяции две единицы из десяти, второй – пять единиц, третьей – две, четвертой– ни одной, пятой – одну единицу. При этом распределении доход будет максимален и равен 5,6 тыс. руб.

Чтобы было понятно, как заполняется таблица, продемонстрируем это на одном образце расчета. Пусть, например, нужно оптимизировать решение х3(7) – как поступать на третьем шаге, если мы подошли к нему с запасом средств s=7, и сколько максимум мы можем выиграть на всех оставшихся шагах, включая третий? Предположим, что все шаги после третьего (4-й, 5-й) уже оптимизированы, то есть, заполнены две первые пары столбцов таблицы. Найдем х3(7) и W3(7). Для этого составим вспомогательную таблицу.

 

х 7-х φ3(х) W4(7-х) φ3(х)+ W4(7-х)
1,8 1,8
1,7 1,0 2,7
1,6 1,3 2,9
1,4 1,6 3,0
1,2 2,3 3,5
1,1 2,5 3,6
0,6 2,6 3,2
2,7 2,7

В первом столбце таблицы перечислены все возможные вложения (х) на третьем шаге, не превосходящие s=7. В третьем столбце – выигрыш на третьем шаге, то есть от вложения средств х в третью популяцию (заполняется по столбцу φ3(х) исходной таблицы доходов). В четвертом столбце – оптимальный выигрыш на всех оставшихся шагах (четвертом и пятом) при условии, что мы подошли к четвертому шагу с оставшимися средствами (заполняется по столбцу i=4 таблицы). В пятом столбце – сумма двух выигрышей: шагового и оптимизированного дальнейшего при данном вложении (х) на третьем шаге. Из всех выигрышей последнего столбца выбирается максимальный (в таблице он равен W3(7)=3,6, а соответствующее управление х(7)=2). Подобные алгоритмы несложно реализовать на ЭВМ.

 



<== предыдущая лекция | следующая лекция ==>
Оптимизация пути. | Задача о загрузке машины.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.01 сек.