183466 (Имитационная модель интеллектуального агента в условиях конкуренции), страница 2

2016-08-02СтудИзба

Описание файла

Документ из архива "Имитационная модель интеллектуального агента в условиях конкуренции", который расположен в категории "". Всё это находится в предмете "экономико-математическое моделирование" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "экономико-математическое моделирование" в общих файлах.

Онлайн просмотр документа "183466"

Текст 2 страницы из документа "183466"

QUAN(INTEGER):IUNIFORM(LowLimit:=100,UpLimit:=200), # объем выпуска

SAL(REAL):UNIFORM(LowLimit:=0,UpLimit:=1), # скидки

ADV(REAL):UNIFORM(LowLimit:=15,UpLimit:=35), # реклама

QUAL(REAL):EXPO(Mean:=50), # качество

ASSORT(INTEGER):IUNIFORM(LowLimit:=1,UpLimit:=3), # товарный ассортимент

TRU(INTEGER):IUNIFORM(LowLimit:=2,UpLimit:=5), # доверие

REMOT(REAL):EXPO(Mean:=150), # удаленность

DELIV(INTEGER):IUNIFORM(LowLimit:=1,UpLimit:=3), # доставка

Inv(INTEGER):IUNIFORM(LowLimit:=1,UpLimit:=4) # денежные поступления извне

TRANSITIONS INDICATORS

print,

ffm,

ffm2,

ffm3

LOCATION

QueryStock1(query):=0 query, # накопитель, содержащий параметры предложения

F1Stock(query):=0 query # накопитель, содержащий параметры предложения фирм- конкурентов

SENSOR LOCATION

FStock(query)

DYNAMIC BEHAVIOUR

ON START DO

parameters1[1]^:=PRI;

parameters1[2]^:=QUAN;

parameters1[4]^:=ADV;

parameters1[5]^:=QUAL;

parameters1[6]^:=1;

parameters1[7]^:=TRU;

parameters1[8]^:=REMOT;

parameters1[9]^:=DELIV;

SIGNAL ffm;

END

WHENEVER T>=TNext

DO IF (NUMBER(FStock)<>0) DO

SIGNAL ffm3;

(ARRAY p1^,past_b^):=strategy(past_b2,LOCATION FStock,ARRAY LOST_cl,

ARRAY balances,ff,1,g,ARRAY parameters1,invest,ARRAY demand);

SIGNAL ffm2;

END

SIGNAL ffm;

TNext^:=TNext+1;

END

ON ffm DO

QueryStock1^: ADD 1 NEW query

CHANGING

(ARRAY QB^):=form(ARRAY parameters1);

END

END

ON ffm2 DO

(ARRAY parameters1^):=form(ARRAY p1);

END

ON ffm3 DO

past_b2^:=past_b;

invest^:=Inv;

END

END OF Firm

Приходя на рынок (базисный компонент Market), покупатель рассматривает предложение каждой фирмы и выбирает максимально соответствующее его требованиям. Параллельно ведется подсчет покупателей для каждой из фирм, а также количество купленного товара.

FUNCTION FChoice

MOBILE SUBCOMPONENT OF CLASS query

DECLARATION OF ELEMENTS

INPUT PARAMETERS

FStock(LOCATION FOR query),

ARRAY[n][s]CRITER(REAL), #покупатель

ARRAY [l] Dummy(REAL),

g(INTEGER)

OUTPUT PARAMETERS

ARRAY[l]balance(REAL), #остаток на складе

f(INTEGER), #количество покупателей фирмы 1

f2(INTEGER), #количество покупателей фирмы 2

f3(INTEGER), #количество покупателей фирмы 3

ARRAY[n][l]copy_param(REAL),

ARRAY[l]LOST_clients(LOGICAL),

leader(INTEGER),

ARRAY [l]dem(REAL)

LOCAL VARIABLES

ss(INTEGER):=100,

k(REAL):=0, #количество совпадающих параметров

rem(REAL):=0,

maxim(REAL):=0,

imaxim(INTEGER):=0,

JMAX(INTEGER):=0,

ARRAY[l][s]QuBu(REAL):=0, #массив совпадений

ARRAY[l][s]QuanBuy(INTEGER), #массив распределения покупателей

ARRAY [l]clients(INTEGER),

max_cl(INTEGER)

BEGIN

FOR W FROM 1 TO 9

REPEAT

FOR I FROM 1 TO g

REPEAT

copy_param[W][I]:=FStock:query[I].QB[W];

balance[I]:=FStock:query[I].QB[2];

END_LOOP

END_LOOP

#Процесс сравнения критериев покупателей с параметрами продавцов

FOR J FROM 1 TO g

REPEAT

FOR I FROM 1 TO ss

REPEAT

k:=0;

FOR R FROM 1 TO 9

REPEAT

IF R<>2 DO

# Для удовлетворения покупателя параметр продавца не должен отклоняться более чем на 20% от требования покупателя.

IF (FStock:query[J].QB[R]<=CRITER[R][I]+CRITER[R][I]*0.2) AND

