Лабораторные работы (2011) (SIMPR)

Посмотреть архив целиком

Московский энергетический институт

(технический университет)


Институт автоматики и вычислительной техники


Кафедра прикладной математики









Отчет по лабораторной работе №1

курса: “Теория игр и исследование операций”.

Тема: “ Проектирование с помощью

инструментального комплекса СИМПР ”.

















Студентка: Михайлова В.А.

Группа: А-13-07

Преподаватель: Гречкина П.В.




Москва 2011

Содержание

  1. Постановка задачи……………………………………………………3

  2. Описание предметной области………………………………………3

  3. Описание табличной модели………………………………………...8

  4. Приложение………………………………………………………….15

  5. Литература…………………………………………………………...25














































  1. Постановка задачи

С помощью инструментальной системы СИМПР сформировать модель принятия решений в виде совокупности таблиц решений и написать модуль-интерпретатор для данной модели. Объект моделирование – свидание молодого человека с девушкой. В зависимости от того, насколько опоздает девушка, поход в кино может либо состояться, либо не состояться.


  1. Описание предметной области

Молодой человек стоит у кинотеатра и ждет девушку. Через некоторый интервал времени (40 секунд) с момента запуска программы настает время их встречи, о котором они договорились заранее. Считается, что девушка может опоздать, а сотовых телефонов у них нет.

Если девушка приходит к назначенному времени, они вдвоем идут в кино. В противном случае юноша ждет её еще дополнительное время (будет задано случайно в интервале от 0 до 20).

Считается, что от своего дома до кинотеатра девушке нужно сделать 10 шагов, и если, она сделала 5 шагов и более и юноша при этом ещё не ушел, считается, что он её видит и обязан подождать в любом случае.

Если они встретились, они вдвоем идут в кино. В противном случае, юноша идет домой.

Девушка выходит из дома спустя случайный интервал времени от начала совместной работы инструментальной системы и модуля-интерпретатора. Этот интервал времени не превышает суммы назначенного времени и дополнительного. Если девушка приходит к кинотеатру, а юноши нет, она возвращается домой.

Если встреча не произошла, то STOP происходит, когда юноша и девушка оба будут дома.

Если встреча состоялась, они вдвоем идут в кино, ждут начало фильма (случайный интервал времени от 0 до 20), смотрят фильм (продолжительность фильма задается случайно от 0 до 40). После фильма пара выходит из кинотеатра, юноша провожает девушку до её дома, возвращается к себе. Когда он заходит в свой дом, происходит STOP.


Примеры ситуаций:

  1. Молодой человек ждет наступления времени встречи, девушка дома

  1. Юноша ждет дополнительное время

  1. Увидел девушку и обязательно её дождется




  1. Смотрят фильм.








  1. Юноша провожает девушку домой


  1. Юноша возвращается домой











  1. Оба дома.



  1. Ситуация несостоявшейся встречи.










  1. Описание табличной модели

Модель содержит 4 таблицы:

  • Первая таблица: описывает поведение юноши до встречи с девушкой и в случае несостоявшейся встречи.

  • Вторая таблица: описывает поведение девушки до встречи с юношей и в случае несостоявшейся встречи.

  • Третья таблица: отслеживает, вернулись ли они оба по домам в случае несостоявшейся встречи.

  • Четвертая таблица: описывает время в кинотеатре, провожание девушки домой, возвращение юноши к себе домой.



Первая таблица


Логические отношения:

c5->!c6

c3->!c4

c5->!c7

c6->!c7


Описание таблицы (название таблицы – “Поведение юноши”):


Проверка на полноту и непротиворечивость:



Результаты трансляции:





Вторая таблица


Логические отношения:

c1->!c2

c1->!c3

c1->!c4

c1->!c5

c1->!c6

c1->!c7

c2->!c3

c2->!c4

c2->!c5

c2->!c6

c2->!c7

c3->!c5

c3->!c6

c3->!c7

c5->!c6

c5->!c7

c6->!c7


Описание таблицы (название таблицы – “Поведение девушки”):


Проверка на полноту и непротиворечивость:






Результаты трансляции:




Третья таблица


Описание таблицы:


Проверка на полноту и непротиворечивость:






Результаты трансляции:




Четвертая таблица


Логические отношения:

c3->!c4

c3->!c5

c3->!c6

c3->!c7

c3->!c8

c4->!c5

c4->!c6

c4->!c7

c4->!c8

c5->!c6

c5->!c7

c5->!c8

c7->!c8

c6->!c7

c6->!c8


Описание таблицы:


Проверка на полноту и непротиворечивость:


