Лабораторные работы (2009) (Отчёт по лабе 1)

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

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

(ТУ)











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

по предмету: «Теория Игр»























Выполнил: Барановский В.Ю.

Группа: А-16-06

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









Москва

2009

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

Сформировать модель принятия решений в виде совокупности таблиц решений и написать модуль-интерпретатор для данной модели. Объект моделирования – текстильный магазин.


Описание модуля интерпретатора

Данная модель имитирует частично работу магазина с текстилем трех типов: пуховик (зима), ветровка (весна, осень), футболка (лето).

Программа запускает генератор псевдослучайных чисел, вследствие чего выбираются: настроение покупателя (хорошее или отличное), время года (зима, весна, лето, осень) и количество денег на руках (1000 руб., 2000 руб., 3000 руб., 4000 руб., 5000 руб., 6000 руб., 7000 руб.). Когда у покупателя хорошее настроение, он покупает только необходимый товар, например, если зима, то пуховик, если лето, то футболку. Если настроение отличное, то покупатель покупает все на что ему хватит денег в порядке приоритета. Приоритет расставляется в соответствии с временем года. Например, если сейчас весна, то покупатель купит сначала ветровку, потом футболку, а уж потом, если хватит, то и пуховик. Если после покупки остаются деньги, то покупатель идет в другой магазин, если же денег больше не остается, то идет домой. Для этого созданы два массива координат, если деньги остаются то подключается первый массив, если нет то второй. После того как покупатель доходит до последней координаты, создается новый покупатель.

Пример:

Покупатель имел на руках 7000 рублей, у него было хорошее настроение, это означает, что он покупает только необходимое (актуальная сезону 1 вещь), и время года – зима, это означает, что приоритет покупок такой: пуховик, ветровка, футболка. Он купил один пуховик (если бы было отличное настроение, то он купил бы ещё ветровку и футболку), и у него осталось 4000 рублей, это означает что он идет в другой магазин (если бы денег не осталось, то он пошел бы домой).



Описание модели на языке таблиц и решений.

Таблица 1.


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



Таблица полна:

Таблица не противоречива:

Трансляция:

Листинг программы.

simpr.cs


using System;

using System.Windows.Forms;

using System.Threading;

using System.Runtime.InteropServices;


namespace WindowsApplication9

{

public class MyHookClass : NativeWindow

{

public string MESSAGE1 = "";

public string MESSAGE2 = "";

public string MESSAGE3 = "";

public string MESSAGE4 = "";

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]//обработчик сообщений

static extern uint RegisterWindowMessage(string lpString);


public customer CUST = new customer();

uint simpr;

public string log = "";


public MyHookClass(IntPtr hWnd)

{

simpr = RegisterWindowMessage("MyMessage");//регистрируем своё сообщение

this.AssignHandle(hWnd);

}

protected override void WndProc(ref Message m)//в эту функцию приходят все //сообщения от СИМПРА

{

if (m.Msg == simpr)

{

int wparamhi, wparamlo, wparam;

int lParam = Convert.ToInt32("" + m.LParam);

wparam = Convert.ToInt32("" + m.WParam);

wparamhi = wparam / 65536;

wparamlo = wparam - wparamhi * 65536;


if (wparamhi == 0)//условия

{

m.Result = new IntPtr(0);

if (lParam == 1)

{

if (CUST.FINEX == finex.fine)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 2)

{

if (CUST.FINEX == finex.exellent)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 3)

{

if (CUST.SEASON == season.winter)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 4)

{

if (CUST.SEASON == season.spring)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 5)

{

if (CUST.SEASON == season.summer)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 6)

{

if (CUST.SEASON == season.autumn)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 7)

{

if (CUST.MON == 1000)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 8)

{

if (CUST.MON == 2000)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 9)

{

if (CUST.MON == 3000)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 10)

{

if (CUST.MON == 4000)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 11)

{

if (CUST.MON == 5000)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 12)

{

if (CUST.MON == 6000)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 13)

{

if (CUST.MON == 7000)

{

m.Result = new IntPtr(1);

}

}


else if (lParam == 14)

{

if (CUST.x == 227 || CUST.x == 360 || CUST.x == 500)

{

m.Result = new IntPtr(1);

}

}

else if (lParam == 15)

{

if (CUST.MON == 0)

{

m.Result = new IntPtr(1);

}

}


}

else if (wparamhi == 1)//действия

{

if (lParam == 1)

{

CUST.MON -= 3000;

MESSAGE1 = "покупатель купил пуховик";


if (CUST.MON == 0)

{

MESSAGE4 = "деньги закончились пойду домой";

CUST.KOORDINATE.KOOR = CUST.KOORDINATE.KOOR1;

}


}

if (lParam == 2)

{

CUST.MON -= 2000;


MESSAGE2 = "покупатель купил ветровку";


if (CUST.MON == 0)

{

MESSAGE4 = "деньги закончились пойду домой";

CUST.KOORDINATE.KOOR = CUST.KOORDINATE.KOOR1;

}


}

if (lParam == 3)

{

CUST.MON -= 1000;

MESSAGE3 = "покупатель купил футболку";


if (CUST.MON == 0)

{

MESSAGE4 = "деньги закончились пойду домой";

CUST.KOORDINATE.KOOR = CUST.KOORDINATE.KOOR1;

}


}

if (lParam == 4)

{

MESSAGE4 = "покупатель ничего не купил";


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

Файл
20643.rtf
13533-1.rtf
93318.rtf
114208.rtf
127873.doc




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