(FStock:query[J].QB[R]>=CRITER[R][I]-CRITER[R][I]*0.2)

DO

k:=k+1/9;# степень удовлетворенности покупателя

END

END

END_LOOP

QuBu[J][I]:=k;

END_LOOP

END_LOOP

# Выбор покупателем наиболее подходящей фирмы

FOR I FROM 1 TO ss

REPEAT

# если итоговые показатели всех фирм одинаковы, то выбирается первая встречная, на которой есть необходимое количество товара.

IF (QuBu[1][I]=QuBu[2][I]) AND (QuBu[1][I]=QuBu[3][I])

AND (QuBu[1][I]<>0)

DO LOOP

FOR J FROM 1 TO g

REPEAT

# подсчет остатков и выявление упущенных клиентов

IF balance[J]>=CRITER[2][I] DO

balance[J]:=balance[J]-CRITER[2][I];

QuanBuy[J][I]:=1;

LOST_clients[J]:=FALSE;

EXIT ;

END

END_LOOP

END

ELSIF (QuBu[1][I]<>QuBu[2][I]) OR (QuBu[1][I]<>QuBu[3][I])

DO

maxim:=0;

FOR J FROM 1 TO g

REPEAT

IF QuBu[J][I]>maxim DO

maxim:=QuBu[J][I];

imaxim:=J;

JMAX:=I;

END

END_LOOP

Подсчет остатков и объема упущенных продаж

IF balance[imaxim]>=CRITER[2][I] DO

balance[imaxim]:=balance[imaxim]-CRITER[2][I];

QuanBuy[imaxim][JMAX]:=1;

LOST_clients[imaxim]:=FALSE;

END

ELSIF balance[imaxim]

DISPLAY("Товара НЕТ на %d !!!\n",imaxim);

LOST_clients[imaxim]:=TRUE;

dem[imaxim]:=dem[imaxim]+CRITER[2][I];

END

END

END_LOOP

FOR J FROM 1 TO ss

REPEAT

f := f + QuanBuy[1][J];# подсчет количества покупателей 1 фирмы

END_LOOP

FOR J FROM 1 TO ss

REPEAT

f2 := f2 + QuanBuy[2][J];# подсчет количества покупателей 2 фирмы

END_LOOP

FOR J FROM 1 TO ss

REPEAT

f3 := f3 + QuanBuy[3][J];# подсчет количества покупателей 3 фирмы

END_LOOP

clients[1]:=f;

clients[2]:=f2;

clients[3]:=f3;

#Выявление фирмы-лидера

max_cl:=0;

FOR I FROM 1 TO g

REPEAT

IF clients[I]>max_cl

DO

max_cl:=clients[I];

leader:=I;

END

END_LOOP

RETURN

END OF FChoice

В конце временного периода каждой фирме отправляется информация о количестве покупателей и об остатках товара на складах. Это реализовано в компоненте высокого уровня.

HIGH LEVEL COMPONENT Market_HIGH

SUBCOMPONENTS

Firm,

Firm2,

Firm3,

buyer,

Market

COMPONENT CONNECTION

Firm.QueryStock1-->Market.QStock1;

Firm2.QueryStock2-->Market.QStock2;

Firm3.QueryStock3-->Market.QStock3;

buyer.criterion{i OF 1..9}{j OF 1..100}-->Market.criterion[i][j]; массив критериев покупателей

Firm.parameters1{i OF 1..9}-->Firm3.parameters1[i]; параметры 1 фирмы в 3-ю

Firm2.parameters2{i OF 1..9}-->Firm3.parameters2[i]; параметры 2 фирмы в 3-ю

Market.g-->Firm.g;

Market.g-->Firm2.g;

Market.g-->Firm3.g;

# Количество покупателей

Market.ff-->Firm.ff;

Market.ff2-->Firm2.ff2;

Market.ff3-->Firm3.ff3;

# Остатки на складах

Market.balances[1]-->Firm.balances[1];

Market.balances[2]-->Firm2.balances[2];

Market.balances[3]-->Firm3.balances[3];

# Необслуженные клиенты

Market.LOST_clients[1]-->Firm.LOST_cl[1];

Market.LOST_clients[2]-->Firm2.LOST_cl[2];

Market.LOST_clients[3]-->Firm3.LOST_cl[3];

# Фирма - лидер

Market.firm_leader-->Firm.firm_leader;

Market.firm_leader-->Firm2.firm_leader;

Market.firm_leader-->Firm3.firm_leader;

# Массив, содержащий объем упущенных продаж по каждой фирме

Market.demand[1]-->Firm.demand[1];

Market.demand[2]-->Firm2.demand[2];

Market.demand[3]-->Firm3.demand[3];

Market.EQUIPOISE-->Firm3.EQUIPOISE;

END OF Market_HIGH

Исходя из этого и учитывая прошлый опыт (объем продаж и спрос за прошлые периоды), олигополист выбирает одну из возможных стратегий на последующий период времени.

Событие 1. Так как фирм немного, то каждый продавец вынужден следить за поведением конкурентов. Таким образом, в модели фирмы-участники договариваются об установлении средней цены.

