f4(x-x5)
f5(x5)
|
0
|
1
|
2
|
3
|
4
|
|
0
|
7
|
12
|
16
|
20
|
0
|
0
|
|
|
|
|
20
|
1
|
3
|
|
|
|
19
|
|
2
|
5
|
|
|
17
|
|
|
3
|
7
|
|
14
|
|
|
|
4
|
9
|
9
|
|
|
|
|
Заполним последнюю диагональ таблицы путем
сложения элементов (формула 5).
Находим максимальное число побочной диагонали,
полученной на предыдущем шаге.
zmax=20
млн.рублей.
Делаем проверку так чтобы, средства между
предприятиями и их суммарный доход был максимальным.
Пятому предприятию должно быть выделено (см.
табл. 3.):
=5(4)=0 млн.
руб.
причем четвертому предприятию должно
быть выделено :
=4(4-0)=4(4)=1 млн.
руб.
Тогда третьему предприятию должно
быть выделено (см. табл. 5.):
=3(4--)=3(4-0-1)=3(3)=1 млн. руб.
второму предприятию должно быть
выделено (см. табл. 7.):
млн. руб.
Hа долю
первого предприятия остается:
млн. руб.
которое обеспечивает
производственному объединению наибольший возможный прирост прибыли:
млн. руб.
Описание решения с использованием
инструментальных средств MicrosoftExcel
.Используя данные из таблицы №1, составим
подобную таблицу в Excel.
Рисунок 1«Построение капиталовложений»
Пусть:
¦j(xj)-Прирост
мощности или прибыли j-го
предприятия, если оно получит xj
денежных единиц капитальных вложений.
Xj-Сумма
капитальных вложений в j-ое
предприятие.
x-Сумма капитальных
вложений, выделяемая нескольким предприятиям (0 £x£b)
Решение в Excel
Рассмотрим теперь подробнее четыре предприятия.
«Исходные данные»
f1(x1)
-прирост прибыли 1-го предприятия, если оно получит капитальные вложения;
f2(x2)
-прирост прибыли 2-го предприятия, если оно получит капитальные вложения;
f3(x3)
-прирост прибыли 3-го предприятия, если оно получит капитальные вложения;
f4(x4)
-прирост прибыли 4-го предприятия, если оно получит капитальные вложения.
Для заполнения Таблицы 2 «Первого предприятия»
необходимо в Таблице1«Построение капиталовложений» сложить значения функции ¦1(x1)
и ¦2(x2).
В ячейку С11 внесем формулу
=$B$11+C10
В ячейку D11внесем
формулу=$B$11+D10
В ячейку С12внесем формулу=$B$12+C10
И т.д для всех клеток. Для заполнения остальных
северо-восточной диагонали.
Рисунок 2 «Первое предприятие »
И на каждой северо-восточной
диагонали выбрать наибольшее число (отмечено голубым цветом), указав
соответствующие значение 2(x):
В ячейку С23 внесем
формулу =МАКС(C11)
В ячейку D23 внесем формулу
=МАКС(C12;D11)
В ячейку С24внесем формулу
=ЕСЛИ(C11=C23;A11)
В ячейку D24 внесем
формулу =ЕСЛИ(C12=D23;A12;A11)
И.т.д для всех остальных клеток.
Рисунок 3 «Первое предприятие максимальное
значение»
Рисунок 4 «Подробное решение первого предприятия
и максимальное значение»
Рисунок 5 «Второе предприятие и максимальное
значение»
Рисунок 6 «Подробное решение второго предприятия
и максимальное значение»
Рисунок 7 «Третье предприятие»
Таблица 8 «Подробное решение третьего
предприятия»
Рисунок 9 «Четвертое предприятие»
Таблица 10 «Подробное решение четвертого
предприятия»
Рисунок 11 «Zmax»
Чтобы найти Zmax,
нам
нужно в ячейку В71 внести формулу =МАКС(C68;D67;E66;F65;G64)
. Руководство пользователя к разработанному
решению
Программа "Максимизации
капиталовложений" предназначена для вычисления максимально возможного
суммарного прироста прибыли всех предприятий (субъектов), прироста прибыли
каждого предприятия, а также количества ресурсов, которые необходимо выделить
каждому предприятию, чтобы суммарный прирост прибыли был максимальным.
Для работоспособности данного приложения вы
должны обладать следующим перечнем программных и технических средств:
· ПК на базе процессора Intel,
AMD;
· Оперативная память 128
МБ;
· Видео:
совместимая VGA видеокарта;
· Операционная система Windows
XP/Windows7;
· Клавиатура, мышь;
· Microsoft.NET
Framework 3.0;
Для начала работы с программой запустите файл RZMK.exe.
Далее вы должны заполнить пустые поля на форме данными.
Рисунок 17 «Главная форма приложения»
Для проведения операций над введенными данными
необходимо воспользоваться кнопками (Рис.19):
Результат - программа вычисляет и выводит
результат.
Файл - Пример - автоматически заполняет поля
вложения ресурсов и их распределения тестовыми значениями.
О программе - вызывает информацию о программе и
его разработчике
Рисунок 19 "Кнопки"
После нажатия кнопки "Рассчитать"
программа выдает результаты максимального суммарного прироста прибыли, прирост
прибыли на каждом предприятии и количество необходимых ресурсов (Рис.20),
Рисунок 20 "Максимальный прирост прибыли и
прирост прибыли и выделенные ресурсы на предприятиях "
Алгоритм решений унифицированной задачи
Рисунок 24 «Алгоритм решения унифицировнанной
задачи»
Заключение
В ходе разработки курсового проекта мной была
рассмотрена и изучена задача о максимизации капиталовложений, что такое задача
о максимизации капиталовложений и где она применяется.
Список литературы
1. Кузнецов А.М., Сакович В.А, Холод
И.И. Высшая математика. Математическое программирование. Минск, Высшая школа,
2011.
2. Федосеев В.В. и др.
Экономико-математические методы и прикладные модели: Учебное пособие для ВУЗов.
- М:. Юнити, 2002.
. Шикин Е.А., Чхартишвили
А.Г. Математические методы и модели в управлении - М:. Дело 2010.
Приложение
unit Unit1;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Grids, Math, ExtCtrls,
Menus, ShellAPI;= class(TForm): TStringGrid;: TButton;: TButton;: TMainMenu;:
TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;:
TMenuItem;Button1Click(Sender: TObject);FormCreate(Sender:
TObject);Button2Click(Sender: TObject);N2Click(Sender: TObject);N3Click(Sender:
TObject);N4Click(Sender: TObject);N5Click(Sender: TObject);N6Click(Sender:
TObject);
{ Private declarations }
{ Public declarations };:
TForm1;:Array[0..5,0..5] of Integer; // Массив для хранение суммы:Array[1..5,1..5]
of Integer;
// Массив для хранение максимальных чисел
Cells:Array[0..20]
of TPoint;
// Массив точек (записи координат максимальных чисел)
L:Integer;Unit2;
{$R *.dfm}TForm1.FormCreate(Sender:
TObject);: TGridRect;:Integer;
// Смещаем фокус (выделение)myRect
do:=-1;:=-1;:=-1;:=-1;;.Selection:=myRect;
// Заполняем заголовки
таблицыStringGrid1 do[0,0]:='U';I:=1 to 5
do[0,I]:='L'+IntToStr(I)+'(U)';[I,0]:=IntToStr(I-1);;;
end;
// Процедура для подсчета суммы
procedure Sum();, J: Integer;I:=1 to
5 doJ:=1 to 5 do[I,J]:=MasSum[I,0] + MasSum[0,J];;
// Процедура для нахождние максимальных чисел
(диагонали)
// и записи координат в массив
procedure
Max();
var,J,iMax,jMax:Integer;:TPoint;:=0;
jMax:=0;I:=5 downto 1 do[I,1]:=MasSum[1,I];J:=I downto 1 doMasSum[I-J+1,J]
>= MasMax[I,1] then[I,1]:=MasSum[I-J+1,J];:=I-J+1;:=J;[I,2]:=J-1;
// В какой строке найдено максимальное знач.
end;
C.X:=jMax;
C.Y:=iMax;
// Координаты максимальных значений
Cells[L]:=C;:=L+1;;;
// Сбрасываем введенные нами
значенияTForm1.Button1Click(Sender: TObject);,J: Integer;I:=1 to 5 doJ:=1 to 5
do.StringGrid1.Cells[I,J]:='';2.Close;
end;
// Процедура подсчета итераций
// Вывод результата в
таблицыTForm1.Button2Click(Sender: TObject);,J,K,C,P:Integer;.Show;:=0; C:=0;
P:=2;C<=6 do:=1;I:=1 to 5-K+1 doJ:=1 to 5-K+1 doC=0 then
MasSum[I,0]:=StrToInt(StringGrid1.Cells[I,1])MasSum[I,0]:=StrToInt((Form2.Components[C-1]
as TStringGrid).Cells[I,1]);[0,J]:=StrToInt(StringGrid1.Cells[J,P]);
(Form2.Components[C] as
TStringGrid).Cells[I,0]:=IntToStr(MasSum[I,0]);
(Form2.Components[C] as
TStringGrid).Cells[0,J]:=IntToStr(MasSum[0,J]);();
(Form2.Components[C] as
TStringGrid).Cells[I,J]:=IntToStr(MasSum[I,J]);
(Form2.Components[C+1] as
TStringGrid).Cells[I,0]:=IntToStr(K-1);;:=K+1;;();I:=1 to 5 do
(Form2.Components[C+1] as
TStringGrid).Cells[I,1]:=IntToStr(MasMax[I,1]);
(Form2.Components[C+1] as
TStringGrid).Cells[I,2]:=inttostr(MasMax[I,2]);
(Form2.Components[C+1] as
TStringGrid).Cells[0,0]:='E';
(Form2.Components[C+1] as
TStringGrid).Cells[0,1]:='F'+IntToStr(P)+'(E)';
(Form2.Components[C+1] as
TStringGrid).Cells[0,2]:='X'+IntToStr(P)+'(E)';;:=C+2;:=P+1;;.StringGrid1.Invalidate;
// z(max).LabeledEdit1.Text:='
'+Form2.StringGrid8.Cells[5,1];
// x5.LabeledEdit6.Text:='
'+Form2.StringGrid8.Cells[5,2];
// x4.LabeledEdit5.Text:='
'+Form2.StringGrid6.Cells[4-(Form2.LabeledEdit6.Text)+1,2];
// x3.LabeledEdit4.Text:='
'+Form2.StringGrid4.Cells[4-(Form2.LabeledEdit6.Text)-StrToInt(Form2.LabeledEdit5.Text)+1,2];
// x2.LabeledEdit3.Text:='
'+Form2.StringGrid2.Cells[4-(Form2.LabeledEdit6.Text)-(Form2.LabeledEdit5.Text)-(Form2.LabeledEdit4.Text)+1,2];
// x1.LabeledEdit2.Text:='
'+IntToStr(4-(Form2.LabeledEdit6.Text)-(Form2.LabeledEdit5.Text)-(Form2.LabeledEdit4.Text)-(Form2.LabeledEdit3.Text));;
// Кнопка "Решить"TForm1.N2Click(Sender:
TObject);.Button2.Click;;
// Кнопка "Мой
пример"TForm1.N3Click(Sender: TObject);:Integer;StringGrid1 doI:=1 to 5 do
Cells[1,I]:=IntToStr(0);[2,1]:='5'; Cells[4,1]:='11';[2,2]:='3';
Cells[4,2]:='5';[2,3]:='7'; Cells[4,3]:='10';[2,4]:='4';
Cells[4,4]:='12';[2,5]:='3'; Cells[4,5]:='7';[3,1]:='9';
Cells[5,1]:='12';[3,2]:='4'; Cells[5,2]:='10';[3,3]:='9';
Cells[5,3]:='11';[3,4]:='8'; Cells[5,4]:='14';[3,5]:='5'; Cells[5,5]:='9';;;
// Кнопка
"Сброс"TForm1.N4Click(Sender: TObject);.Button1.Click;;
// Кнопка
"Выход"TForm1.N5Click(Sender: TObject);.Close;.Close;;
// О программеTForm1.N6Click(Sender:
TObject);
ShowMessage('Программа
предназначена для решения задачи' + chr(13)
+
'максимизации капатиловложений' + chr(13)
+ chr(13) +
'Разработал студент группы 10п-1' + chr(13)
+
'Урусов Алексей' + chr(13)
+ chr(13) +
'УАвиаК, 2013г.');
end;.Unit2;, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, Grids, Math, StdCtrls, ExtCtrls,
jpeg, ColorGrd, Buttons,;= class(TForm): TStringGrid;: TStringGrid;:
TStringGrid;: TStringGrid;: TStringGrid;: TStringGrid;: TStringGrid;:
TStringGrid;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;: TLabeledEdit;:
TLabeledEdit;: TLabeledEdit;: TStaticText;: TStaticText;: TStaticText;:
TStaticText;SG_OnDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
State: TGridDrawState);FormCreate(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm2;
Unit1;
{$R
*.dfm}
// Процедура для закрашивание максимальных
элементов
// по найденным координатам
(Components[f] as
TStringGrid).Canvas.Brush.Color:=clRed;;
(Components[f] as
TStringGrid).Canvas.FillRect(Rect);
(Components[f] as
TStringGrid).Canvas.TextOut(Rect.Left, Rect.Top, (Components[f] as
TStringGrid).Cells[ACol, ARow]);;:=N+5;:=F+2;;
end;
// Процедруа для смещений фокуса (выделения)
procedure TForm2.FormCreate(Sender:
TObject);:TGridRect;:Integer;myRect do begin:=-1;:=-1;:=-1;:=-1;;C:=1 to 8 do
(Form2.FindComponent('StringGrid'+IntToStr(C))
as TStringGrid).Selection:=myRect;
end;.
Похожие работы на - Методы динамического программирования