Автор: Пользователь скрыл имя, 28 Сентября 2011 в 22:59, курсовая работа
Динамическое программирование - это область математического программирования, включающая совокупность приемов и средств для нахождения оптимального решения, а также оптимизации каждого шага в системе и выработке стратегии управления, то есть процесс управления можно представить как многошаговый процесс
1. введение…….....................................................................................(2-5) с
1.1динамическоепрограммирование…………………………...….(5-6)с.
1.2 Дополнительная информация ……………..…………………(6-8) с.
1.3 Модели динамического программирования ………..…….…(8-11) с.
1.4 Постановка задач динамического программирования выбор стратегии обновления оборудования ...............................................(11-14)с.00
2. Решение задачи …………………………………………………(14-15) с..
2.1. Экономическая постановка задачи ……………………(14-15) с
2.2. Численное решение задачи ……………………………..(15-20) с.
2.3 Получение результатов…………………………………(20-21) с.
3. Описание автоматизированных расчетов …………………..…(20-21) с.
3.1 Выбор языка программирования ……………………..…….(20-21) с.
3.2 Описание программы………………………….. ……..…….…(21-30) с.
3.3 Заключение ………….………………………………………..………(31) с.
4.Список литературы ……………………………..…………...………(31-32) с.
4.1Приложение …………………………………………………………………
4.2инструкция для пользователя по форме №1и№2(включая описание формы)…………………………………………………………………(32-34) с.
I этап. Условная оптимизация.
1-й шаг: к = 6. Для него возможные
состояния системы t = 1,2, ..., 6.
Функция Fk(t)=Max .r(t)+fk+1(t-1) ©
S(t)-p+r(0)+fk+1(1) (з)
Функция
fk(t)вычисляется на каждом шаге управления
для всех 1≤t≤t0+k-1.Управление
при котором достигается максимум дохода,является
оптимальным.
F6(t)=max r(t)+Fk+1(t-1)©
S(t)-p+r(o)+fk+1(1)(3)
F6(1)=Max 720846-900+891 =846©
F6(2)=Max 630828-900+891=828©
F6(3)=Max 540810 -900+891 =810©
F6(4)=Max 450765-900+891 =765©
F6(5)=Max 315720-900+891 =720©
F6(6)=Max
225675-900+891 =675©
2-й шаг:k=5.Для него шага возможные состояния системы t=1.2…..5.Функциональное уравнение имеет вид:
R(t)+F6(t+).(c)
F5(t)=max 1≤t≤5.
S(t)-P+r(0)+F6(1).(3)
F5(1)=max 720-900846+828+891+
F5(2)=max 630-900828+810+891+
F5(3)=max 540-900810+765+891+
F5(4)=max 450-900765+720+891+
F5(5)=max 315-900720+765+891+
r(t)+F5(t+1)(c) ≤t≤4.
F4(t)=max S(t)-p+r(0)+F5(1)(3)
F4(1)=max 720846+1638-900+891+
F4(2)=max 630828+1575-900+891+
F4(3)=max 540810+1485-900+891+
F4(4)=max 450765+1395-900+891+
4-й шаг.
R(t)+F4(t+1) © 1≤t≤3
F3(t)=max s(t)-p+r(0)+f4(1)(3)
F3(1)=max 720846+2403-90+891+
F3(2)=max 630828+2303-90+891+
F3(3)=max 540810+2160-90+891+
.
5-й шаг k=2
F2(t)=max r(t)+F3(t+1) ©
S(t)-P+r(0)+F3(1)(3)
F2(1)=max 720-900846+3131+891+
F2(2)=max 630-900828+3015+891+
6-ой шаг
R(t)+F2(t+1) © 1≤t
F1(t)=max s(t)-p+r(0)+f2(1)(3)
F1(1)=max 720-900846+3870+891+
2.3Получение результатов.
Результаты вычислений Беллмана Fk(t) приведены в табл. , в которой k - год эксплуатации, t - возраст оборудования.
1 | 2 | 3 | 4 | 5 | 6 | |
1 | 4716 | - | - | - | - | - |
2 | 3978 | 3870 | - | - | - | - |
3 | 3249 | 3131 | 3015 | - | - | - |
4 | 2484 | 2403 | 2303 | 2160 | - | - |
5 | 1674 | 1638 | 1575 | 1485 | 7395 | - |
6 | 846 | 828 | 810 | 765 | 720 | 675 |
В табл. выделено значение функции, соответствующее состоянию «с» - сохранение оборудования.
II этап. Безусловная оптимизация.
Безусловная оптимизация начинается с шага при k = 1. Максимально возможный доход от эксплуатации оборудования за годы с 1-го по 6-й составляет F1(l) = 4716. Этот оптимальный выигрыш достигается, если на втором году заменить оборудование.
3.1 Выбор языка программирования
Почему
Delphi?
Delphi - это
нечто иное, нежели Pascal, это совершенно
другой качественный этап
Delphi —
результат развития языка
Версия 1 была предназначена для разработки под 16-ти разрядную платформу Win16;
Версии со второй компилируют программы под 32-х разрядную платформу Win32;
Вместе с 6-й версией Delphi вышла совместимая с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему Linux;
Версия 8 способна генерировать байт-код исключительно для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET);
Последующие версии (обозначаемые годами выхода, а не порядковыми номерами, как это было ранее) могут создавать как приложения Win32, так и байт-код для платформы .NET;
3.2 Описание программы.
Ко д
первой формы unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
ExtCtrls, Menus;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
Label1: TLabel;
Panel1: TPanel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Button1: TButton;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
procedure Button1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure Panel1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
r,S:array [0..6]of integer;
t,k,P:integer;
F,otvet:array
[0..6,0..6]of integer;
implementation
uses Unit2;
{$R *.dfm}
function max (a,b:integer):integer;
begin
if a >=b then max:=a else max:=b;
end;
procedure TForm1.N1Click(Sender: TObject);
begin
Form1.Edit1.Clear();
Form1.Edit2.Clear();
Form1.Edit3.Clear();
Form1.Edit4.Clear();
Form1.Edit5.Clear();
Form1.Edit6.Clear();
Form1.Edit7.Clear();
Form1.Edit8.Clear();
Form1.Edit9.Clear();
Form1.Edit10.Clear();
Form1.Edit11.Clear();
Form1.Edit12.Clear();
Form1.Edit13.Clear();
Form1.Edit14.Clear();
Form1.Edit15.Clear();
Form1.Edit1.SetFocus();
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
p:=StrToInt(Edit15.Text);
r[0]:=StrToInt(Edit1.Text);
r[1]:=StrToInt(Edit3.Text);
r[2]:=StrToInt(Edit5.Text);
r[3]:=StrToInt(Edit7.Text);
r[4]:=StrToInt(Edit9.Text);
r[5]:=StrToInt(Edit11.Text);
r[6]:=StrToInt(Edit13.Text);
s[0]:=StrToInt(Edit2.Text);
s[1]:=StrToInt(Edit4.Text);
s[2]:=StrToInt(Edit6.Text);
s[3]:=StrToInt(Edit8.Text);
s[4]:=StrToInt(Edit10.Text);
s[5]:=StrToInt(Edit12.Text);
s[6]:=StrToInt(Edit14.Text);
k:=6;{количество лет }
for t:=1 to k do
begin
F[k,t]:=max(r[t],S[t]-P+r[0]);
if(F[k,t]=r[t]) then otvet[k,t]:=0
else otvet[k,t]:=1;
end;
for k:=5 downto 1 do
for t:=1 to k do
begin
f[k,t]:=max(r[t]+F[k+1,t+1],S[
if(F[k,t]=r[t]+F[k+1,t+1])then otvet[k,t]:=0
else otvet[k,t]:=1;
end;
for k:=1 to 6 do
for t:=1 to k do
if(otvet[k,t]=1)
then Form2.StringGrid1.Cells[t,k]:=
else Form2.StringGrid1.Cells[t,k]:=