Результаты трансляции:








  1. Приложение

Программа была написана на языке Delphi в среде Borland Delphi 7.


unit Unit1;


interface


uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs,ExtCtrls, ImgList, jpeg, StdCtrls, ComCtrls, Mask;


const

message_str='svidanie';

Tvst=40;


type

young_man=Record //тип, соответсвующий поведению юноши до встречи или в случае несостоявшейся встречи

status:(wait,visib,meet,go_cinema,go_home,boy_home);

steps:byte;

image: TImage;

end;

girl=Record //тип, соответствующий поведению девушки до встречи или в случае несостоявшейся встречи

status:(home,gomeet,meeting,gohome,back);

steps:byte;

image: TImage;

end;

after_cinema=Record//тип, соответствующий поведению после кинотеатра

status:(none,kino,girlback,girlhome,boyback,boyhome);

steps1:Byte;

steps2:Byte;

end;

TForm1 = class(TForm)

Image1: TImage;

Timer1:TTimer;//таймер ожидания времени встречи

Timer2: TTimer;

Memo1: TMemo;

Timer3: TTimer;

Timer4: TTimer;

Timer5: TTimer;

SpinEdit1: TSpinEdit;

Label1: TLabel;

Label3: TLabel;

Label4: TLabel;

Button1: TButton;//таймер ожидания дополнительного времени

procedure FormCreate(Sender: TObject);

procedure WndProc(var Message: TMessage);override;

procedure Timer1Timer(Sender: TObject);

procedure Timer2Timer(Sender: TObject);

procedure Timer3Timer(Sender: TObject);

procedure Timer4Timer(Sender: TObject);

procedure Timer5Timer(Sender: TObject);

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

procedure Button1Click(Sender: TObject);

procedure MaskEdit1Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

msgSIMPR:UINT;

young:Young_man;

miss:Girl;

after:after_cinema;

visible_girl:Boolean;

cinema:Boolean;

from:integer;

Tdop:integer;

Tnach:integer;

Tkon:integer;

flag1:Boolean;

flag2:Boolean;

Tsh:Byte;

end;


var

Form1: TForm1;

implementation


{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);

begin

MsgSIMPR:=RegisterWindowMessage(MESSAGE_STR);

visible_girl:=false;

cinema:=false;

young.status:=wait;

young.steps:=0;

miss.status:=home;

miss.steps:=0;

after.status:=none;

after.steps1:=0;

after.steps2:=0;

randomize;

Tdop:=random(20);

randomize;

from:=random(Tvst+Tdop);

randomize;

Tnach:=random(20);

randomize;

Tkon:=random(40);

young.image:=TImage.Create(Self);

TImage(young.image).Parent:=Form1;

TImage(young.image).Top:=350;

TImage(young.image).Left:=485;

Timage(young.image).Picture.LoadFromFile('boy.bmp');

TImage(young.image).Transparent := true;

TImage(young.image).AutoSize := true;

miss.image:=TImage.Create(Self);

TImage(miss.image).Parent:=Form1;

TImage(miss.image).Top:=350;

TImage(miss.image).Left:=100;

Timage(miss.image).Picture.LoadFromFile('svidanie\girl.bmp');

TImage(miss.image).Transparent := true;

TImage(miss.image).AutoSize := true;

TImage(miss.image).Visible:=false;

Timer1.Interval:=1000*Tvst;

Timer1.Enabled:=true;

Timer2.Enabled:=false;

Timer3.Interval:=from*1000;

Timer3.Enabled:=true;

flag1:=true;

flag2:=true;

Tsh:=StrToInt(SpinEdit1.Text);

Label4.Caption:='Жду наступления времени встречи';

end;


procedure TForm1.WndProc(var Message: TMessage);

var res:boolean;

begin

if message.Msg=msgSIMPR then

begin

Res:=false;

if message.WParamHi=0 then

begin //УСЛОВИЕ

case message.WParamLo of

//таблица1

1 : begin

case message.LParam of

1: begin // условие 1, Время встречи наступило

if (timer1.Enabled=false) then Res:=true;

if Res then

Memo1.Lines.Add('Таблица1 условие 1 Yes')

else Memo1.Lines.Add('Таблица1 условие 1 No');

end;

2: begin //условие2, Дополнительное время прошло

if ((Timer1.Enabled=false)and(Timer2.Enabled=false)) then

Res:=true;

if Res then

Memo1.Lines.Add('Таблица1 условие2 Yes')


Случайные файлы

Файл
60393.rtf
130290.rtf
72416-1.rtf
11529-1.rtf
lect_01.doc




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.