0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 34
1

Создание имитационной модели бензоколонки

20.01.2015, 01:37. Показов 1473. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Общий вид стартовой формы показан на рис. 1. Видно, что она включает ряд объектов управления, среди которых имеются три командные кнопки «Расчет», «Очистка» и «Выход».
После нажатия кнопки «Расчет» производится вычисление показателя эффективности при заданных исходных данных. При нажатии кнопки «Очистка» производится очищение текстового поля для вывода результата моделирования. Затем может быть произведено изменение исходных данных и проведение новых расчетов с использованием кнопки «Расчет».
При нажатии кнопки «Выход» работа программы прекращается.

Модель СМО с 1, 2, 3


С кнопкой «Расчет» связана процедура, которая выполняет следующие действия
Оператор 1 осуществляет перевод исходных данных из символьной формы в числовую.
Оператор 2 обнуляет глобальную переменную SNo6c — суммарное число обслуженных заявок.
Оператор 3 начинает циклический перебор случайных реализаций.
Оператор 4 в начале каждой случайной реализации обнуляет локальные переменные, к которым относятся: число заявок, поступающих в одной реализации Nz, число обслуженных заявок в каждом из имеющихся каналов Nобс.j (j= 1,Nk), начальные значения времени освобождения каналов Токj (J = 1,Nk).
Оператор 5 обращается к автономной процедуре формирования потока заявок. В результате работы этой процедуры формируется массив значений времен:
[Tз(1), Tз(2), Tз(3)… Tз(N3i)]
где N3i — общее число поступивших заявок для i-й случайной реализации;
Оператор 6 является началом цикла обслуживания заявок.
Оператор 7 производит выбор номера канала, который характеризуется наименьшим значением времени освобождения от обслуживания заявки.
Оператор 8 обращается к автономной процедуре обслуживания очередной заявки. На выходе этой процедуры определяется число обслуженных заявок в выбранном канале No6c(Jmin).
Оператор 9 служит для расчета суммарного числа обслуженных заявок во всех каналах и всех случайных реализациях.
После окончания цикла случайных реализаций оператор 10 выводит на экран значение выходной переменной — средней относительной прибыли по формуле
Сотн.ср = Nобс -1 + 0,5Nк + 0,5Nк^2

Прошу помочь разобраться с данной программкой, за ранее большое спасибо всем откликнувшимся!! С делфи столкнулась в первый раз, поэтому наверное много ошибок

вот, что у меня получилось:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
 
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
 
 
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
 
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
 
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 
Edit1.Text:='1';
Edit2.Text:='5';
Edit3.Text:='9';
Edit4.Text:='12';
Edit5.Text:='30';
Edit6.Text:='60';
Edit7.Text:='5000';
Edit8.Text:='0';
Edit9.Text:='0';
Edit10.Text:='0';
 
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
 
var Tzcped, Tobs,DT,TogMax,Tkon,T,z,Tk,SNobc,SNz,CotnCp:real;
N,j,i,Nr,p,Cont,f,w,Nz,e,u,l,min:integer;
 
Tz:array[1..1000]of real;
TOK:array[1..3] of real;
Nobc:array[1..3] of real;
 
       begin
         Randomize;
         Nz:=StrToInt(Edit1.Text);
         Tzcped:=StrToFloat(Edit2.Text);
         Tobs:=StrToFloat(Edit3.Text);
         DT:=StrToFloat(Edit4.Text);
         TogMax:=StrToFloat(Edit5.Text);
         Tkon:=StrToFloat(Edit6.Text);
         Nr:=StrToInt(Edit7.Text);
