Автор: Пользователь скрыл имя, 22 Декабря 2011 в 08:48, курсовая работа
Задачами данной курсовой работы являются:
1) Рассмотреть теоретические аспекты решения задач динамического программирования: реккурентность природы задач данного типа; принципы оптимальности Беллмана
2) Разработка алгоритма. Блок-схемы. Структура алгоритма
3) Реализация на ЭВМ построенного алгоритма на выбранном языке программирования
Введение
1. Динамическое программирование
1.1 Основные понятия
1.2 Принципы динамического программирования. Функциональные уравнения Беллмана
1.3 Особенности задач динамического программирования
1.4 Примеры задач динамического программирования
2. Задача о замене оборудования
3. Расчет показателей экономико-математической модели
Список использованных источников
Приложение
то старое оборудование
целесообразно сохранить. Итак, для
последнего года оптимальная политика
и максимальная прибыль F1(t) находятся
из условия
Пусть k = 2, т. е. рассмотрим
прибыль за два последних года.
Де лаем предположение о возможном
состоянии t оборудования на начало предпоследнего
года. Если в начале этого года принять
решение о со хранении оборудования,
то к концу года будет получена прибыль
r(t) u(t). На начало последнего года оборудование
перейдет в состоя ние t + 1 и при оптимальной
политике в последнем году оно принесет
прибыль, равную F1 (t+1). Значит общая прибыль
за два года составит r(t) u(t) + F1(t + 1). Если
же в начале предпоследнего года будет
принято решение о замене оборудования,
то прибыль за предпоследий год составит
s(t) p + r(0) - u(0).
Поскольку приобретено
но вое оборудование, на начало последнего
года оно будет в состоянии t = 1. Следовательно,
общая прибыль за последние два года при
оптимальной политике в последнем году
составит
s(t) - p + r(0) - u(0) + F1(1)
Условно оптимальной
в последние два года будет
политика, доставляющая максимальную
прибыль
Аналогично находим
выражения для условно
Таким образом, разворачивая
весь процесс от конца к началу,
получаем, что максимальная прибыль
за плановый период Т составит FT(t0). Так
как начальное состояние t0 известно, из
выражения для FT(t0) находим оптимальное
решение в начале первого года, потом вытекающее
из него оптимальное решение для второго
года и т. д. Обратимся к числовому примеру.
Практическое применение рассмотренной
выше схемы представлено в приложении.
3.
Расчет показателей
экономико-математической
модели
Решим задачу замены
оборудования на плановый период в N = 10
лет, оборудование пятилетнего возраста
(T = 5).
В начале планового периода продолжительности в N лет имеется оборудование возраста t, известна стоимость r(t) продукции, производимой в течение года с использованием этого оборудования; ежегодные расходы u(t) связанные с эксплуатацией оборудования; его остаточная стоимость s; стоимость p нового оборудования (сюда же включены затраты, связанные с установкой, запуском оборудования). Данные задачи приведены в таблице. Возраст оборудования
0 1 2 3 4 5 6 7 8 9 10
r(t) 30 30 29 29 29 28 28 27
u(t) 10 10 12 13 14 15 16 17
Для решения задания
применим принцип оптимальности
Беллмана. Рассмотрим интервалы времени,
т.е. годы, планового периода от конца
к началу. Обозначим функцию условно-оптимальных
значений функции цели Fk(t) - максимальную
прибыль, которая будет получена от использования
оборудования возраста t лет за последние
k лет планового периода.
Запишем функциональные
уравнения для последнего года планового
периода F1(t) и последних k лет планового
периода Fk(t) при исходных числовых значениях
параметра:
Пользуясь этими
выражениями, будем последовательно
вычислять значения максимальной прибыли
Fk(t) и записывать их в табл. 1. Первую строку
получим, придавая параметру t в равенстве
(1) значения 0, 1, 2, +, 10 и используя исходные
данные. Например при t = 0: = 20 (сохранение).
Аналогично расчет
ведется до t = 9: = 7 (сохранение).
Заметим, что если
прибыль от нового оборудования ровна
прибыли от старого, то старое лучше
сохранить еще на год. При t = 10= = =
7 (замена).
Из табл.1 видно, что
r(t) - λ(t) с ростом t убывает. Поэтому
при t > 9 оптимальной будет политика
замены оборудования. Чтобы различать,
в результате какой политики получается
условно-оптимальное значение прибыли,
будем эти значения разграничивать (до
t = 9 включительно оптимальной является
политика сохранения). Для заполнения
второй строки табл.1, используем формулу
(2) для k = 2:
Придавая параметру
t значения 0, 1, 2,+ ,10, используя исходные
данные и значения F1(t+1) из первой строки
таблицы, заполним вторую строку. Например,
при t = 4= = =28(сохранение).
Для третьей строки
таблицы используем формулу (2) для k
= 3:= = и т.д.
Таблица 1т 0 1 2 3 4 5 6 7 8 9 10
F1(t) 20 20 17 16 15 13 12 10
F2(t) 40 37 33 31 28 27 27 27
F3(t) 57 53 48 44 44 44 44 44
F4(t) 73 68 61 60 60 60 60 60
F5(t) 88 81 77 76 75 75 75 75
F6(t) 101 97 93 91 90 88 88
F7(t) 117 113 108 106 104 104
F8(t) 133 128 123 120 120 120
F9(t) 148 143 137 136 135 135
F10(t) 163 157 153 151 150
Пусть, например, в
начале планового периода имелось
оборудование возраста T = 5 лет. Разработаем
политику "замен" на десятилетний
период доставляющий максимальную прибыль.
Информация для этого представлена в табл.1
на пересечении столбца t = 5 строки F10(t);
она составляет 150 единиц.
Значение максимальной
прибыли F10(5) = 150 записано в области
"политики замены". Это значит,
что для достижения в течение
10 лет максимальной прибыли в
начале первого года оборудование надо
заменить. В течение первого года
новое оборудование постареет на
год, т.е., заменив оборудование и
проработав на нем год, за 9 лет до
конца планового периода будем
иметь оборудование возраста 1 год.
Из табл. 1 берем F9(1) = 143. Это значение
располагается в области "политики
сохранения", т.е. во втором году планового
периода надо сохранить оборудование
возраста 1 год, и, проработав на нем год,
за 8 лет до конца планового периода будем
иметь оборудование возраста 2 года.
Значение F8(2) = 123 помещено
в области сохранения. Работаем на
оборудовании еще год. Теперь до конца
планового периода осталось 7 лет,
а возраст оборудования составляет
3 года. Находим F7(3) = 106. Это область
сохранения. Работаем на оборудовании
еще год. Его возраст становится
равным 4 годам. До конца планового
периода остается 6 лет. Определяем
F6(4) = 90. Это область сохранения. Работаем
на оборудовании еще год. Его возраст
становится равным 5 годам. До конца
планового периода остается 5 лет.
Определяем F5(5) = 75. Это область замен.
Заменяем оборудование на новое. Проработаем
на нем в течение пятого года. Оно постареет
на год. До конца планового периода остается
4 года. Продолжая подобные рассуждения,
получим, что F4(1) = 68, F3(2) = 48, F2(3) = 31, F1(4) = 15
расположены в области сохранения. Разработанную
политику изобразим следующей цепочкой:
F10(5) F9(1) F8(2) F7(3) F6(4) F5(5)
F4(1)
F3(2) F2(3) F1(4)
Из табл.1 можно
найти оптимальную стратегию
замены оборудования с любым начальным
состоянием от 0 до 10 лет и на любой
плановый период, не превосходящий 10 лет.
В приложении рассмотрена
задача для любого начального возраста
оборудования и для любого расчетного
периода.
Список
использованных источников:
1. А.В. Кузнецов,
В.А. Сакович, Н.И. Холод Математическое
программирование.
2. Исследование операций
в экономике: Учеб. пособие для вузов
3. Колемаев В.А.
Математическая экономика.
Приложение
program Kurs;
uses
Crt;
const
(* ACTIONS CONSTANT *)
SELL = 0;
SAVE = 1;
(* TYPES SIZE CONSTANT *)
MAX_VECTOR_SIZE = 64;
type
TOutMatrixCell = record
action : byte;
value : real;
end;
TOutMatrix = record
rows : word;
cols : word;
items : array[1..MAX_VECTOR_SIZE -
1, 0..MAX_VECTOR_SIZE - 1] of TOutMatrixCell;
end;
TPlanCell = record
year : word;
action : byte;
end;
IVector = record
size : word;
items : array[1..MAX_VECTOR_SIZE -
1] of byte;
end;
DVector = record
size : word;
items : array[0..MAX_VECTOR_SIZE -
1] of real;
end;
var
vectorR : DVector;
vectorU : DVector;
outMatrix : TOutMatrix;
optimalPlan : IVector;
startTime : word;
count : word;
{-----------------------------
procedure ReadData(path : string);
var
inFile : Text;
i : word;
elem : real;
s : string;
begin
Assign(inFile, path);
Reset(inFile);
Writeln('Условие:');
repeat
Readln(inFile, s);
Writeln(s);
until (s = '');
Writeln('Начальные данные:');
Write('R(x) : ');
i := 0;
while not Eoln(inFile) do
be
Read(inFile, elem);
Write(elem:3:1, ' ');
vectorR.items[i] := elem;
Inc(i);
end;
vectorR.size := i;
Readln(inFile);
Writeln;
Write('U(x) : ');
i := 0;
while not Eof(inFile) do
begin
Read(inFile, elem);
Write(elem:3:1, ' ');
vectorU.items[i] := elem;
Inc(i);
end;
vectorU.size := i;
Close(inFile);
Writeln;
Write('начальный возраст
оборудования = ');
Readln(startTime);
Write('расчетный период
= ');
Readln(count);
Writeln;
end;
{-----------------------------
procedure WriteData;
var
i : word;
q : array[0..1] of string;
begin
Writeln('Решение:');
q[0] := 'заменить';
q[1] := 'сохранить';
for i := 1 to optimalPlan.size do
Writeln(i, ' year -> ', q[optimalPlan.items[i]]);
end;
{-----------------------------
function S(t : word) : real;
begin
S := 2;
end;
{-----------------------------
function P(t : word) : real;
begin
P := 15;
end;
{-----------------------------
function U(t : word) : real;
begin
U := vectorU.items[t];
end;
{-----------------------------
function R(t : word) : real;
begin
R := vectorR.items[t];
end;
{-----------------------------
function F(t : word; order: word; var
action : byte) : real;
var
a : real;
b : real;
begin
if (order = 1)
then
begin
a := R(t) - U(t);
b := S(t) - P(t) + R(0) - U(0);