русс | укр

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

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

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

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


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

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


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


Метод динамического программирования позволяет с успехом решать многие задачи экономического планирования.

Ситуация 2. Министерство располагает денежными средствами –– 8 млн усл. ед., которые необходимо распределить между тремя его заводами. Ожидаемый доход предприятия i при условии, что ему выделяют хмлн усл. ед., равен fi(x). Исходные данные содержатся в следующей таблице (для простоты полагаем, что денежные суммы выражаются целыми числами от 0 до 8).

 

x
f1(x) 0,1 0,2 0,5 0,5 0,6 0,8 0,9 0,9
f2(x) 0,3 0,35 0,4 0,45 0,5 0,5 0,7 0,75
f3(x) 0,2 0,4 0,55 0,6 0,65 0,7 0,75 0,85

 

Как распределить имеющиеся средства между заводами, чтобы получить наибольшую прибыль?

Пусть в общем случае надо распределить амлн усл. ед. между nзаводами. Поступим следующим образом. Будем считать, что сначала все денежные средства мы отдаем первому заводу, потом разделим их между первым и вторым, затем между тремя заводами. Каждый раз вначале распределяем 1 млн усл. ед., затем 2, 3 и т. д.

Обозначим через Fk(x)наибольший доход, который можно получить, разделив сумму х между предприятия 1, 2, …, k, где 1 £ k £ n, 0 £ х £ а.

Решение задачи будет состоять в последовательном вычислении значений F1(x), F2(x),…, Fn(x)для всех хот 0 до а. Закончим вычислением Fn(a), которое дает оптимальное значение величины дохода.

Прежде всего, найдем F1(x). Поскольку в этом случае все достается только первому предприятию, то F1(x) = f1(x)для любого x.

Предположим, что мы знаем, как лучше разделить х млн усл. ед. между k – 1предприятиями и какой при этом будет суммарный доход, то есть известны значения Fk 1(x)для всеххот 0 до а. Теперь распределим эти средства между kпредприятиями.



Мы можем выделить заводу kлюбуюсумму от 0до х. Допустим, что она составляет у млн усл. ед.и прибыль завода в этом случае –– fk(у). Тогда на долю первых k – 1заводов приходится (х – у)млн усл. ед. Как лучше вложить их мы знаем и известна прибыль Fk 1(х – у), получаемая в итоге. Отсюда выводим, что суммарный доход kпредприятий будет равен Fk 1(x – у) + fk(у).

Можно было бы выделить заводу k и другую сумму, при этом общий доход мог бы увеличиться. Поэтому надо рассмотреть все возможные варианты вложения средств и выбрать лучший. Следовательно,

. (12.4)

Обозначим Yk(x)значениеy, при котором достигается максимум Fk(x).Таким образом, Yk(x)–– это вложение в предприятие k при условии оптимального распределения х млн усл. ед. между предприятиями 1, 2, …, k. Зная Yn(a)и промежуточные значения Yk(х),можно узнать, какую сумму получит каждое из предприятий при оптимальном распределении денежных средств между ними.

Рассмотрим, как это делается для исходных данных в ситуации 2.

Значения Fk(x)и Yk(х), вычисляемые последовательно, будем располагать в таблицах.

Как уже отмечалось, F1(х) = f1(х)для любого х, поэтому сразу получаем доход при финансировании только первого завода. Сведем эти данные в таблицу:

 

x
F1(х) 0,0 0,1 0,2 0,5 0,5 0,6 0,8 0,9 0,9

 

Ясно также, то Y1(x) = xдля всех x:

 

x
Y1(x)

 

Переходим к распределению денежных средств между двумя заводами.

По формуле

 

находим:

 

 

Действуя далее аналогичным образом, находим F2(х) и Y2(х) для x = 3, 4, …, 8:

 

x
F1(х) 0,0 0,1 0,2 0,5 0,5 0,6 0,8 0,9 0,9
F2(х) 0,0 0,3 0,4 0,5 0,8 0,85 0,9 1,1 1,2

 

x
Y1(x)
Y2(x)

 

Мы определили наибольший доход при финансировании двух заводов.

Осталось распределить денежные средства между тремя заводами. Расчеты ведем по формуле

.

 

При этом промежуточные вычисления можно не проводить, т. к. значения F3(х) для x = 0, 1, …, 7 уже не нужны.

Имеем:

 

 

В итоге получаем таблицы:

 

x  
F1(х) 0,0 0,1 0,2 0,5 0,5 0,6 0,8 0,9 0,9
F2(х) 0,0 0,3 0,4 0,5 0,8 0,85 0,9 1,1 1,2
F3(х)                 1,4

 

x
Y1(x)
Y2(x)
Y3(x)                

 

Таким образом, наибольший ожидаемый доход F3(8) = 1,4 млн усл. ед.

Заметим, что на этом последнем шаге максимум достигается в двух случаях: 0,85 + 0,55 = 1,4 и 0,8 + 0,6 = 1,4. Если третьему заводу выделить 3 млн усл. ед., то сколько досталось второму заводу мы узнаем из второй таблицы: Y2(8 – 3) = Y2(5) = 2. Аналогично, первому заводу досталось Y1(5 – 2) = Y1(3) = 3 млн усл. ед. В итоге первому заводу достается 3, второму –– 2, третьему –– тоже 3 млн. усл. ед.

Если же третьему заводу выделить 4 млн усл. ед., то в этом случае Y2(8 – 4) = Y2(4) = 1 и Y1(4 – 1) = Y1(3) = 3. То есть первому заводу достается 3, второму –– 1, третьему –– 4 млн усл. ед.

В каждом из этих случаев общая прибыль составляет 1,4 млн усл. ед.

Заметим, что величина оптимальной прибыли при распределении денежных ресурсов между предприятиями не зависит от их нумерации.

 



<== предыдущая лекция | следующая лекция ==>
Динамическое программирование | Реализация алгоритма в Maple


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


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

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

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


 


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

 
 

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

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