Руководство пользователя к разработанному решению
Программа "Максимизации капиталовложений" предназначена для вычисления максимально возможного суммарного прироста прибыли всех предприятий (субъектов), прироста прибыли каждого предприятия, а также количества ресурсов, которые необходимо выделить каждому предприятию, чтобы суммарный прирост прибыли был максимальным.
Для работоспособности данного приложения вы должны обладать следующим перечнем программных и технических средств:
· ПК на базе процессора Intel, AMD;
· Оперативная память 128 МБ;
· Видео: совместимая VGA видеокарта;
· Операционная система Windows XP/Windows7;
· Клавиатура, мышь;
· Microsoft.NET Framework 3.0;
Для начала работы с программой запустите файл RZMK.exe. Далее вы должны заполнить пустые поля на форме данными.
Рисунок 17 «Главная форма приложения»
Для проведения операций над введенными данными необходимо воспользоваться кнопками (Рис.19):
- Результат - программа вычисляет и выводит результат.
- Сброс - очищает поля от введенных значений и ответа.
- Файл - Пример - автоматически заполняет поля вложения ресурсов и их распределения тестовыми значениями.
- О программе - вызывает информацию о программе и его разработчике
Рисунок 19 "Кнопки"
После нажатия кнопки "Рассчитать" программа выдает результаты максимального суммарного прироста прибыли, прирост прибыли на каждом предприятии и количество необходимых ресурсов (Рис.20), .
Рисунок 20 "Максимальный прирост прибыли и прирост прибыли и выделенные ресурсы на предприятиях "
Алгоритм решений унифицированной задачи
Начало |
Выбор действия |
Выбор действия |
Конец |
Ввод данных |
Помощь |
Тестовое задание |
Решение |
Вывод результата |
Рисунок 24 «Алгоритм решения унифицировнанной задачи»
Заключение
В ходе разработки курсового проекта мной была рассмотрена и изучена задача о максимизации капиталовложений, что такое задача о максимизации капиталовложений и где она применяется.
Список литературы
1. Кузнецов А.М., Сакович В.А, Холод И.И. Высшая математика. Математическое программирование. Минск, Высшая школа, 2001.
2. Федосеев В.В. и др. Экономико-математические методы и прикладные модели: Учебное пособие для ВУЗов. – М:. Юнити, 2002.
3. Шикин Е.А., Чхартишвили А.Г. Математические методы и модели в управлении – М:. Дело 2000.
Приложение
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Math, ExtCtrls, Menus, ShellAPI;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
MasSum:Array[0..5,0..5] of Integer; // Массив для хранение суммы
MasMax:Array[1..5,1..5] of Integer; // Массив для хранение максимальных чисел
Cells:Array[0..20] of TPoint; // Массив точек (записи координат максимальных чисел)
L:Integer;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
myRect: TGridRect;
I:Integer;
begin
// Смещаем фокус (выделение)
with myRect do
begin
Left:=-1;
Top:=-1;
Right:=-1;
Bottom:=-1;
end;
StringGrid1.Selection:=myRect;
// Заполняем заголовки таблицы
with StringGrid1 do
begin
Cells[0,0]:='U';
for I:=1 to 5 do
begin
Cells[0,I]:='L'+IntToStr(I)+'(U)';
Cells[I,0]:=IntToStr(I-1);
end;
end;
end;
// Процедура для подсчета суммы
procedure Sum();
var
I, J: Integer;
begin
For I:=1 to 5 do
For J:=1 to 5 do
MasSum[I,J]:=MasSum[I,0] + MasSum[0,J];
end;
// Процедура для нахождние максимальных чисел (диагонали)
// и записи координат в массив
procedure Max();
var
I,J,iMax,jMax:Integer;
C:TPoint;
begin
iMax:=0; jMax:=0;
For I:=5 downto 1 do
begin
MasMax[I,1]:=MasSum[1,I];
For J:=I downto 1 do
If MasSum[I-J+1,J] >= MasMax[I,1] then
begin
MasMax[I,1]:=MasSum[I-J+1,J];
iMax:=I-J+1;
jMax:=J;
MasMax[I,2]:=J-1; // В какой строке найдено максимальное знач.
end;
C.X:=jMax; C.Y:=iMax; // Координаты максимальных значений
Cells[L]:=C;
L:=L+1;
end;
end;
// Сбрасываем введенные нами значения
procedure TForm1.Button1Click(Sender: TObject);
var
I,J: Integer;
begin
For I:=1 to 5 do
For J:=1 to 5 do
Form1.StringGrid1.Cells[I,J]:='';
Form2.Close;
end;
// Процедура подсчета итераций
// Вывод результата в таблицы
procedure TForm1.Button2Click(Sender: TObject);
var
I,J,K,C,P:Integer;
begin
Form2.Show;
L:=0; C:=0; P:=2;
while C<=6 do
begin
K:=1;
For I:=1 to 5-K+1 do
begin
For J:=1 to 5-K+1 do
begin
If C=0 then MasSum[I,0]:=StrToInt(StringGrid1.Cells[I,1])
else MasSum[I,0]:=StrToInt((Form2.Components[C-1] as TStringGrid).Cells[I,1]);
MasSum[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]);
Sum();
(Form2.Components[C] as TStringGrid).Cells[I,J]:=IntToStr(MasSum[I,J]);
(Form2.Components[C+1] as TStringGrid).Cells[I,0]:=IntToStr(K-1);
end;
K:=K+1;
end;
Max();
for I:=1 to 5 do
begin
(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)';
end;
C:=C+2;
P:=P+1;
end;
Form2.StringGrid1.Invalidate;
// z(max)
Form2.LabeledEdit1.Text:=' '+Form2.StringGrid8.Cells[5,1];
// x5
Form2.LabeledEdit6.Text:=' '+Form2.StringGrid8.Cells[5,2];
// x4
Form2.LabeledEdit5.Text:=' '+Form2.StringGrid6.Cells[4-
StrToInt(Form2.LabeledEdit6.Text)+1,2];
// x3
Form2.LabeledEdit4.Text:=' '+Form2.StringGrid4.Cells[4-
StrToInt(Form2.LabeledEdit6.Text)-StrToInt(Form2.LabeledEdit5.Text)+1,2];
// x2
Form2.LabeledEdit3.Text:=' '+Form2.StringGrid2.Cells[4-
StrToInt(Form2.LabeledEdit6.Text)-
StrToInt(Form2.LabeledEdit5.Text)-
StrToInt(Form2.LabeledEdit4.Text)+1,2];
// x1
Form2.LabeledEdit2.Text:=' '+IntToStr(4-
StrToInt(Form2.LabeledEdit6.Text)-
StrToInt(Form2.LabeledEdit5.Text)-
StrToInt(Form2.LabeledEdit4.Text)-
StrToInt(Form2.LabeledEdit3.Text));
end;
// Кнопка "Решить"
procedure TForm1.N2Click(Sender: TObject);
begin
Form1.Button2.Click;
end;
// Кнопка "Мой пример"
procedure TForm1.N3Click(Sender: TObject);
var
I:Integer;
begin
with StringGrid1 do
begin
for I:=1 to 5 do Cells[1,I]:=IntToStr(0);
Cells[2,1]:='5'; Cells[4,1]:='11';
Cells[2,2]:='3'; Cells[4,2]:='5';
Cells[2,3]:='7'; Cells[4,3]:='10';
Cells[2,4]:='4'; Cells[4,4]:='12';
Cells[2,5]:='3'; Cells[4,5]:='7';
Cells[3,1]:='9'; Cells[5,1]:='12';
Cells[3,2]:='4'; Cells[5,2]:='10';
Cells[3,3]:='9'; Cells[5,3]:='11';
Cells[3,4]:='8'; Cells[5,4]:='14';
Cells[3,5]:='5'; Cells[5,5]:='9';
end;
end;
// Кнопка "Сброс"
procedure TForm1.N4Click(Sender: TObject);
begin
Form1.Button1.Click;
end;
// Кнопка "Выход"
procedure TForm1.N5Click(Sender: TObject);
begin
Form1.Close;
Form2.Close;
end;
// О программе
procedure TForm1.N6Click(Sender: TObject);
begin
ShowMessage('Программа предназначена для решения задачи' + chr(13) +
'максимизации капатиловложений' + chr(13) + chr(13) +
'Разработал студент группы 10п-1' + chr(13) +
'Урусов Алексей' + chr(13) + chr(13) +
'УАвиаК, 2013г.');
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, Math, StdCtrls, ExtCtrls, jpeg, ColorGrd, Buttons,
ImgList;
type
TForm2 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
StringGrid4: TStringGrid;
StringGrid5: TStringGrid;
StringGrid6: TStringGrid;
StringGrid7: TStringGrid;
StringGrid8: TStringGrid;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
LabeledEdit4: TLabeledEdit;
LabeledEdit5: TLabeledEdit;
LabeledEdit6: TLabeledEdit;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
StaticText4: TStaticText;
procedure SG_OnDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
// Процедура для закрашивание максимальных элементов
// по найденным координатам
procedure TForm2.SG_OnDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
I,F,N:Integer;
Change:Boolean;
begin
F:=0; N:=0;
while F<=6 do
begin
Change:=False;
For I:=N to N+4 do
begin
If (ACol = Cells[i].Y) and (ARow = Cells[i].X) then
begin
Change:=True;
Break
end;
end;
If Change then
begin
(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]);
end;
N:=N+5;
F:=F+2;
end;
end;
// Процедруа для смещений фокуса (выделения)
procedure TForm2.FormCreate(Sender: TObject);
var
myRect:TGridRect;
C:Integer;
begin
with myRect do begin
Left:=-1;
Top:=-1;
Right:=-1;
Bottom:=-1;
end;
for C:=1 to 8 do
(Form2.FindComponent('StringGrid'+IntToStr(C)) as TStringGrid).Selection:=myRect;
end;
end.