//находится время обслуживания заявки и заносится в массив
        For i:=1 to Nr do
          begin
          SNz:=0;
          SNobc:=0;
          T:=0;
      while T<Tkon do
            begin
            z:=1-random;
            DT:=-Tzcped*Ln(z);
            T:=T+DT;
        if T<Tkon then
                    begin
                    N:=N+1;
                    Tz[N]:=T
      end
      else
    break;
  end;
     Nz:=0;
     for p:=1 to Nz do Nobc[p]:=0;
     for l:=1 to Nz do  TOK[l]:=0;
 
             begin
             for f:=1 to Nz do
              begin
         // выбор канала
              min:=1;
              TOK[min]:= TOK[1];
              for u:=2 to Nz do
          if TOK[u]<TOK[min]  then
              TOK[min]:=TOK[u];
              min:=u;
              Tk:=0;
              end;
             SNobc:=SNobc+Nobc[1]+Nobc[2]+Nobc[3];
 //определение минимального времени ожидания на одном из каналов
                for j:=1 to N do
                  begin
                    if Tz[j]<TOK[min] then
                    if TOK[min]-Tz[j]>TogMax then continue else Tz[j]:=TOK[min];
                  z:=random;
                  Tk:=Tz[j]+ Tobs+DT*(z-0.5);
                  if Tk>Tkon then
                        begin
                        TOK[min]:=Tkon; break;
                  end;
 
               Nobc[j]:=Nobc[j]+1;
               TOK[min]:=Tk;
            end;
         end;
       SNz:=SNz+N;
    //SNobc:=SNobc+Nobc;
    Edit8.Text:=IntToStr(N);
    //Edit9.Text:=IntToStr(Nobc[j]);
   // write(Nobc[j],'');
    //readln;
 CotnCp:=(SNobc/Nr)-1+0.5*SNz+0.5*SNz*SNz;
  Edit10.Text:=FloatToStr(CotnCp);
 end;
end;
 
end.
Добавлено через 20 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label21: TLabel;
    Label22: TLabel;
    Edit11: TEdit;
    Edit12: TEdit;
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text:='1';
Edit2.Text:='5';
Edit3.Text:='9';
Edit4.Text:='12';
Edit5.Text:='30';
Edit6.Text:='60';
Edit7.Text:='5000';
Edit8.Text:='0';
Edit9.Text:='0';
Edit10.Text:='0';
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var Tzcped, Tobs,DT,TogMax,Tkon,T,z,Tk,SNobc,SNz,CotnCp:real;
N,j,i,Nobc,Nr,q,f,w,Nz,e,u,l,min:integer;
Tz:array[1..1000]of real;
TOK:array[1..5] of real;
begin
Randomize;
Nz:=StrToInt(Edit1.Text);
Tzcped:=StrToFloat(Edit2.Text);
Tobs:=StrToFloat(Edit3.Text);
DT:=StrToFloat(Edit4.Text);
TogMax:=StrToFloat(Edit5.Text);
Tkon:=StrToFloat(Edit6.Text);
Nr:=StrToInt(Edit7.Text);
For i:=1 to Nr do
begin
SNz:=0;
SNobc:=0;
T:=0;
N:=0;
while T<Tkon do
  begin
  z:=1-random;
  DT:=-Tzcped*Ln(z);
  T:=T+DT;
  if T<Tkon then
    begin
    N:=N+1;
    Tz[N]:=T
    end
    else
    break;
  end;
 Nobc:=0;
 for l:=1 to Nz do  TOK[l]:=0;
 for e:=1 to N do
  begin
for f:=1 to Nz do
begin
  min:=1;
  for u:=2 to Nz do
  if TOK[u]<TOK[min]  then
  min:=u;
  Tk:=0;
for j:=1 to N do
  begin
  if Tz[j]<TOK[min] then
        if TOK[min]-Tz[j]>TogMax then continue else Tz[j]:=TOK[min];
  z:=random;
   Tk:=Tz[j]+ Tobs+DT*(z-0.5);
       if Tk>Tkon then
       begin
       TOK[min]:=Tkon; break;
       end;
 
    Nobc:=Nobc+1;
    TOK[min]:=Tk;
    end;
    q:=q+N;
    w:=w+Nobc;
 
