Инструментальная среда имитационного моделирования
Рассмотрение формальных моделей распределенных систем. Обзор ресурсно-управляемой сети временных автоматов. Обоснование выбора программных и аппаратных средств. Соответствие графической визуализации текущего состояния модели ее структурному представлению.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 07.03.2016 |
Размер файла | 2,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
3.Выполнение программы
Использование программы требует базовых знаний работы с компьютером и знаний математики, а также базовые знания в области сетей Петри.
3.1 Моделирование
Для начала моделирования следует загрузить модель (файл -> открыть -> WanderingPhilosofers.rda) или выбрать демомодель (файл-> загрузить демо модель). После загрузки демомодели главная форма программы будет иметь следующий вид:
Рисунок 1. Главная форма TRDA Tool
Как видно, в левой панели отражается структура модели: в вершинах системной сети отражены агенты и их состояния. В правой панели видны активные переходы системной сети. Так можно выбрать вручную нужный переход путем двойного нажатия, либо запустить недетерминированный выбор перехода (либо цикл переходов). После выбора перехода в правой части формы, в левой части можно наблюдать изменение разметки системной сети.
Модель можно так же выполнять и в цикле по времени (условному внутреннему времени моделирования). Для этого надо установить количество моментов условного времени в нижней части правой панели и нажать кнопку «время+». Затем, после автоматического выполнения шагов моделирования, по достижении системой заданного момента условного времени отобразится новая разметка системной сети. В случае, если после выполнения моделирования по времени, требуется вернуть систему обратно в режим пошагового моделирования, следует нажать кнопку «по шагам».
3.2 Временная диаграмма
После выполнения некоторого количества переходов можно просмотреть временную диаграмму.(Рисунок2) Для этого нужно нажать кнопку «Временная диаграмма» в правой панели или поставить чек-бокс «Диаграмма».
Рисунок 2. Временная диаграмма модели Обедающих философов, гуляющих в парке
На временной диаграмме по горизонтали отложены моменты времени, а по вертикали - сложные агенты. Цветные дорожки соответствуют временной длительности состояний, в которых находились агенты за время выполнения модели. Снизу в цветных квадратиках приводится расшифровка состояний.
3.3 Статистический анализ
Для просмотра статической аналитической информации, а так же информации о поведенческих свойствах следует нажать кнопку «Результаты анализа».
Рисунок 3. Результаты анализа
Более подробное описание аналитических возможностей TRDA Tool приведено в основной части Пояснительной записки.
3.4 Визуализация
Для просмотра графической визуализации системной и автоматной сети следует выставить галочки в полях Системная сеть, Автоматная сеть. Визуализироваться будут только те автоматные сети, для соответствующих агентов которых выставлены знаки * в структурном виде отображения текущей разметки модели (левая часть главной формы). Знак * выставляется пользователем двойным кликом по агенту в левой части главной формы. Соответствующие представления автоматной и системной сети для демомодели приведены на Рисунках 4 и 5.
Рисунок 4. Системная сеть (фрагмент)
Рисунок 5. Выбор агента p1 для отображения на форме «Автоматная сеть»
Рисунок 6. Автоматная сеть агента p1 типа philosopher.
Приложение 9
Класс ChartInfo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Automata {
public class ChartInfo {
public double x_max;
public List<string> positions = new List<string>();
public List<string> pos_ids = new List<string>();
public List<string> states = new List<string>();
public List<string> state_ids = new List<string>();
public List<ChartItem> items = new List<ChartItem>();
public void add_position(string i_title) {
add_position(i_title, i_title);
}
public void add_position(string i_title, string i_id) {
positions.Add(i_title);
pos_ids.Add(i_id);
}
public void add_state(string i_title) {
add_state(i_title, i_title);
}
public void add_state(string i_title, string i_id) {
states.Add(i_title);
state_ids.Add(i_id);
}
public void add_item(string i_pos, string i_state, double i_from, double i_to) {
int pos = pos_ids.IndexOf(i_pos);
if(pos == -1) {
pos = positions.Count;
add_position(i_pos);
}
int state = state_ids.IndexOf(i_state);
if(state == -1) {
state = states.Count;
add_state(i_state);
}
add_item(pos, state, i_from, i_to);
}
public void add_item(int i_pos, int i_state, double i_from, double i_to) {
items.Add(new ChartItem(i_pos,i_state,i_from,i_to));
x_max = Math.Max(x_max,i_to);
}
}
public struct ChartItem {
public int position;
public int state;
public double x_from;
public double x_to;
public ChartItem(int i_pos, int i_state, double i_from, double i_to) {
state = i_state;
position = i_pos;
x_from = i_from;
x_to = i_to;
}
}
Приложение 10
Form_xml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Xml;
namespace Automata {
partial class Form1: Form {
static private String get_config_fname() {
String ss = Application.ExecutablePath;
String
dir = Path.GetDirectoryName(ss)
, fname = Path.GetFileName(ss)
, fname_woe = Path.GetFileNameWithoutExtension(ss)
;
String path = dir + "\\" + fname_woe + ".xml";
//
log("ss=" + ss);
log("dir=" + Path.GetDirectoryName(ss));
log("fname=" + Path.GetFileName(ss));
log("fname_woe=" + Path.GetFileNameWithoutExtension(ss));
log("fname=" + fname);
//
return path;
}
private void config_save() {
XmlDocument doc = new XmlDocument();
XmlElement e_root = doc.CreateElement("root");
doc.AppendChild(e_root);
//
/*
XmlElement e_main = doc.CreateElement("form_main");
Lib.form_attr_write(e_main, this);
e_root.AppendChild(e_main);
*/
//
XmlElement e_pars = doc.CreateElement("pars");
e_pars.SetAttribute("page_length", "" + Model.page_length);
e_pars.SetAttribute("gap", "" + Model.gap);
e_pars.SetAttribute("title_length", "" + Model.title_length);
e_pars.SetAttribute("loop_count", "" + loop_count);
e_root.AppendChild(e_pars);
//
String path = get_config_fname();
doc.Save(path);
}
public void show_main_size() {
log("main top=" + this.Top + " left=" + this.Left
+ " width=" + this.Width + " height=" + this.Height
);
}
private void config_restore() {
//
String path = get_config_fname();
XmlDocument doc = new XmlDocument();
XmlElement e_root = null;
try {
doc.Load(path);
e_root = doc.DocumentElement;
log("docElement name=" + e_root.Name);
log("do read_config");
show_main_size();
/*
foreach(XmlElement e in e_root.GetElementsByTagName("form_main")) {
Lib.form_attr_read(e, this);
break;
}
*/
foreach(XmlElement e in e_root.GetElementsByTagName("pars")) {
loop_count = Lib.nvl_int(e.GetAttribute("loop_count"), loop_count);
Model.page_length = Lib.nvl_int(e.GetAttribute("page_length"), Model.page_length);
Model.gap = Lib.nvl_int(e.GetAttribute("gap"), Model.gap);
Model.title_length = Lib.nvl_int(e.GetAttribute("title_length"), Model.title_length);
break;
}
show_main_size();
} catch(Exception e) {
Lib.alarm("exp=" + e.Message);
}
}
}
}
Приложение 11
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Automata {
public enum VisualNet { system_net, automata_net };
public partial class Form1 : Form {
static Form1 frmMain;
static FormLog frmLog;
static bool is_logging = false;
static bool is_visible = false;
static bool is_autonet = false;
static bool only_trace_logging = false;
static bool is_chart_visible = false;
static string build_id = "67 20.05.2013";
void log_only_trace(bool only_trace) {
only_trace_logging = only_trace;
}
public static void log_t(string ss) {
log(ss + "$trc");
}
public static void log(string ss) {
if (!is_logging) return;
if(only_trace_logging) {
if(!ss.Contains("$trc")){
return;
}
}
string new_ss = ss.Replace("$trc", "");
check_log_form();
frmLog.log(new_ss);
}
public void log_visible(bool i_visible) {
check_log_form();
is_logging = i_visible;
frmLog.Visible = i_visible;
cb_Log.Checked = i_visible;
}
public void chart_visible(bool i_visible) {
is_chart_visible = i_visible;
cb_chart.Checked = is_chart_visible;
if (is_chart_visible) {
show_chart();
}else{
if (frmChart != null) {
frmChart.Visible = false;
}
}
}
static void check_log_form() {
if (frmLog == null) {
frmLog = new FormLog(frmMain);
}
if (frmLog.IsDisposed) {
frmLog = new FormLog(frmMain);
}
}
/*
static void check_visual_form2() {
if(frm_viz == null) {
frm_viz = new FormVisual(frmMain);
}
if(frm_viz.IsDisposed) {
frm_viz = new FormVisual(frmMain);
}
}
*/
void show_log() {
log_visible(true);
cb_Log.Checked = true;
frmLog.Focus();
}
public Form1() {
InitializeComponent();
init();
frmMain = this;
this.Text = ml["form1_title"];
}
private void init(){
//config_restore();
status("Welcome");
// numericUpDown2.Value = loop_count;
// btn_Loop.Text = loop_count + " шагов";
btn_Loop.Enabled = false;
btn_exec.Enabled = false;
set_text();
}
static MultyLanguage ml = MultyLanguage.get_MultyLanguage();
void set_text() {
this.Text = ml["title_Form1"];
cb_visual.Text = ml["title_SystemNet"];
cb_autonet.Text = ml["title_AutomataNet"];
btn_chart.Text = ml.msg_btn_chart.Str; // "Time chart";
btn_Trace.Text = ml.msg_btn_trace.Str; //"Трассировка";
btn_rezult.Text = ml.msg_btn_rezult.Str; //Результаты анализа
cb_chart.Text = ml.cb_chart.Str; //Диаграмма
cb_Log.Text = ml.cb_log.Str; //Лог
cb_Trace.Text = ml.cb_trace.Str;//Только трассировка
cb_Marking.Text = ml.cb_marking.Str;//Достижимость
cb_stop.Text = ml.cb_stop.Str;//Пауза при нахождении
cb_Finiteness.Text = ml.cb_Finiteness.Str;//Ограниченность
btn_exec.Text = ml.btn_exec.Str;//1Шаг
btn_Loop.Text = ml.btn_Loop.Str;//шагов
btn_steps.Text = ml.btn_steps.Str;//По шагам
label1.Text = ml.label1.Str;//Сделать
btn_time.Text = ml.btn_time.Str;//время+
fileToolStripMenuItem.Text = ml.menu_file.Str;//Файл
openToolStripMenuItem.Text = ml.openToolStripMenuItem.Str;//Открыть
загрузитьДемоМодельToolStripMenuItem.Text = ml.загрузитьДемоМодельToolStripMenuItem.Str;// Загрузить демо модель
saveToolStripMenuItem.Text = ml.saveToolStripMenuItem.Str;//Сохранить
выходToolStripMenuItem.Text = ml.выходToolStripMenuItem.Str;//Выход
справкаToolStripMenuItem.Text = ml.справкаToolStripMenuItem.Str;//Справка
оПрограммеToolStripMenuItem.Text = ml.оПрограммеToolStripMenuItem.Str;//О программе
языкОписанияМоделиToolStripMenuItem.Text = ml.языкОписанияМоделиToolStripMenuItem.Str;//Язык описани модели
//cb_chart.Text = ml["cb_chart"]; // Диаграмма
// cb_Log.Text = ml["cb_log"]; // Журнал
// cb_Trace.Text = ml["cb_trace"]; // Only Trace
//cb_Marking.Text = ml["cb_marking"]; // Достижимость
// cb_stop.Text = ml["cb_stop"]; // Пауза при нахождении
//cb_Finiteness.Text = ml["cb_finiteness "]; //Ограниченность
}
private Model m;
void init_model() {
if(m != null) {
if(!confirm(ml["q_delete_model"]/*"Удалить текущую модель?"*/)) return;
}
try {
m = Model.init();
trda_file_name = "demo.tda";
model_ready(ml["model_init"]/*"Модель инициализована"*/);
} catch (Exception e) {
status(ml["error:"]/*"ошибка: "*/ + e.Message);
}
}
private void status(String ss){
toolStripStatusLabel1.Text = ss;
log(ss);
}
void error(string i_ss) {
string ss = ml["***Error:"]/*"***Ошибка: "*/+i_ss;
log(ss);
status(ss);
}
bool multy_alarm = false;
List<String> alarm_string_list = new List<string>();
void multy_alarm_on() {
multy_alarm = true;
alarm_string_list = new List<string>();
}
void multy_alarm_off() {
multy_alarm = false;
if(alarm_string_list.Count > 0) {
string ss = "";
foreach(string s in alarm_string_list) {
ss += s+"\r\n";
}
alarm(ss);
}
}
void alarm(string ss) {
if(multy_alarm) {
alarm_string_list.Add(ss);
} else {
MessageBox.Show(ss, "Message");
}
}
Boolean confirm(string ss) {
DialogResult result =
MessageBox.Show(ss, "Confirm", MessageBoxButtons.YesNo);
return(result == DialogResult.Yes);
}
void model_not_ready() {
treeView1.Nodes.Clear();
lb_Vars.Items.Clear();
btn_exec.Enabled = false;
btn_Loop.Enabled = false;
btn_time.Enabled = false;
}
void model_ready(string ss) {
m.set_test_marking(cb_Marking.Checked);
m.set_test_stop(cb_stop.Checked);
m.set_test_bounds(cb_Finiteness.Checked);
m.set_test_lock(cb_lock.Checked);
status(ss);
next_step();
}
void next_step() {
next_step(false);
}
bool next_step(bool in_loop) {
if(m == null) {
error(ml["no_init_model"]/*"Не инициализирована модель"*/);
return false;
}
List<string> step_list = m.get_candidates();
// tb_StepInfo.Text = m.get_step_info();
bool rez = (step_list != null);
if (m.do_pause) rez = false;
if (in_loop) return rez;
status(m.get_step_info());
lb_Vars.Items.Clear();
if (step_list != null) {
foreach (String ss in step_list) {
lb_Vars.Items.Add(ss);
}
lb_Vars.SelectedIndex = m.get_champ_index();
btn_exec.Enabled = true;
btn_Loop.Enabled = true;
btn_time.Enabled = true;
} else {
btn_exec.Enabled = false;
btn_Loop.Enabled = false;
if(m.get_exec_mode() == Model.Exec_Mode_Stop) {
btn_time.Enabled = false;
} else {
btn_time.Enabled = true;
}
}
toolStripProgressBar1.Visible = false;
show_places();
if(is_chart_visible) show_chart();
if (is_visible) show_visual_system_net();
if(is_autonet) show_visual_automata_net();
return rez;
}
int loop_count = 50;
void exec_loop() {
if (m == null) {
error(ml["no_init_model"]/*"Не инициализирована модель"*/);
return;
}
log_visible(false);
status(ml["executing_cycle"]/*"Выполняется цикл ..."*/);
toolStripProgressBar1.Visible = true;
loop_count = (int)numericUpDown2.Value;
toolStripProgressBar1.Maximum = loop_count;
statusStrip1.Refresh();
int i = 0;
do {
i++;
if (i % 10 == 0) {
status(ml["executing_cycle"]/*"Выполняется цикл ..."*/);
toolStripProgressBar1.Value = i;
}
m.exec_step();
if (!next_step(true)) break;
// if (cb_Stop.Checked) break;
} while (i<loop_count);
next_step();
}
void exec_time(double delta_t) {
if(m == null) {
error(ml["no_init_model"]/*"Не инициализирована модель"*/);
return;
}
Double time_to = m.get_t_current() + delta_t;
m.time_limit_on(time_to);
status(ml["executing_cycle_to"]/*"Выполняется цикл до "*/+time_to+ "...");
do {
log_t("do next_step t_current=" + m.get_t_current());
if(!next_step(true)) break;
log_t("posle next_step t_current=" + m.get_t_current());
m.exec_step();
log_t("posle exec_step t_current=" + m.get_t_current());
} while(true);
status("Выполнился цикл до " + time_to + ".");
m.set_t_current(time_to);
next_step();
m.time_limit_off();
/*
status(m.get_step_info());
show_places();
*/
}
void go_by_steps() {
if(m == null) {
error(ml["no_init_model"]/*"Не инициализирована модель"*/);
return;
}
m.time_limit_off();
next_step();
}
void exec_1_step() {
int n = lb_Vars.SelectedIndex;
log("Выбран вариант " + n);
if(m==null){
error(ml["no_init_model"]/*"Не инициализирована модель"*/);
return;
}
m.exec_step(n);
// show_places();
next_step();
}
string get_inst_title(Instance inst) {
string ss = inst.con.name;
if (inst.is_visual) {
ss = "*" + ss;
}
if (inst.current_state != null) {
ss += ":" + inst.current_state.name;
}
if (inst.current_step != null) {
ss += "->" + inst.current_step.trans.name;
}
if (inst.con.type.initial_state != null) {
foreach (Register reg in inst.con.type.list_regs) {
//ss += " reg.name="+reg.name+" reg.id="+reg.id;
if (reg.reg_type == RegType.rt_timer) {
ss += "[" + reg.name + "=" + inst.registers[reg.id] + "]";
}
}
}
return ss;
}
void show_places(){
if (m == null)
{
status(ml["no_init_model"]/*"Модель не инициализирована: "*/ + DateTime.Now);
return;
}
treeView1.Visible = false;
treeView1.Nodes.Clear();
foreach (Place p in m.p_list){
TreeNode p_node = new TreeNode(p.name);
p_node.Tag = p;
treeView1.Nodes.Add(p_node);
int n = 0;
foreach (Instance inst in p.list_inst) {
n++;
/*
string ss = inst.con.name;
if (inst.is_visual) {
ss = "*" + ss;
}
if(inst.current_state != null){
ss += ":"+inst.current_state.name;
}
if(inst.current_step != null) {
ss += "->" + inst.current_step.trans.name;
}
if(inst.con.type.initial_state != null) {
foreach(Register reg in inst.con.type.list_regs) {
//ss += " reg.name="+reg.name+" reg.id="+reg.id;
if(reg.reg_type == RegType.rt_timer) {
ss += "["+reg.name + "=" + inst.registers[reg.id]+"]";
}
}
}
*/
string ss = get_inst_title(inst);
TreeNode i_node = new TreeNode(ss);
i_node.Tag = inst;
p_node.Nodes.Add(i_node);
}
if(!p.is_expanded) p_node.Text += "(total " + n + ")";
if(p.is_expanded) p_node.Expand();
}
//treeView1.ExpandAll();
treeView1.Visible = true;
}
void show_dump() {
if (m == null) {
status(ml["no_init_model"]/*"Модель не инициализирована: "*/ + DateTime.Now);
return;
}
FormRezult fr = new FormRezult("");
string ss = m.get_dump();
// log(ss);
fr.log(m.get_dump());
fr.Show();
}
void show_model(Model m) {
if(m == null) {
status(ml["no_init_model"]/*"Модель не инициализирована: "*/ +DateTime.Now);
treeView1.Nodes.Clear();
return;
}
//
treeView1.Nodes.Clear();
TreeNode root_node = new TreeNode(m.name);
treeView1.Nodes.Add(root_node);
//
TreeNode places_node = new TreeNode(ml["place"]/*"места"*/);
root_node.Nodes.Add(places_node);
foreach(Place p in m.p_list){
TreeNode place_node = places_node.Nodes.Add(p.name);
TreeNode place_in_node = place_node.Nodes.Add("arc_in");
foreach(Arc a in p.list_in) {
place_in_node.Nodes.Add("" + a.p.name + ":" + a.port.name);
}
TreeNode place_out_node = place_node.Nodes.Add("arc_out");
foreach(Arc a in p.list_out) {
place_out_node.Nodes.Add("" + a.p.name + ":" + a.port.name);
}
TreeNode place_inst_node = place_node.Nodes.Add("instances");
foreach(Instance i in p.list_inst) {
string st = "";
if(i.current_state != null) {
st = ":" + i.current_state.name;
}
place_inst_node.Nodes.Add("" + i.con.name+st);
}
}
TreeNode types_node = new TreeNode(ml["types"]/*"типы"*/);
root_node.Nodes.Add(types_node);
foreach(Type t in m.t_list) {
string init_state = "";
if(t.initial_state != null){
init_state = " (init="+t.initial_state.name+")";
}
TreeNode type_node = types_node.Nodes.Add(t.name+init_state);
//
TreeNode consts_node = new TreeNode(ml["constants"]/*"константы"*/);
type_node.Nodes.Add(consts_node);
foreach(Const c in t.list_const) {
TreeNode const_node = new TreeNode(c.name);
consts_node.Nodes.Add(const_node);
}
//
TreeNode vars_node = new TreeNode(ml["variables"]/*"переменные"*/);
type_node.Nodes.Add(vars_node);
foreach(Var v in t.list_var) {
TreeNode var_node = new TreeNode(v.name);
vars_node.Nodes.Add(var_node);
}
//
TreeNode ports_node = new TreeNode(ml["ports"]/*"порты"*/);
type_node.Nodes.Add(ports_node);
foreach(Port p in t.list_port) {
TreeNode port_node = new TreeNode(p.name);
ports_node.Nodes.Add(port_node);
}
//
TreeNode states_node = new TreeNode(ml["states"]/*"состояния"*/);
type_node.Nodes.Add(states_node);
foreach(State s in t.list_states) {
TreeNode state_node = new TreeNode(s.name+"("+s.symbol+")");
states_node.Nodes.Add(state_node);
foreach(Transition tr in s.list_trans) {
TreeNode trans_node = new TreeNode(tr.state_from.name + " -> " + tr.state_to.name+" ("+tr.symbol+")");
state_node.Nodes.Add(trans_node);
}
}
//
TreeNode transes_node = new TreeNode(ml["transitions"]/*"переходы"*/);
type_node.Nodes.Add(transes_node);
foreach(Transition tr in t.list_trans) {
TreeNode trans_node = new TreeNode(tr.state_from.name+" -> "+tr.state_to.name);
transes_node.Nodes.Add(trans_node);
foreach(Term term in tr.list_term_in) {
TreeNode term_node = new TreeNode("in:" + term.port.name + ":" + term.res.name+":"+term.res.GetType().Name);
trans_node.Nodes.Add(term_node);
}
foreach(Term term in tr.list_term_out) {
TreeNode term_node = new TreeNode("out:" + term.port.name + ":" + term.res.name + ":" + term.res.GetType().Name);
trans_node.Nodes.Add(term_node);
}
}
}
//
TreeNode all_ports_node = new TreeNode(ml["ports"]/*"порты"*/);
root_node.Nodes.Add(all_ports_node);
foreach(Port p in m.port_list) {
string ss = p.name;
if(p.type != null) {
ss = ss+":"+p.type.name;
}
TreeNode port_node = new TreeNode(ss);
all_ports_node.Nodes.Add(port_node);
}
TreeNode all_trace_node = new TreeNode("trace");
root_node.Nodes.Add(all_trace_node);
for(int i = 0; i < m.trace_hash.Count; i++) {
Trace t = (Trace)m.trace_hash[i];
string ss = t.show();
TreeNode trace_node = new TreeNode(ss);
all_trace_node.Nodes.Add(trace_node);
}
status(ml["view_model"]/*"Просмотр модели: "*/ + DateTime.Now);
// treeView1.ExpandAll();
}
void log_total() {
if (m == null) {
status(ml["no_init_model"]/*"Модель не инициализирована: "*/ + DateTime.Now);
return;
}
show_log();
cb_Trace.Checked = false;
if(!m.log_total()) {
status(ml["show_rez"]/*"Показ итогов невозможен: смотрите сообщения в журнале."*/);
}
}
void log_trace() {
if(m == null) {
status(ml["no_init_model"]/*"Модель не инициализирована: "*/ + DateTime.Now);
return;
}
show_log();
m.log_trace();
}
private void btn_Init_Click(object sender, EventArgs e) {
init_model();
}
private void btn_Show_Click(object sender, EventArgs e) {
show_model(m);
}
private void btn_Log_Click(object sender, EventArgs e) {
show_log();
}
/*
private void btn_Step_Click(object sender, EventArgs e) {
next_step();
}
*/
private void btn_exec_Click(object sender, EventArgs e) {
exec_1_step();
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e) {
save_model();
}
private void openToolStripMenuItem_Click(object sender, EventArgs e) {
load_model();
}
private void btn_ShowPlaces_Click(object sender, EventArgs e)
{
show_places();
}
private void cb_Log_CheckedChanged(object sender, EventArgs e) {
log_visible(cb_Log.Checked);
}
private void lb_Vars_DoubleClick(object sender, EventArgs e) {
log("double click selectedIndex="+lb_Vars.SelectedIndex);
if(lb_Vars.SelectedIndex >= 0) exec_1_step();
}
private void btn_Trace_Click(object sender, EventArgs e) {
log_trace();
}
private void cb_Trace_CheckedChanged(object sender, EventArgs e) {
log_only_trace(cb_Trace.Checked);
}
private void btn_total_Click(object sender, EventArgs e) {
log_total();
}
private void btn_Loop_Click(object sender, EventArgs e) {
exec_loop();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
bool do_confirm = false;
if(do_confirm && !Lib.confirm("Good buy?")) {
e.Cancel = true;
return;
}
//config_save();
}
static FormChart frmChart;
void show_chart() {
if (m == null) {
status(ml["no_init_model"]/*"Модель не инициализирована: "*/ + DateTime.Now);
return;
}
if (frmChart == null) {
frmChart = new FormChart(frmMain);
}
if (frmChart.IsDisposed) {
frmChart = new FormChart(frmMain);
}
ChartInfo chin = m.get_chin();
frmChart.set_chin(chin);
frmChart.Visible = true;
frmChart.Focus();
}
private void btn_chart_Click(object sender, EventArgs e) {
show_chart();
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e) {
this.Close();
}
private void button1_Click(object sender, EventArgs e) {
int i = (int)numericUpDown1.Value;
exec_time(0.0+i);
}
private void загрузитьДемоМодельToolStripMenuItem_Click(object sender, EventArgs e)
{
init_model();
}
private void btn_steps_Click(object sender, EventArgs e) {
go_by_steps();
}
private void cb_chart_CheckedChanged(object sender, EventArgs e) {
chart_visible(cb_chart.Checked);
}
static void help(string p_title, string p_text) {
FormHelp frm_help = new FormHelp(p_title,p_text);
frm_help.Show();
}
private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e) {
FormHelp.help_about(build_id);
}
private void языкОписанияМоделиToolStripMenuItem_Click(object sender, EventArgs e) {
FormHelp.help_bnf();
}
void exec_place_expand(TreeNode n, bool i_expand) {
Object tag = n.Tag;
if(tag != null) {
if(tag.GetType() == typeof(Place)) {
Place p = (Place)tag;
p.is_expanded = i_expand;
}
}
}
void exec_change_inst_visual(TreeNode n) {
Object tag = n.Tag;
if (tag != null) {
if (tag.GetType() == typeof(Instance)) {
Instance inst = (Instance)tag;
inst.is_visual = !inst.is_visual;
n.Text = get_inst_title(inst);
}
}
}
private void treeView1_BeforeCollapse(object sender, TreeViewCancelEventArgs e) {
/*
TreeView tv = (TreeView)sender;
alarm("e=" + e + " sender=" + sender
+ " type=" + sender.GetType()
+ " tv="+ tv
+ " selected node=" + tv.SelectedNode
+ "e.node="+e.Node
);
*/
exec_place_expand(e.Node, false);
}
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e) {
exec_place_expand(e.Node, true);
}
static FormVisual frm_viz;
static FormVisual frm_autonet;
void show_visual_system_net() {
if(m == null) {
status(ml["no_init_model"]/*"Модель не инициализирована: "*/ + DateTime.Now);
return;
}
bool new_form_viz = false;
if(frm_viz == null) {
new_form_viz = true;
} else if(frm_viz.IsDisposed) {
new_form_viz = true;
}
if(new_form_viz) {
frm_viz = new FormVisual(this,VisualNet.system_net);
}
frm_viz.new_dot(trda_file_name);
m.show_system_net(frm_viz);
frm_viz.Show();
frm_viz.Focus();
}
void show_visual_automata_net() {
if (m == null) {
status(ml["no_init_model"]/*"Модель не инициализирована: "*/ + DateTime.Now);
return;
}
bool new_form = false;
if (frm_autonet == null) {
new_form = true;
} else if (frm_autonet.IsDisposed) {
new_form = true;
}
if (new_form) {
frm_autonet = new FormVisual(this,VisualNet.automata_net);
}
frm_autonet.new_dot(trda_file_name);
m.show_automata_net(frm_autonet);
frm_autonet.Show();
frm_autonet.Focus();
}
public void set_visual_automata_net(bool i_do_set) {
is_autonet = i_do_set;
if (i_do_set) {
show_visual_automata_net();
} else {
if (frm_autonet != null) {
frm_autonet.Visible = false;
}
}
cb_autonet.Checked = i_do_set;
}
public void set_visual_system_net(bool i_do_set) {
is_visible = i_do_set;
if(i_do_set) {
show_visual_system_net();
} else {
if(frm_viz != null) {
frm_viz.Visible = false;
}
}
cb_visual.Checked = i_do_set;
}
public void set_visual(bool i_do_set, VisualNet i_net) {
if (i_net == VisualNet.system_net) set_visual_system_net(i_do_set);
if (i_net == VisualNet.automata_net) set_visual_automata_net(i_do_set);
}
static FormRezult frm_rez;
public static void rez(string ss) {
frm_rez.log(ss);
}
void show_rezult() {
if (m == null) {
status(ml["no_init_model"]/*"Модель не инициализирована: "*/ + DateTime.Now);
return;
}
//
bool new_form_rez = false;
if (frm_rez == null) {
new_form_rez = true;
} else if (frm_rez.IsDisposed) {
new_form_rez = true;
}
if (new_form_rez) {
frm_rez = new FormRezult(trda_file_name);
}
//
frm_rez.log_begin();
m.show_rezult();
//
frm_rez.Show();
frm_rez.Focus();
}
private void btn_rezult_Click(object sender, EventArgs e) {
show_rezult();
}
private void cb_Marking_CheckedChanged(object sender, EventArgs e) {
if (m == null) {
error(ml["no_init_model"]/*"Не инициализирована модель"*/);
return;
}
m.set_test_marking(cb_Marking.Checked);
}
private void cb_stop_CheckedChanged(object sender, EventArgs e) {
if (m == null) {
error(ml["no_init_model"]/*"Не инициализирована модель"*/);
return;
}
m.set_test_stop(cb_stop.Checked);
}
private void cb_Finiteness_CheckedChanged(object sender, EventArgs e) {
if(m == null) {
error(ml["no_init_model"]/*"Не инициализирована модель"*/);
return;
}
m.set_test_bounds(cb_Finiteness.Checked);
}
private void cb_lock_CheckedChanged(object sender, EventArgs e) {
if(m == null) {
error(ml["no_init_model"]/*"Не инициализирована модель"*/);
return;
}
m.set_test_lock(cb_lock.Checked);
}
private void panel4_MouseDoubleClick(object sender, MouseEventArgs e) {
show_dump();
}
void set_eng_rus() {
if (MultyLanguage.current_language == MultyLanguage.Language.english) {
set_rus();
} else {
set_eng();
}
}
void set_eng() {
MultyLanguage.current_language = MultyLanguage.Language.english;
set_text();
}
void set_rus() {
MultyLanguage.current_language = MultyLanguage.Language.russian;
set_text();
}
/*
private void btn_visual_Click(object sender, EventArgs e) {
show_visual_system_net();
}
*/
private void cb_visual_CheckedChanged(object sender, EventArgs e) {
set_visual_system_net(cb_visual.Checked);
}
private void cb_autonet_CheckedChanged(object sender, EventArgs e) {
set_visual_automata_net(cb_autonet.Checked);
}
private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) {
exec_change_inst_visual(e.Node);
}
private void englishToolStripMenuItem_Click(object sender, EventArgs e) {
set_eng_rus();
}
}
}
Приложение 12
Form1.Designer.cs
namespace Automata {
partial class Form1 {
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
/// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
protected override void Dispose(bool disposing) {
if(disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Код, автоматически созданный конструктором форм Windows
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>
private void InitializeComponent() {
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
this.panel1 = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.treeView1 = new System.Windows.Forms.TreeView();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.cb_autonet = new System.Windows.Forms.CheckBox();
this.cb_visual = new System.Windows.Forms.CheckBox();
this.panel3 = new System.Windows.Forms.Panel();
this.cb_stop = new System.Windows.Forms.CheckBox();
this.cb_lock = new System.Windows.Forms.CheckBox();
this.cb_Finiteness = new System.Windows.Forms.CheckBox();
this.cb_Marking = new System.Windows.Forms.CheckBox();
this.btn_rezult = new System.Windows.Forms.Button();
this.cb_chart = new System.Windows.Forms.CheckBox();
this.btn_chart = new System.Windows.Forms.Button();
this.cb_Trace = new System.Windows.Forms.CheckBox();
this.btn_Trace = new System.Windows.Forms.Button();
this.cb_Log = new System.Windows.Forms.CheckBox();
this.panel2 = new System.Windows.Forms.Panel();
this.panel4 = new System.Windows.Forms.Panel();
this.numericUpDown2 = new System.Windows.Forms.NumericUpDown();
this.btn_steps = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.numericUpDown1 = new System.Windows.Forms.NumericUpDown();
this.btn_time = new System.Windows.Forms.Button();
this.btn_Loop = new System.Windows.Forms.Button();
this.btn_exec = new System.Windows.Forms.Button();
this.lb_Vars = new System.Windows.Forms.ListBox();
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.загрузитьДемоМодельToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.englishToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.выходToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.справкаToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.оПрограммеToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.языкОписанияМоделиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.statusStrip1.SuspendLayout();
this.panel1.SuspendLayout();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.panel3.SuspendLayout();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
// statusStrip1
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel1,
this.toolStripProgressBar1});
this.statusStrip1.Location = new System.Drawing.Point(0, 471);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 13, 0);
this.statusStrip1.Size = new System.Drawing.Size(717, 26);
this.statusStrip1.TabIndex = 0;
this.statusStrip1.Text = "statusStrip1";
//
// toolStripStatusLabel1
//
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Size = new System.Drawing.Size(141, 21);
this.toolStripStatusLabel1.Text = "toolStripStatusLabel1";
//
// toolStripProgressBar1
//
this.toolStripProgressBar1.Name = "toolStripProgressBar1";
this.toolStripProgressBar1.Size = new System.Drawing.Size(100, 20);
//
// panel1
//
this.panel1.Controls.Add(this.splitContainer1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 26);
this.panel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(717, 445);
this.panel1.TabIndex = 1;
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.treeView1);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
this.splitContainer1.Size = new System.Drawing.Size(717, 445);
this.splitContainer1.SplitterDistance = 341;
this.splitContainer1.TabIndex = 0;
//
// treeView1
//
this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeView1.Location = new System.Drawing.Point(0, 0);
this.treeView1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.treeView1.Name = "treeView1";
this.treeView1.Size = new System.Drawing.Size(341, 445);
this.treeView1.TabIndex = 0;
this.treeView1.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseDoubleClick);
this.treeView1.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeExpand);
this.treeView1.BeforeCollapse += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeCollapse);
//
// splitContainer2
//
this.splitContainer2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
this.splitContainer2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.cb_autonet);
this.splitContainer2.Panel1.Controls.Add(this.cb_visual);
this.splitContainer2.Panel1.Controls.Add(this.panel3);
this.splitContainer2.Panel1.Controls.Add(this.btn_rezult);
this.splitContainer2.Panel1.Controls.Add(this.cb_chart);
this.splitContainer2.Panel1.Controls.Add(this.btn_chart);
this.splitContainer2.Panel1.Controls.Add(this.cb_Trace);
this.splitContainer2.Panel1.Controls.Add(this.btn_Trace);
this.splitContainer2.Panel1.Controls.Add(this.cb_Log);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.panel2);
this.splitContainer2.Panel2.Controls.Add(this.lb_Vars);
this.splitContainer2.Size = new System.Drawing.Size(372, 445);
this.splitContainer2.SplitterDistance = 219;
this.splitContainer2.TabIndex = 10;
//
// cb_autonet
//
this.cb_autonet.AutoSize = true;
this.cb_autonet.Location = new System.Drawing.Point(156, 47);
this.cb_autonet.Name = "cb_autonet";
this.cb_autonet.Size = new System.Drawing.Size(142, 21);
this.cb_autonet.TabIndex = 15;
this.cb_autonet.Text = "Автоматная сеть";
this.cb_autonet.UseVisualStyleBackColor = true;
this.cb_autonet.CheckedChanged += new System.EventHandler(this.cb_autonet_CheckedChanged);
//
// cb_visual
//
this.cb_visual.AutoSize = true;
this.cb_visual.Location = new System.Drawing.Point(156, 24);
this.cb_visual.Name = "cb_visual";
this.cb_visual.Size = new System.Drawing.Size(135, 21);
this.cb_visual.TabIndex = 14;
this.cb_visual.Text = "Системная сеть";
this.cb_visual.UseVisualStyleBackColor = true;
this.cb_visual.CheckedChanged += new System.EventHandler(this.cb_visual_CheckedChanged);
//
// panel3
//
this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.panel3.Controls.Add(this.cb_stop);
this.panel3.Controls.Add(this.cb_lock);
this.panel3.Controls.Add(this.cb_Finiteness);
this.panel3.Controls.Add(this.cb_Marking);
this.panel3.Location = new System.Drawing.Point(147, 125);
this.panel3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(217, 89);
this.panel3.TabIndex = 13;
//
// cb_stop
//
this.cb_stop.AutoSize = true;
this.cb_stop.Location = new System.Drawing.Point(29, 30);
this.cb_stop.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cb_stop.Name = "cb_stop";
this.cb_stop.Size = new System.Drawing.Size(181, 21);
this.cb_stop.TabIndex = 3;
this.cb_stop.Text = "Пауза при нахождении";
this.cb_stop.UseVisualStyleBackColor = true;
this.cb_stop.CheckedChanged += new System.EventHandler(this.cb_stop_CheckedChanged);
//
// cb_lock
//
this.cb_lock.AutoSize = true;
this.cb_lock.Checked = true;
this.cb_lock.CheckState = System.Windows.Forms.CheckState.Checked;
this.cb_lock.Location = new System.Drawing.Point(11, 84);
this.cb_lock.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cb_lock.Name = "cb_lock";
this.cb_lock.Size = new System.Drawing.Size(144, 21);
this.cb_lock.TabIndex = 2;
this.cb_lock.Text = "Наличие тупиков";
this.cb_lock.UseVisualStyleBackColor = true;
this.cb_lock.Visible = false;
this.cb_lock.CheckedChanged += new System.EventHandler(this.cb_lock_CheckedChanged);
//
// cb_Finiteness
//
this.cb_Finiteness.AutoSize = true;
this.cb_Finiteness.Location = new System.Drawing.Point(11, 57);
this.cb_Finiteness.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cb_Finiteness.Name = "cb_Finiteness";
this.cb_Finiteness.Size = new System.Drawing.Size(139, 21);
this.cb_Finiteness.TabIndex = 1;
this.cb_Finiteness.Text = "Ограниченность";
this.cb_Finiteness.UseVisualStyleBackColor = true;
this.cb_Finiteness.CheckedChanged += new System.EventHandler(this.cb_Finiteness_CheckedChanged);
//
// cb_Marking
//
this.cb_Marking.AutoSize = true;
this.cb_Marking.Location = new System.Drawing.Point(11, 2);
this.cb_Marking.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cb_Marking.Name = "cb_Marking";
this.cb_Marking.Size = new System.Drawing.Size(126, 21);
this.cb_Marking.TabIndex = 0;
this.cb_Marking.Text = "Достижимость";
this.cb_Marking.UseVisualStyleBackColor = true;
this.cb_Marking.CheckedChanged += new System.EventHandler(this.cb_Marking_CheckedChanged);
//
// btn_rezult
//
this.btn_rezult.Location = new System.Drawing.Point(11, 125);
this.btn_rezult.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btn_rezult.Name = "btn_rezult";
this.btn_rezult.Size = new System.Drawing.Size(128, 89);
this.btn_rezult.TabIndex = 12;
this.btn_rezult.Text = "Результаты анализа";
this.btn_rezult.UseVisualStyleBackColor = true;
this.btn_rezult.Click += new System.EventHandler(this.btn_rezult_Click);
//
// cb_chart
//
this.cb_chart.AutoSize = true;
this.cb_chart.Location = new System.Drawing.Point(156, 2);
this.cb_chart.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cb_chart.Name = "cb_chart";
this.cb_chart.Size = new System.Drawing.Size(104, 21);
this.cb_chart.TabIndex = 11;
this.cb_chart.Text = "Диаграмма";
this.cb_chart.UseVisualStyleBackColor = true;
this.cb_chart.CheckedChanged += new System.EventHandler(this.cb_chart_CheckedChanged);
//
// btn_chart
//
this.btn_chart.Location = new System.Drawing.Point(11, 1);
this.btn_chart.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btn_chart.Name = "btn_chart";
this.btn_chart.Size = new System.Drawing.Size(128, 50);
this.btn_chart.TabIndex = 3;
this.btn_chart.Text = "Временная диаграмма";
this.btn_chart.UseVisualStyleBackColor = true;
this.btn_chart.Click += new System.EventHandler(this.btn_chart_Click);
//
// cb_Trace
//
this.cb_Trace.AutoSize = true;
this.cb_Trace.Location = new System.Drawing.Point(156, 98);
this.cb_Trace.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cb_Trace.Name = "cb_Trace";
this.cb_Trace.Size = new System.Drawing.Size(164, 21);
this.cb_Trace.TabIndex = 10;
this.cb_Trace.Text = "Только трассировка";
this.cb_Trace.UseVisualStyleBackColor = true;
this.cb_Trace.CheckedChanged += new System.EventHandler(this.cb_Trace_CheckedChanged);
//
// btn_Trace
//
this.btn_Trace.Location = new System.Drawing.Point(11, 57);
this.btn_Trace.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btn_Trace.Name = "btn_Trace";
this.btn_Trace.Size = new System.Drawing.Size(128, 37);
this.btn_Trace.TabIndex = 9;
this.btn_Trace.Text = "Трассировка";
this.btn_Trace.UseVisualStyleBackColor = true;
this.btn_Trace.Click += new System.EventHandler(this.btn_Trace_Click);
//
// cb_Log
//
this.cb_Log.AutoSize = true;
this.cb_Log.Location = new System.Drawing.Point(156, 73);
this.cb_Log.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cb_Log.Name = "cb_Log";
this.cb_Log.Size = new System.Drawing.Size(82, 21);
this.cb_Log.TabIndex = 8;
this.cb_Log.Text = "Журнал";
this.cb_Log.UseVisualStyleBackColor = true;
this.cb_Log.CheckedChanged += new System.EventHandler(this.cb_Log_CheckedChanged);
//
// panel2
//
this.panel2.Controls.Add(this.panel4);
this.panel2.Controls.Add(this.numericUpDown2);
this.panel2.Controls.Add(this.btn_steps);
this.panel2.Controls.Add(this.label1);
this.panel2.Controls.Add(this.numericUpDown1);
this.panel2.Controls.Add(this.btn_time);
this.panel2.Controls.Add(this.btn_Loop);
this.panel2.Controls.Add(this.btn_exec);
this.panel2.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panel2.Location = new System.Drawing.Point(0, 150);
this.panel2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(370, 70);
this.panel2.TabIndex = 7;
//
// panel4
//
this.panel4.Location = new System.Drawing.Point(347, 6);
this.panel4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.panel4.Name = "panel4";
this.panel4.Size = new System.Drawing.Size(25, 20);
this.panel4.TabIndex = 13;
this.panel4.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.panel4_MouseDoubleClick);
//
// numericUpDown2
//
this.numericUpDown2.Location = new System.Drawing.Point(16, 39);
this.numericUpDown2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.numericUpDown2.Maximum = new decimal(new int[] {
500,
0,
0,
0});
this.numericUpDown2.Name = "numericUpDown2";
this.numericUpDown2.Size = new System.Drawing.Size(53, 22);
this.numericUpDown2.TabIndex = 12;
this.numericUpDown2.Value = new decimal(new int[] {
50,
0,
0,
0});
//
// btn_steps
//
this.btn_steps.Location = new System.Drawing.Point(209, 2);
this.btn_steps.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btn_steps.Name = "btn_steps";
this.btn_steps.Size = new System.Drawing.Size(124, 27);
this.btn_steps.TabIndex = 11;
this.btn_steps.Text = "По шагам";
this.btn_steps.UseVisualStyleBackColor = true;
this.btn_steps.Click += new System.EventHandler(this.btn_steps_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(13, 6);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(67, 17);
this.label1.TabIndex = 10;
this.label1.Text = "Сделать:";
//
// numericUpDown1
//
this.numericUpDown1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.numericUpDown1.Location = new System.Drawing.Point(316, 41);
this.numericUpDown1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.numericUpDown1.Maximum = new decimal(new int[] {
500,
0,
0,
0});
this.numericUpDown1.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.numericUpDown1.Name = "numericUpDown1";
this.numericUpDown1.Size = new System.Drawing.Size(52, 22);
this.numericUpDown1.TabIndex = 9;
this.numericUpDown1.Value = new decimal(new int[] {
50,
0,
0,
0});
//
// btn_time
//
this.btn_time.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btn_time.Location = new System.Drawing.Point(222, 39);
this.btn_time.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btn_time.Name = "btn_time";
this.btn_time.Size = new System.Drawing.Size(77, 26);
this.btn_time.TabIndex = 7;
this.btn_time.Text = "время +";
this.btn_time.UseVisualStyleBackColor = true;
this.btn_time.Click += new System.EventHandler(this.button1_Click);
//
// btn_Loop
//
this.btn_Loop.Location = new System.Drawing.Point(87, 36);
this.btn_Loop.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btn_Loop.Name = "btn_Loop";
this.btn_Loop.Size = new System.Drawing.Size(83, 30);
this.btn_Loop.TabIndex = 6;
this.btn_Loop.Text = "шагов";
this.btn_Loop.UseVisualStyleBackColor = true;
this.btn_Loop.Click += new System.EventHandler(this.btn_Loop_Click);
//
// btn_exec
//
this.btn_exec.Location = new System.Drawing.Point(87, 1);
this.btn_exec.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btn_exec.Name = "btn_exec";
this.btn_exec.Size = new System.Drawing.Size(83, 31);
this.btn_exec.TabIndex = 5;
this.btn_exec.Text = "1 шаг";
this.btn_exec.UseVisualStyleBackColor = true;
this.btn_exec.Click += new System.EventHandler(this.btn_exec_Click);
//
// lb_Vars
//
this.lb_Vars.Dock = System.Windows.Forms.DockStyle.Fill;
this.lb_Vars.FormattingEnabled = true;
this.lb_Vars.ItemHeight = 16;
this.lb_Vars.Location = new System.Drawing.Point(0, 0);
this.lb_Vars.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.lb_Vars.Name = "lb_Vars";
this.lb_Vars.Size = new System.Drawing.Size(370, 212);
this.lb_Vars.TabIndex = 6;
this.lb_Vars.DoubleClick += new System.EventHandler(this.lb_Vars_DoubleClick);
//
// menuStrip1
//
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
this.справкаToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Padding = new System.Windows.Forms.Padding(5, 2, 0, 2);
this.menuStrip1.Size = new System.Drawing.Size(717, 26);
this.menuStrip1.TabIndex = 2;
this.menuStrip1.Text = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.openToolStripMenuItem,
this.загрузитьДемоМодельToolStripMenuItem,
this.saveToolStripMenuItem,
this.englishToolStripMenuItem,
this.выходToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(54, 22);
this.fileToolStripMenuItem.Text = "Файл";
//
// openToolStripMenuItem
//
this.openToolStripMenuItem.Name = "openToolStripMenuItem";
this.openToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
this.openToolStripMenuItem.Size = new System.Drawing.Size(254, 22);
this.openToolStripMenuItem.Text = "Открыть";
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
//
// загрузитьДемоМодельToolStripMenuItem
//
this.загрузитьДемоМодельToolStripMenuItem.Name = "загрузитьДемоМодельToolStripMenuItem";
this.загрузитьДемоМодельToolStripMenuItem.Size = new System.Drawing.Size(254, 22);
this.загрузитьДемоМодельToolStripMenuItem.Text = "Загрузить демо модель";
this.загрузитьДемоМодельToolStripMenuItem.Click += new System.EventHandler(this.загрузитьДемоМодельToolStripMenuItem_Click);
//
// saveToolStripMenuItem
//
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this.saveToolStripMenuItem.Size = new System.Drawing.Size(254, 22);
this.saveToolStripMenuItem.Text = "Сохранить";
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
//
// englishToolStripMenuItem
//
this.englishToolStripMenuItem.Name = "englishToolStripMenuItem";
this.englishToolStripMenuItem.Size = new System.Drawing.Size(254, 22);
this.englishToolStripMenuItem.Text = "English/Русский";
this.englishToolStripMenuItem.Click += new System.EventHandler(this.englishToolStripMenuItem_Click);
//
// выходToolStripMenuItem
//
this.выходToolStripMenuItem.Name = "выходToolStripMenuItem";
this.выходToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Q)));
this.выходToolStripMenuItem.Size = new System.Drawing.Size(254, 22);
this.выходToolStripMenuItem.Text = "Выход";
this.выходToolStripMenuItem.Click += new System.EventHandler(this.выходToolStripMenuItem_Click);
//
// справкаToolStripMenuItem
//
this.справкаToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.оПрограммеToolStripMenuItem,
this.языкОписанияМоделиToolStripMenuItem});
this.справкаToolStripMenuItem.Name = "справкаToolStripMenuItem";
this.справкаToolStripMenuItem.Size = new System.Drawing.Size(76, 22);
this.справкаToolStripMenuItem.Text = "Справка";
//
// оПрограммеToolStripMenuItem
//
this.оПрограммеToolStripMenuItem.Name = "оПрограммеToolStripMenuItem";
this.оПрограммеToolStripMenuItem.Size = new System.Drawing.Size(247, 22);
this.оПрограммеToolStripMenuItem.Text = "О программе";
this.оПрограммеToolStripMenuItem.Click += new System.EventHandler(this.оПрограммеToolStripMenuItem_Click);
//
// языкОписанияМоделиToolStripMenuItem
//
this.языкОписанияМоделиToolStripMenuItem.Name = "языкОписанияМоделиToolStripMenuItem";
this.языкОписанияМоделиToolStripMenuItem.Size = new System.Drawing.Size(247, 22);
this.языкОписанияМоделиToolStripMenuItem.Text = "Язык описания модели";
this.языкОписанияМоделиToolStripMenuI...
Подобные документы
Обзор средств компьютерного имитационного моделирования по созданию веб-приложения для визуализации имитационных моделей. Система имитационного моделирования AnyLogic, Arena, SimuLab. Серверная, клиентская часть. Модель работы отдела банка и участка цеха.
дипломная работа [3,3 M], добавлен 25.05.2015Проектирование и реализация модели, которая будет имитировать автозаправочную станцию с постоплатой. Подбор оптимальных параметров модели с учетом требований к сети массового обслуживания. Разработка модели в среде имитационного моделирования GPSS World.
контрольная работа [279,5 K], добавлен 16.03.2014Создание систем имитационного моделирования AnyLogic, Arena, SimuLab, Simbigraph и Forio. Серверная и клиентская часть. Разработка модели работы отдела банка, участка цеха, движения автобуса по маршруту и социальной сети. Описание web-приложения.
дипломная работа [3,4 M], добавлен 25.05.2015Разработка имитационной модели "Перекресток" для анализа бизнес-процессов предприятия и принятия решения в сложных условиях. Алгоритм построения имитационной модели на основе CASE-средств. Обзор программного обеспечения для имитационного моделирования.
дипломная работа [2,6 M], добавлен 22.11.2015Описание комплекса программных модулей, предназначенного для повышения эффективности аппаратных ресурсов компьютера. Характеристика компонентов сетевых и распределенных операционных систем. Модели сетевых служб. Способы разделения приложений на части.
презентация [1,4 M], добавлен 10.11.2013Роль гидродинамических процессов в современной технике и технологиях. Необходимость использования компьютерных методов при моделировании. Обзор дискретных моделей решетчатых газов. Соответствие реальных величин параметрам модели. Программное обеспечение.
дипломная работа [1,6 M], добавлен 22.04.2012Понятие компьютерной и информационной модели. Задачи компьютерного моделирования. Дедуктивный и индуктивный принципы построения моделей, технология их построения. Этапы разработки и исследования моделей на компьютере. Метод имитационного моделирования.
реферат [29,6 K], добавлен 23.03.2010Центральные магистрали передачи данных. Улучшение параметров мультисервисной сети за счет использования имитационного моделирования. Сети с трансляцией ячеек и с установлением соединения. Коммутация в сети Ethernet. Многоуровневая модель протоколов.
курсовая работа [2,3 M], добавлен 25.06.2014Значение вербальных и знаковых информационных моделей для исследования объектов, процессов, явлений. Роль метода формализации в процессе создания компьютерной модели. Использование программы AutoCAD для трехмерного моделирования и визуализации объекта.
курсовая работа [866,5 K], добавлен 08.01.2015Обзор пакетов программ, предназначенных для визуализации и анализа данных. Обоснование выбора среды программирования. Организация аварийного буфера. Передача данных от нижнего уровня к верхнему и сохранение данных. Отображение данных в графической форме.
дипломная работа [512,4 K], добавлен 28.08.2012Характеристики распределенных систем баз данных, формируемые путем "интеграции" разнородных аппаратных и программных средств. Концепция дифференциального файла для различных приложений. Сравнение разных технологий файлового сервера и "клиент-сервера".
курсовая работа [411,9 K], добавлен 28.05.2015Основы технологии моделирования Arena. Построение простой имитационной модели. Моделирование работы системы обслуживания покупателей на кассе супермаркета. Построение модели IDEF3. Анализ результатов имитационного моделирования и аналитического решения.
курсовая работа [659,1 K], добавлен 24.03.2012Сущность концептуального и физического моделирования. Описание графической среды AnyLogic как единственного инструмента имитационного моделирования. Основные этапы создания модели, позволяющей наглядно проанализировать влияние рекламы на покупателей.
курсовая работа [690,2 K], добавлен 30.05.2014Построение, исследование описательных и формальных информационных моделей. Применение электронных обучающих средств в современной системе образования. Обусловленность выбора средств разработки и языков программирования. Обзор пользовательского интерфейса.
дипломная работа [7,3 M], добавлен 09.02.2017Основы систематизации языков имитационного моделирования, моделирование систем и языки программирования. Особенности использования алгоритмических языков, подходы к их разработке. Анализ характеристик и эффективности языков имитационного моделирования.
курсовая работа [1,4 M], добавлен 15.03.2012Особенности систем массового обслуживания и сущность имитационного моделирования с использованием GPSS. Структурная схема модели системы и временная диаграмма. Сравнение результатов имитационного моделирования и аналитического расчета характеристик.
курсовая работа [214,2 K], добавлен 23.06.2011Основные характеристики и алгоритмы настройки виртуальной локальной вычислительной сети VLAN, протоколов маршрутизации, системы доменных имен и трансляции сетевых адресов с целью разработки корпоративной сети в среде имитационного моделирования.
курсовая работа [556,1 K], добавлен 23.04.2011Математическое описание имитационной модели. Описание блок-схемы алгоритма. Анализ полученных результатов имитационного моделирования. Сопоставление полученных результатов для разработанных моделей. Математическое описание аналитического моделирования.
курсовая работа [306,5 K], добавлен 25.03.2015Особенности моделирования биологических систем с использованием программы "AnyLogic". Влияние различных факторов на популяции жертв и хищников. Принципы имитационного моделирования и его общий алгоритм с помощью ЭВМ. Анализ результатов моделирования.
курсовая работа [922,2 K], добавлен 30.01.2016Характеристика функций имитационного моделирования. Знакомство с особенностями имитационного моделирования агрегированной системы массового обслуживания. Анализ программы GPSSWorld: рассмотрение возможностей, способы составления имитационной модели.
курсовая работа [1,6 M], добавлен 27.05.2013