Задача о замене оборудования

Автор: Пользователь скрыл имя, 22 Декабря 2011 в 08:48, курсовая работа

Описание работы

Задачами данной курсовой работы являются:
1) Рассмотреть теоретические аспекты решения задач динамического программирования: реккурентность природы задач данного типа; принципы оптимальности Беллмана
2) Разработка алгоритма. Блок-схемы. Структура алгоритма
3) Реализация на ЭВМ построенного алгоритма на выбранном языке программирования

Содержание

Введение
1. Динамическое программирование
1.1 Основные понятия
1.2 Принципы динамического программирования. Функциональные уравнения Беллмана
1.3 Особенности задач динамического программирования
1.4 Примеры задач динамического программирования
2. Задача о замене оборудования
3. Расчет показателей экономико-математической модели
Список использованных источников
Приложение

Работа содержит 1 файл

Курсовая работа.docx

— 46.02 Кб (Скачать)

то старое оборудование целесообразно сохранить. Итак, для  последнего года оптимальная политика и максимальная прибыль 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) 

Условно оптимальной  в последние два года будет  политика, доставляющая максимальную прибыль 

Аналогично находим  выражения для условно оптимальной  прибыли за три последних года, четыре и т. д. При k=T получим max Z = FT (t0). 

Таким образом, разворачивая весь процесс от конца к началу, получаем, что максимальная прибыль  за плановый период Т составит 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 27 26 26

u(t) 10 10 12 13 14 15 16 17 18 19 20 
 

Для решения задания  применим принцип оптимальности  Беллмана. Рассмотрим интервалы времени, т.е. годы, планового периода от конца  к началу. Обозначим функцию условно-оптимальных значений функции цели 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 9 7 7

F2(t) 40 37 33 31 28 27 27 27 27 27 27

F3(t) 57 53 48 44 44 44 44 44 44 44 44

F4(t) 73 68 61 60 60 60 60 60 60 60 60

F5(t) 88 81 77 76 75 75 75 75 75 75 75

F6(t) 101 97 93 91 90 88 88 88 88 88 88

F7(t) 117 113 108 106 104 104 104 104 104 104 104

F8(t) 133 128 123 120 120 120 120 120 120 120 120

F9(t) 148 143 137 136 135 135 135 135 135 135 135

F10(t) 163 157 153 151 150 150 150 150 150 150 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); 

Информация о работе Задача о замене оборудования