end;
    SNz:=q/Nr;
    SNobc:=w/Nr;
    Edit8.Text:=IntToStr(N);
    Edit9.Text:=IntToStr(Nobc);
 CotnCp:=SNobc-1+0.5*SNz+0.5*SNz*SNz;
  Edit10.Text:=FloatToStr(CotnCp);
  Edit11.Text:= FloatToStr(SNobc);
  Edit12.Text:= FloatToStr(SNz);
 end;
end;
end;
end.
Для одного канала все работает нормально, вот этот код. Код, который выше пыталась сделать для нескольких каналов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.01.2015, 01:37
Ответы с готовыми решениями:

Создание простой модели атома
Помогите, пожалуйста, написать програмку - создание простой модели атома в Delphi. Очень-очень...

Создание управляемой анимационной модели
Здравствуйте. Нужно создать управляемую анимационную модель. Подскажите, что можно сделать...

Создание модели игры в поддавки
Создание модели игры в поддавки (поле 4х6, по 4 фишки). Участвуют 4 белых, 4 черных шашек. В начале...

Создание модели остывания металлической пластины
Создание модели остывания металлической пластины в определенный момент времени. Первоначальная...

0
20.01.2015, 01:37
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2015, 01:37
Помогаю со студенческими работами здесь

Модификация имитационной модели технологического процесса
В общем проблема вот в чем. В Симулинке была сделана имитационная модель технологического процесса,...

Составить блок-схему имитационной модели
Прошу помочь. Нужно срочно для сдачи, а как решить не пойму В банк приходят клиенты с...

Решение двухфакторной имитационной модели на языке Pascal
http://s004.***********/i205/1010/dc/1b0df2be42c7.jpg как это будет выглядеть на паскале? ...

Построение имитационной модели системы массового обслуживания
Здравствуйте, подскажите пожалуйста в верном ли направлении я двигаюсь, у меня такая вот задача: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
Как добавить пустую директорию в репозиторий Git
bytestream 22.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо сохранить пустую директорию в репозитории. Данная задача может показаться простой на первый. . .
Как валидировать адрес email в JavaScript
bytestream 22.01.2025
JavaScript, как основной язык веб-разработки, предоставляет разработчикам множество инструментов для реализации эффективной валидации email-адресов. От простых встроенных решений до сложных. . .
Как заменить все вхождения подстроки в JavaScript
bytestream 22.01.2025
Строки в JavaScript представляют собой неизменяемые последовательности символов, что делает их обработку особенно интересной с точки зрения оптимизации и выбора правильного подхода к решению задач. . . .
Управление версиями пакетов в Node.js. В чем разница между тильдой (~) и кареткой (^) в package.json
bytestream 22.01.2025
В современной разработке программного обеспечения управление версиями пакетов играет ключевую роль в обеспечении стабильности и надежности проектов. Node. js, как одна из самых популярных платформ для. . .
Аутентификация на сайте с помощью формы
bytestream 21.01.2025
В современном цифровом мире безопасная аутентификация становится краеугольным камнем защиты веб-приложений и пользовательских данных. Каждый день миллионы людей используют различные онлайн-сервисы,. . .
Как получить индекс в цикле for в Python
bytestream 21.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
Как определить адрес, из которого локальный репозиторий Git был клонирован
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса. При работе с Git разработчики часто сталкиваются с необходимостью. . .
Какая разница между операторами == и === в сравнениях в JavaScript
bytestream 21.01.2025
В мире веб-разработки JavaScript занимает особое место как динамический язык программирования, предоставляющий разработчикам широкий набор инструментов для создания интерактивных веб-приложений. . . .
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
Ошибки стиральных машин
bt_guru 21.01.2025
Современные стиральные машины представляют собой сложные электронные устройства, оснащенные множеством датчиков и систем контроля. Они способны самостоятельно определять вес загруженного белья,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru