Инструментальная среда имитационного моделирования распределенных систем мобильных агентов



страница20/21
Дата07.03.2016
Размер2.3 Mb.
1   ...   13   14   15   16   17   18   19   20   21

Приложение 32 Model_marking.cs


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Collections;
namespace Automata {

partial class Model {


bool test_marking = false;

bool test_bounds = false;

bool test_stop = false;

bool test_lock = true;


public void set_test_marking(bool i_value) {

test_marking = i_value;

}

public void set_test_stop(bool i_value) {



test_stop = i_value;

}

public void set_test_bounds(bool i_value) {



test_bounds = i_value;

}

public void set_test_lock(bool i_value) {



test_lock = i_value;

}
public void fix_marking(){

foreach (Object obj in markings.Values) {

Marking mark = (Marking)obj;

mark.hash = make_mark_hash(mark.places,null);

string ss = "marking("+mark.name+"): like="+mark.like

+" hash=";

foreach(int h_item in mark.hash){

ss += "("+h_item+")";

}

log(ss);



}

context = Context.nil;

}
int[] make_mark_hash(Hashtable places, Hashtable like_places){

List hash = new List();

Hashtable sample = places;

if (like_places != null) sample = like_places;

foreach (Object obj in sample.Keys) {

Place p = (Place) places[(string)obj];

log("hash p.name=" + p.name);

foreach (Instance inst in p.list_inst) {

log("hash p.name=" + p.name+" inst="+inst.con.name);

int n = p.id * 10000 + inst.con.id * 100

+ (inst.current_state == null ? 0: inst.current_state.id+1);

hash.Add(n);

}

}

hash.Sort();



return hash.ToArray();

}
bool arr_eq(int[] a1, int[] a2) {

if (a1.Length != a2.Length) return false;

for (int i = 0; i < a1.Length; i++) {

if (a1[i] != a2[i]) return false;

}

return true;



}
void check_marking() {

if (!test_marking || markings.Count<1) return;

int[] total_hash = make_mark_hash(Places,null);

foreach (Object obj in markings.Values) {

Marking mark = (Marking)obj;

int[] current_hash = total_hash;

if (mark.like) {

current_hash = make_mark_hash(Places,mark.places);

}

if(arr_eq(current_hash,mark.hash)){



if ((n_trace - mark.last_eq_n_trace) > 1) {

mark.count++;

if (test_stop) {

do_pause = true;

pause_reason = "marking " + mark.name;

}

}



mark.last_eq_n_trace = n_trace;

}

}



}

void check_bounds() {

if(!test_bounds || bound_list.Count <1) return;

foreach(Bound bound in bound_list) {

bound.count = 0;

foreach(Instance inst in inst_list) {

if(

(bound.place == null || bound.place == inst.place)



&&

(bound.type == null || bound.type == inst.con.type)

) {

bound.count++;



}

}

}



foreach(Bound bound in bound_list) {

bound.max_value = Math.Max(bound.count, bound.max_value);

bound.min_value = Math.Min(bound.count, bound.min_value);

}

}


}

}



Приложение 33 MultyLanguage.cs


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Collections;
namespace Automata {

class Mess {

string str_rus, str_eng;

public Mess(string russian_text, string english_text){

str_rus = russian_text;

str_eng = english_text;

}

public string Str {



get {

if(MultyLanguage.current_language == MultyLanguage.Language.russian) {

return str_rus;

} else {


return str_eng;

}

}



}

}

class MultyLanguage {



public enum Language {russian, english};

public static Language current_language = Language.russian;

static MultyLanguage ml;

public static MultyLanguage get_MultyLanguage(){

if(ml == null){

ml = new MultyLanguage();

}

return ml;



}

static Mess m(string i_rus, string i_eng) {

return new Mess(i_rus, i_eng);

}

public Mess msg_btn_visual = m("Визуализация", "Visualization");



public Mess msg_btn_chart = m("Временная диаграмма", "Time chart");

public Mess msg_btn_trace = m("Трассировка", "Trace");

public Mess msg_btn_rezult = m("Результаты анализа", "Analysis results");

public Mess cb_chart = m("Диаграмма", "Diagram");

public Mess cb_log = m("Журнал", "Log");

public Mess cb_trace = m("Только трассировка", "Trace only");

public Mess cb_marking = m("Достижимость", "Reachability");

public Mess cb_stop = m("Пауза при нахождении", "Pause when found");

public Mess cb_Finiteness = m("Ограниченность", "Boundedness");

public Mess btn_exec = m("1шаг", "1Step");

public Mess btn_Loop = m("шагов", "steps");

public Mess btn_steps = m("По шагам", "Step by step");

public Mess label1 = m("Сделать", "Make");

public Mess btn_time = m("время+", "time+");

public Mess menu_file = m("Файл", "File");

public Mess openToolStripMenuItem = m("Открыть", "Open");

public Mess загрузитьДемоМодельToolStripMenuItem = m ("Загрузить демо модель","Load demo model");

public Mess saveToolStripMenuItem = m("Сохранить", "Save");

public Mess выходToolStripMenuItem = m("Выход", "Exit");

public Mess справкаToolStripMenuItem = m("Справка", "Help");

public Mess оПрограммеToolStripMenuItem = m("О программе", "About");

public Mess языкОписанияМоделиToolStripMenuItem = m("Язык описания модели", "Model desciption language");


Hashtable Messages = new Hashtable();


public string this[string i_key] {

get {


if(Messages.Contains(i_key)) {

Mess mess = (Mess)Messages[i_key];

return mess.Str;

} else {


return "MultyLanguage: key " + i_key+ " not found";

}

}



}
void m(string i_key, string i_rus, string i_eng) {

Messages.Add(i_key, new Mess(i_rus, i_eng));

}

MultyLanguage() {



// m("cb_chart", "Диаграмма", "Temporary Chart");

// m("cb_log", "Журнал", "Log");

// m("cb_trace", "Только трассировка","Trace Only");

// m("cb_marking", "Достижимость", "Marking");

// m("cb_stop", "Пауза при нахождении", "Stop when found");

// m("cb_finiteness", "Ограниченность", "Finiteness");

m("chart_diagram_title","Временная диаграмма","Time diagram");

m("q_delete_model", "Удалить текущую модель?", "Delete current model?");

m("model_init", "Модель инициализована", "Model is initialized");

m("error:", "ошибка: ", "error: ");

m("***Error:","***Ошибка: " ,"***Error: ");

m("no_init_model", "Модель не инициализирована ", "The model is not initialized ");

m("executing_cycle", "Выполняется цикл ...", "Cycle execution");

m("place", "места", "place");

m("types", "типы", "types");

m("constants", "константы", "constants");

m("variables", "переменные", "variables");

m("ports", "порты", "ports");

m("states", "состояния", "states");

m("transitions", "переходы", "transitions");

m("view_model", "Просмотр модели: ", "View the model: ");

m("show_rez", "Показ итогов невозможен: смотрите сообщения в журнале.", "Impossible to view rezults. Please, see log. ");

m("model_undef", "Модель не определена!","The model is undefined");

m("save_in_file","Сохраняем в файл ","Save in file ");

m("file_is_saved","Файл сохранен","File is saved");

m("del_cur_model","Удалить текущую модель?", "Would you like to delete current model");

m("loading_new_model...","Загружаем новую модель...", "The new model is being loaded...");

m("loading_new_model_from_file", "Загружаем новую модель из файла ", "New model is being loaded from file");

m("new model", "Новая модель", "New model");

m("too_many_errors_in_input_file", "Слишком много ошибок во входном файле", "Too many errors in input file");

m("model_is_loaded", "Модель загружена", "The model is loaded");

m("TRDA_typed_model", "Модель типа TRDA ", "TRDA typed model ");

m("model_is_not_loaded", "Модель не загружена", "The model is not loaded");

m("unopened comment id closed", "Закрыт неоткрытый комментарий", "Unopened comment is closed");

m("about_program","О программе", "About program");
m("program_implements_trda",

@"Программа реализует систему временных конечных автоматов

"

,

@"Program implements Timed Resource Driven automata nets



"

);
m("model_description_language", "Язык описания модели","Model description language");

m("bnf",

@"Описание модели с помощью формализма

БНФ

<Описание модели> ::= model(<название модели>)

<системная сеть>

<автоматный слой>

<начальная разметка>
<системная сеть> ::=

[<определение вершины системного слоя>, … ]

[<определение дуги системного слоя>, … ]

<определение вершины системного слоя> ::= place(<название вершины>)

<определение дуги системного слоя> ::=

<определение входящей дуги> | <определение исходящей дуги>

<определение входящей дуги> ::=

arc_in(<вершина приемник>, <вершина источник>, <название порта>)



<определение исходящей дуги> ::=

arc_out(<вершина источник>, <вершина приемник>, <название порта>)



<автоматный слой> ::= [<определение типа>, … ]
<определение типа> ::= type(<имя типа>)

[<определение элемента типа>, … ]

[<обозначение состояния на графике>, … ]

[<определение перехода>, … ]


<определение элемента типа> ::= <определение состояния> | < определение порта>

| < определение константы> | < определение переменной>



<определение состояния> ::= state(<имя состояния>)

<определение переменной> ::= var(<имя переменной>)

<определение константы> ::= const(<имя константы>)

<определение порта> ::= port(<имя порта>)
<обозначение состояния на графике> ::=

state_chart_name(<имя состояния>, <имя состояния на графике>)


<определение перехода> ::=

trans(<имя исходного состояния>, <имя итогового состояния> [, <название перехода>])

[<атрибут перехода>, … ]

[<определение преобразования ресурсов>, … ]


<атрибут перехода> ::= <продолжительность перехода>

| <обозначение перехода на графике>

| <вероятность перехода>

<продолжительность перехода> ::=

duration(<минимальное время перехода>[, <максимальное время перехода>])



<вероятность перехода> ::=

priority(<приоритет перехода>)



<обозначение перехода на графике> ::=

trans_chart_name(<имя перехода на графике>)


<определение преобразования ресурсов> ::=

<определение потребления ресурсов> | <определение производства ресурсов>

<определение потребления ресурсов> ::=

term_in(<имя порта>, <имя ресурса>[, <состояние потребляемого ресурса>])



<определение производства ресурсов> ::=

term_out(<имя порта>, <имя ресурса>[, <состояние производимого ресурса>])



<имя ресурса> ::= <имя константы> | <имя переменной>


<начальная разметка> ::= place(<имя вершины>)

[<определение объекта>, … ]



<определение объекта> ::= inst(<имя константы>[, <имя состояния>])

" ,


@"Model description using BNF

:: model ()







::=

[, …]

[, …]
:: = place ()

:: = |

::=

arc_in(, ,


)

::=

arc_out (, ,


)

:: [, …]
:: = type()

[, …]

[, …]

[, …]


::= |
| |

::=state ()

::=var()

::= const()

:: = port (


)
< definition of state on graph > :: =

state_chart_name (, )



::= trans(, [,

transition name>])

[,…]

[,…]


:: =

| < definition of states on graph >

|

::= wait([, ])

::=time ([,])

::= priority(
)

< definition of transition on graph >:: = trans_chart_name()
< definition of resource transformation > = |

:: = term_in (
, ])

::=term_out(
, [,])

:: = |

::=place()

[,…]



::=inst([,])

"

);



m("consume", " потребление", " consume");

m("production"," производство", " production");

m("end", " конец"," end");

m("Pause", ". Пауза: ", ".Pause: ");

m("show_of_rezults", "Показ итогов невозможен: t_current=","Impossible to show rezults: t_current=");

m("time_doesn't move", " - время не продвинулось.", " - time does not move.");

m("=REZULTS=", "==================== ИТОГИ =============", "================== REZULTS ===========");

m("total_po_const", "Итого по const ", "Total for const");

m("sec", "сек.", "sec.");

m("performance_time", "Время выполнения ", "Performance time ");

m("number_of_steps", ", число шагов ", ", number of steps ");

m("r_reachability", "Достижимость:", "Reachability:");

m(" Marking "," Маркировка ", " Marking ");

m("reached", " достигнута ", " reached ");

m("Boundedness:", "Ограниченность:", "Boundedness:");

m("bound", " Ограничение ", " Bound ");

m("yes", "да", "yes");

m("no","нет","no");

m("presence_od_deadlocks", "Наличие тупиковых ситуаций: ", "Presence of deadlocks: ");

m("Liveness", "Живость: ", "Liveness: ");

m(" Transition:", " Переход: "," Transition: ");

m("liveness_by_system_net_transition", "Живость по переходам системной сети: ", "Liveness by system net transitions: ");

m("Arc", " Дуга: "," Arc: ");

m("Agent", "Агент ","Agent ");

m("number_of_states", "===Количество состояний ", "===Number of states ");

m("cond", " Состояние ", " Condition ");

m("time_total", ": время общее ",": total time ");

m("average", ", среднее ", ",average ");

m("number_of_transitions", "===Количество переходов ", "===Number of transitions ");

m("Transition", " Переход ", " Transition ");

m("number", ", кол-во "," number ");

m("form1_title", "Модель типа TRDA ","Model of TRDA type ");

m("title_FormRezults", "Результаты анализа", "Analysis");

m("title_FormVisual", "Визуализация модели", "Model visualization");

m("title_SystemNet", "Системная сеть", "System Net");

m("title_AutomataNet", "Автоматная сеть", "Automata Net");

m("title_Form1", "Модель типа TRDA ", "Model of TRDA type " );

m("times", " раз", " times ");

m("save","Сохранить", "Save");

}
}


}


Каталог: data -> 2013
2013 -> Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов направления подготовки «Журналистика»
2013 -> Программа дисциплины концепции и концептуальный анализ в математике и гуманитарном знании
2013 -> "Применение инструментов конкурентной разведки для анализа конкурентоспособности компании"
2013 -> Программа учебной дисциплины «Психология»
2013 -> Сетевой образовательный клуб «Некрасовская республика»: самоорганизация, саморазвитие, сотворчество. «Некрасовская республика»
2013 -> Информационное сопровождение бизнес проектов


Поделитесь с Вашими друзьями:
1   ...   13   14   15   16   17   18   19   20   21


База данных защищена авторским правом ©uverenniy.ru 2019
обратиться к администрации

    Главная страница