Главная Учебники - Разные Лекции (разные) - часть 33
|
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ "САРОВСКИЙ ГОСУДАРСТВЕННЫЙ ФИЗИКО-ТЕХНИЧЕСКИЙ ИНСТИТУТ" ЭКОНОМИКО-МАТЕМАТИЧЕСКИЙ ФАКУЛЬТЕТ ПОЯСНИТЕЛЬНАЯ ЗАПИСКА К КУРСОВОЙ РАБОТЕ На тему: СТУДЕНТ (группа ИС-45Д) РУКОВОДИТЕЛЬБеляев С.П. г. Саров 2008 г Оглавление ВВЕДЕНИЕ. 3 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ. 4 Исходные параметры.. 5 Искомые параметры.. 6 МЕТОД РЕШЕНИЯ.. 6 ОБОСНОВАНИЕ ВЫБОРА ПРОГРАММНЫХ СРЕДСТВ.. 9 ОПИСАНИЕ ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ.. 10 СПИСОК ЛИТЕРАТУРЫ.. 11 Основная часть данной работы направлена на практическое освоение метода динамического программирования на примере решения хорошо изученных задач, а именно: простейшей задачи оптимального распределения ресурсов и задачи управления запасами продукта при случайном спросе на него. Кроме теоретических основ и практических рекомендаций, необходимых для численного решения указанных задач, связанных с простым классом одномерных процессов распределения [1], дополнительно рассматриваются задачи оптимального распределения при наличии двух типов ресурсов и двух типов ограничений, в рамках которых возможны не только постановка и решение большого числа прикладных задач [1, 5], но также выявление существенных и качественных особенностей, связанных с применением метода динамического программирования, при переходе к задачам с многомерными процессами распределения. Цель работы:
знакомство с постановкой задачи оптимального распределения ограниченного ресурса и методом множителей Лагранжа в задачах условной оптимизации, изучение принципа оптимальности Беллмана и вычислительной схемы решения задачи оптимального распределения ограниченного ресурса методом динамического программирования, разработка программы для численного решения задачи и проведение расчетов. Постановка простейшей задачи оптимального распределения
ограниченного ресурса
В различных производственно-экономических системах значительное число решаемых задач тесно связано с эффективным использованием и распределением ограниченных ресурсов, необходимых для нормального функционирования таких систем. Переходя к формулировке одной из простейшей задач такого класса, вначале опишем кратко процессы, обусловливающие возникновение этого типа задач. Пусть некоторая производственно-экономическая система располагает заданным количеством какого-либо экономического ресурса, под которым подразумеваются материальные, трудовые, финансовые либо иные ресурсы, необходимые для функционирования системы. В случае нескольких потребителей указанного ресурса или далее соответствующих технологических процессов возникает следующая задача: разделить имеющееся количество ресурса между ними так, чтобы максимизировать их суммарную эффективность или получаемый доход от этих процессов [1]. Для математической постановки этой задачи требуется принять следующие основные предположения [1]: 1) эффективности каждого из рассматриваемых технологических процессов, например в виде соответствующих доходов, могут быть измерены общей единицей: либо в виде валового выпуска однородного продукта, либо в стоимостной форме; 2) эффективность каждого технологического процесса не зависит от того, какие количества ресурсов были выделены для других технологических процессов; 3) общая эффективность или, что то же самое, суммарный доход от всех технологических процессов – аддитивная величина, то есть величина, равная сумме доходов, получаемых от каждого процесса в отдельности. Тогда математическая постановка задачи оптимального распреде
ления ограниченного ресурса формулируется следующим образом [1]. Предположим, что имеется N
технологических процессов, занумерованных в определенном порядке числами 1, 2, ... , N
, и каждому такому процессу поставлена в соответствие некоторая функция, оценивающая его эффективность, а именно: величина дохода в зависимости от количества выделенного ресурса для этого процесса. Пусть x
i
– количество выделенного ресурса i
-му процессу (i
= 1, 2, ... , N
), а величина дохода, получаемого в этом процессе, задается функцией g
i
= g
i
(x
i
) . Отметим, что в качестве таких функций можно выбирать, например, производственные функции или функции полезности неоклассического типа [2, 3]. С учетом второго и третьего предположения – о независимости процессов и аддитивности их общей эффективности – для суммарного дохода от распределения ограниченного ресурса между указанными N
технологическими процессами получим следующее выражение: В силу ограниченности распределяемого ресурса, располагаемое количество которого здесь обозначим через z
, для переменных задачи x
i
, i
= 1, 2, ... , N
, имеет место следующее ограничение: которое вместе с условиям неотрицательности для этих же переменных задает допустимую область
определения для функции (1.1). Таким образом, задача оптимального распределения ограниченного ресурса заключается в том, чтобы определить значения переменных x
i
, i
= 1, 2, ... , N
, которые доставляют максимальное значение функции R
(x
1, x
2 , ... , x
N
) (1.1), удовлетворяя при этом ограничениям (1.2), (1.3). Задача (1.1) - (1.3) относится к классу задач условной оптимизации. Ограничения, задающие в этих задачах допустимые множества, обычно в математической экономике разделяют на две группы, а именно: ограничения вида (1.2) относят к функциональным
ограничениям, а ограничения вида (1.3) – к прямым
ограничениям [2]. Значения x
i
, i
= 1, 2, ... , N
, для которых доставляется максимальное значение функции (1.1) с учетом (1.2), (1.3), называют решением задачи
, а соответствующие значения функции (1.1), то есть max R
(x
1, x
2 , ... , x
N
) , – значением задачи
. Если ограничения задачи, заданные в виде нестрогих неравенств, для ее решения обращаются в равенства, то такие ограничения тогда называют эффективными
; иначе эти ограничения являются неэффективными
, и в связи с этим их можно в процессе решения задачи отбрасывать. 1. z – располагаемое количество ресурса, 2. n – мера квантования z 3. 4. 5. 1.
fN
(z
)
=
fN
(n
Δ
) - искомый максимум функции R
2.
xN
(z
) – искомое оптимальное количество ресурса
Переходя к изложению вычислительной схемы решения задачи с применением основного функционального уравнения (1.15), предположим (а это существенно для дальнейшего изложения), что переменные задачи
N i x
i
, ... 2, 1, , = , а также количества распределяемого ресурса где n
Δ = z
. Соответственно, функции (1.10) в рекуррентном соотношении (1.15) будут вычисляться только для указанных в (1.16) значений Указанный подход позволяет избежать процедуры интерполирования при вычислении значений Согласно (1.15), для вычисления или (1.13), которые доставляют множество всех требуемых значений где Получив множество значений Таким образом, в процессе решения уравнения (1.15) для m
= 2, 3, ... , N
последовательно заполняется таблица, подобная табл. 1.1. Таблица 1.1 Оптимальные доходы в зависимости от количества процессов и выделенного ресурса
С заполнением последних двух столбцов указанной таблицы решение задачи фактически получено. Действительно, поскольку функция выполнена с помощью программы Microsoft Office Excel, одной из наиболее передовых, мощных и современных сред разработки Windows-приложений и электронных таблиц. Встроенное средство поиска решений позволяет быстро справиться с задачей о распределения ресурсов. Для начала работы с программой следует задать n и z и нажать кнопку определить После этого программа создаст таблицы. 2. Ланкастер, К. Математическая экономика / К. Ланкастер. – М.: Советское радио, 1972. – 464 с. 3. Колемаев, В.А. Математическая экономика / В.А. Колемаев. – М.: ЮНИТИ, 1998. – 240 с. 4. Беллман, Р. Процессы регулирования с адаптацией / Р. Беллман. – М.: Наука, 1964. – 360 с. 5. Первозванский, А.А. Математические модели в управлении производством / А.А. Первозванский. – М.: Наука, 1975. – 616 с. 6. Калихман, И.Л. Динамическое программирование в примерах и задачах / И. Л. Калихман, М. А. Войтенко. – М.: Высшая школа, 1979. – 125 с. Public Function f_g1(x As Double) As Double f_g1 = 2.5 * Sqr(x) / (Sqr(x) + 1) End Function Public Function f_g2(x As Double) As Double f_g2 = 6 * x * (1 - Exp(-x / 4)) / (x + 4) End Function Public Function f_g3(x As Double) As Double f_g3 = 2 * x / (x + 0.5) End Function Private Sub CommandButton1_Click() Dim i As Integer Dim n As Integer Dim z As Double Dim d As Double Dim m_str As String Range("A1").Select n = Val(TextBox1.Text) z = Val(TextBox2.Text) d = z / n ActiveCell.Cells(1, 2) = n ActiveCell.Cells(2, 2) = z Range("A11").Select For i = 1 To 100 For j = 1 To 10 ActiveCell.Cells(i, j) = "" Next Next For i = 1 To 10 ActiveCell.Cells(0, i) = 0 Next For i = 1 To n ActiveCell.Cells(i, 1) = i * d ActiveCell.Cells(i, 2) = f_g1(i + 0#) ActiveCell.Cells(i, 3) = f_g2(i + 0#) ActiveCell.Cells(i, 4) = f_g3(i + 0#) ActiveCell.Cells(i, 5) = f_g1(i + 0#) Next For i = 1 To n ActiveCell.Cells(i + 0, 7) = GetF2Val(i + 0, d) ActiveCell.Cells(i + 0, 8) = Int(GetF2Pos(i + 0, d) * d) ActiveCell.Cells(i + 0, 9) = GetF3Val(i + 0, d) ActiveCell.Cells(i + 0, 10) = Int(GetF3Pos(i + 0, d) * d) ActiveCell.Cells(i + 0, 6) = Abs(z - ActiveCell.Cells(i + 0, 8) - ActiveCell.Cells(i + 0, 10)) Next ListBox1.Clear For i = 1 To 3 m_str = Str(i) + ": X = " + Str(ActiveCell.Cells(n + 0, 4 + i * 2)) + " F = " + Str(ActiveCell.Cells(n + 0, 3 + i * 2)) ListBox1.AddItem (m_str) Next Range("A10:J10").Select End Sub Private Sub CommandButton2_Click() Hide End Sub Public Function GetF2Val(n As Integer, d As Double) As Double Dim maxs As Double maxs = f_g2(0) + f_g1(n * d) For i = 1 To n If f_g2(i * d) + f_g1((n - i) * d) >= maxs Then maxs = f_g2(i * d) + f_g1((n - i) * d) End If Next GetF2Val = maxs End Function Public Function GetF2Pos(n As Integer, d As Double) As Integer Dim maxs As Double Dim maxp As Integer Range("A11").Select maxs = f_g2(0) + f_g1(n * d) max_p = 0 For i = 1 To n If f_g2(i * d) + f_g1((n - i) * d) >= maxs Then maxs = f_g2(i * d) + f_g1((n - i) * d) maxp = i End If Next GetF2Pos = maxp End Function Public Function GetF3Val(n As Integer, d As Double) As Double Dim maxs As Double maxs = f_g3(0) + f_g2(n * d) For i = 1 To n If f_g3(i * d) + f_g2((n - i) * d) >= maxs Then maxs = f_g3(i * d) + f_g2((n - i) * d) End If Next GetF3Val = maxs End Function Public Function GetF3Pos(n As Integer, d As Double) As Integer Dim maxs As Double Dim maxp As Integer Range("A11").Select maxs = f_g3(0) + f_g2(n * d) max_p = 0 For i = 1 To n If f_g3(i * d) + f_g2((n - i) * d) >= maxs Then maxs = f_g3(i * d) + f_g2((n - i) * d) maxp = i End If Next GetF3Pos = maxp
| |||||