Каждая фирма считает недостающий объем выпуска и в событии 2 при наличии необслуженных клиентов, увеличивает выпуск на недостающую величину.

Событие 3. Если остаток фирмы больше 1/3 всего выпущенного объема, то олигополист вводит скидки для распродажи и уменьшает выпускаемый объем на 2%.

Далее, исходя из изменений спроса, олигополист варьирует неценовые факторы (событие 4). Если в текущем периоде увеличивается количество покупателей по сравнению с прошлым периодом, то фирма увеличивает предлагаемый товар на 10 ед. Если же спрос снижается, то фирма предпринимает действия в соответствии с количеством имеющихся свободных денежных средств (переменная cash). При величине cash = 1, соответствующей большой сумме денежных поступлений, олигополист разрабатывает новый продукт и увеличивает свой товарный ассортимент. Дальнейшие изменения переменной cash означают уменьшение денежных средств. При cash = 2 олигополист улучшает качество имеющегося товара, тем самым улучшая свой имидж и увеличивая доверие клиентов. При cash = 3 улучшается реклама. При cash = 4 – доставка.

Данный алгоритм в программе реализован следующим образом.

FUNCTION strategy

MOBILE SUBCOMPONENT OF CLASS query

LOCAL DEFINITIONS

DECLARATION OF SUBFUNCTION

form(ARRAY [n]REAL:PP-->ARRAY[n]REAL)

DECLARATION OF ELEMENTS

INPUT PARAMETERS

past_buy2(INTEGER), #j=2 l=3 n=9

Stock(LOCATION FOR query),

ARRAY[l] LOST_c(LOGICAL),

ARRAY[l] bal(REAL),

ff1(INTEGER),

I(INTEGER), #номер фирмы

g(INTEGER),

ARRAY [n]param1(REAL),

cash(INTEGER),

ARRAY [l]dem(REAL)

OUTPUT PARAMETERS

ARRAY[n] par(REAL),

past_buy(INTEGER)

LOCAL VARIABLES

average_price(REAL):=0,

cash1(INTEGER):=0

BEGIN

(ARRAY par):=form(ARRAY param1);

#Событие 1

FOR J FROM 1 TO g

REPEAT

average_price:=average_price+Stock:query[J].QB[1];

END_LOOP

average_price:=average_price/g;

DISPLAY("сред цена %3.2f\n",average_price);

IF par[1]>average_price

DO

par[1]:=par[1]-par[1]*0.01;

END

ELSIF par[1]

DO

par[1]:=par[1]+par[1]*0.01;

END

#Событие 2

IF LOST_c[I]

DO

par[2]:=par[2]+dem[I];

END

ELSIF LOST_c[I]=FALSE

DO

par[2]:=par[2];

END

#Событие 3

IF bal[I]>par[2]/3

DO

par[3]:=par[3]+1;

par[2]:=par[2]-par[2]*0.02;

END

#Событие 4

IF ff1>past_buy2

DO

par[2]:=par[2]+10;

END

ELSIF ff1<=past_buy2

DO

IF cash=1

DO

par[6]:=par[6]+1;

END

ELSIF cash=2

DO

par[5]:=par[5]+5;

IF (par[5]>230) AND (par[7]<6)

DO

par[7]:=par[7]+1;

END

END

ELSIF cash=3

DO

par[4]:=par[4]+5;

END

ELSIF (cash=4) AND (par[9]<3)

DO

par[9]:=par[9]+1;

END

END

past_buy:=ff1;

RETURN

END OF strategy

Результаты

Когда на рынке устанавливается относительное равновесие цен между первой и второй фирмой, то на него входит новая фирма, которая предварительно изучила ситуацию. Теперь события будут развиваться с тремя конкурентами до обретения нового равновесия (рис. 1, 2).

Рис. 1 - Процесс установления средней цены

Рис. 2 - Доля рынка каждой фирмы

На графике представлено количество покупателей каждой фирмы. Синяя линия соответствует первой фирме (Firm), красная – второй (Firm2), а зеленая – третьей (Firm3). Очевидно, что некоторая доля рынка перейдет к новичку. Модель показала, какой эта доля будет и статус, который займет новая фирма – олигополист.

На рис. 3 отражена конкурентная борьба, происходящая между олигополистами.

Рис. 3 - Объем выпуска каждой фирмы – олигополиста

Объем выпускаемой продукции напрямую связан со спросом на нее. Чем выше спрос, тем больше выпуск.

Следующие графики отображают изменение величины спроса отдельно взятой фирмы. Синяя линия – это предлагаемый объем продукции, красная – остатки на складе, после совершения покупок клиентами, а область между ними – величина спроса.

Рис. 4 - Изменение спроса на товар 1 фирмы

Рис. 5 - Изменение спроса на товар 2 фирмы

Рис. 6 - Изменение спроса на товар 3 фирмы

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5166
Авторов
на СтудИзбе
437
Средний доход
с одного платного файла
Обучение Подробнее