Скачать .docx  

Реферат: Имитационная модель интеллектуального агента в условиях конкуренции

Московский Государственный Университет

Прикладной Биотехнологии

Кафедра «Компьютерные технологии и системы»

Реферат:

«Имитационная модель интеллектуального агента в условиях конкуренции»

Выполнила:

студентка АБС IV-3

Рогожкина Е.А.

Проверил:

д.т.н. проф.

Ивашкин Ю.А.

Москва

2004

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

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

Конкуренция в общем смысле может быть определена, как соперничество между отдельными лицами и хозяйствующими единицами, заинтересованными в достижении одной и той же цели. Важными в определении конкуренции являются следующие аспекты:

· во-первых, речь идет о рыночной конкуренции, то есть о непосредственном взаимодействии фирм на рынке;

· во-вторых, конкуренция ведется за ограниченный объем платежеспособного спроса. Именно ограниченность спроса заставляет фирмы конкурировать друг с другом.

В своем курсовом проекте я рассматриваю несовершенную конкуренцию, которую порождает олигополия. Т.е. структура, при которой огромное число обособленных потребителей и малое количество производителей, каждый из которых может удовлетворить значительную долю общего спроса.

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

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

Важную роль в характере конкурентных отношений на таком рынке играют объем и структура той информации о конкурентах и об условиях спроса, которой фирмы располагают: чем такой информации меньше, тем более конкурентным будет поведение фирмы. Основное отличие олигополистического рынка от рынка совершенной конкуренции связано с динамикой цен. Если на совершенном рынке они пульсируют непрерывно и бессистемно в зависимости от колебаний спроса и предложения, то при олигополии имеют тенденцию к устойчивой фиксации и изменяются не так часто. Типично так называемое лидерство в ценах, когда их преимущественно диктует одна ведущая фирма, остальные же олигополисты следуют за лидером. Доступ к рынку новым продавцам затруднен. В случае соглашения олигополистов по поводу цен, конкуренция все больше смещается в направлении качества, рекламы и индивидуализации.

В экономической литературе принято разделять конкуренцию по ее методам на:

· ценовую (конкуренцию на основе цены);

· неценовую (конкуренцию на основе качества потребительной стоимости).

В современном мире ценовая конкуренция утратила большое значение в пользу неценовых методов конкурентной борьбы. Фирмы избегают вести ценовую конкуренцию в открытой форме. Применяется она в настоящее время обычно в следующих случаях:

· фирмами-аутсайдерами в их борьбе с монополиями, для соперничества с которыми, в сфере неценовой конкуренции, у аутсайдеров нет ни сил, ни возможностей;

· для проникновения на рынки с новыми товарами;

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

Неценовая конкуренция выдвигает на первый план более высокую, чем у конкурентов, потребительную стоимость товара.

К числу неценовых методов относятся все маркетинговые методы управления фирмой. Такие как разработка и выпуск новых товаров, комплексные исследования рынка и планирование маркетинга, организация работы торгового аппарата, реклама и стимулирование сбыта, кредитная политика и финансирование, политика цен, совершенствование организационной структуры, выбор наиболее эффективных каналов товародвижения, сокращение издержек обращения, усовершенствование выпускаемой продукции.

К незаконным методам неценовой конкуренции относятся: промышленный шпионаж; переманивание специалистов, владеющих производственными секретами; выпуск поддельных товаров, внешне ничем не отличающихся от изделий-подлинников, но существенно худших по качеству, а потому обычно на 50% дешевле; закупка образцов с целью их копирования.

Направлением конкурентной деятельности фирм в моей модели является конкуренция в области сбыта товаров и/или услуг на рынке. В соответствии с этапами принятия потребителем решения о покупке их соперничество является межфирменной конкуренцией, т.е. конкуренцией альтернатив доминирующих и наиболее эффективных способов удовлетворения потребности.

Конкуренция выполняет роль регулятора темпов и объемов производства, побуждая при этом производителя внедрять научно-технические достижения, повышать производительность труда, совершенствовать технологию, организацию труда и т.д.

Конкуренция является определяющим фактором упорядочения цен, стимулом инновационных процессов (внедрение в производство нововведений: новых идей, изобретений). Она способствует вытеснению из производства неэффективных предприятий, рациональному использованию ресурсов, предотвращает диктат производителей (монополистов) по отношению к потребителю.

Основными методами являются:

1. повышение качества продукции

2. снижение цен («война цен»)

3. реклама

4. развитие до- и послепродажного обслуживания

5. создание новых товаров и услуг с использованием достижений НТР и т.д.

Одной из традиционных форм конкурентной борьбы, как уже было сказано, является манипулирование ценами, т.н. «война цен», используемая, в основном, для выталкивания с рынка более слабых соперников или проникновения на уже освоенный рынок.

Более эффективной и более современной формой конкурентной борьбы является борьба за качество предлагаемого на рынок товара. Поступление на рынок продукции более высокого качества или новой потребительной стоимости затрудняет ответные меры со стороны конкурента, т.к. «формирование» качества проходит длительный цикл, начинающийся с накопления экономической и научно-технической информации.

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

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

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

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

На олигополистическом рынке имеется небольшое число фирм-продавцов. Каждая из них чувствительна к политике ценообразования и маркетинговым стратегиям других. Предполагается, что все участвующие фирмы заинтересованы в лидерстве по показателям доли рынка. Т.е. их целью будет увеличение числа покупателей. При этом олигополисты варьируют не только цены, но и число (объем) услуг.

Моделируется маркетинговый процесс стабилизации рынка с двумя олигополистами с последующим вхождением третьего при N покупателях.

Модель построена с помощью имитационной системы Simplex 3.

QueryStock1 - накопитель предложений 1 фирмы

QueryStock2 - накопитель предложений 2 фирмы

QueryStock3 - накопитель предложений 3 фирмы

FirmStock- накопитель предложений всех фирм – конкурентов

ff- количество покупателей 1 фирмы

ff2 - количество покупателей 2 фирмы

ff3 - количество покупателей 3 фирмы

balances [1..3] - массив остатков товара

LOST_clients [1..3] - массив, элементы которого показывают есть ли у фирмы необслуженные клиенты

criterian [1..9] [1..100] - массив критериев покупателей

demand [1..3] - массив, содержащий объем упущенных продаж по каждой фирме

EQUIPOISE- логическая переменная: EQUIPOISE = TRUE – на рынке установилось равновесие цен

Для каждого покупателя генерируются его требования к продукту и фирме, а именно, в базисном компоненте Buyer разыгрываются элементы двумерного массива, строки которого являются критериями, а номер столбца соответствует номеру покупателя.

#Вызов внешней с-функции для формирования критериев покупателей

(tmp^):=fillClients(ARRAY criterian,100);

#include <iostream>

#include <stdlib.h>

#include <math.h>

#include <stdio.h>

#include "sys_struct.h"

#include "sys_extern.h"

#include "rts_func.h"

#include "c_macros.h"

using namespace std;

// экспоненциальное распределение

realexprasp(realm)

{

real r;

real exprasp_result;

do {

r=rand()%100;

r=r/100;

} while (!(r!=0));

exprasp_result=-m*log(r);

return exprasp_result;

}

// нормальноераспределение

real nrasp(real m,real stddev)

{

real r1,r2,radsqr;

real nrasp_result;

do {

r1=rand()%100;

r2=rand()%100;

r1=2*r1/100-1;

r2=2*r2/100-1;

radsqr=r1*r1+r2*r2;

} while (!((radsqr>0) && (radsqr<1)));

nrasp_result=r1*sqrt(-2*log(radsqr)/radsqr)*stddev+m;

return nrasp_result;

}

void fillClients(array a,integ r,integ *tmp)

{

int i,j;

srand(1);

for (j=1;j<=r;j++) {

InPara2(a,real,1,j) = rand()%200 + 10;

InPara2(a,real,2,j) = rand()%40 + 30;

InPara2(a,real,3,j) = rand()%2;

InPara2(a,real,4,j) = nrasp(25,5);

InPara2(a,real,5,j) = exprasp(50);

InPara2(a,real,6,j) = rand()&2+1;

InPara2(a,real,7,j) = nrasp(2.5,0.5);

InPara2(a,real,8,j) = exprasp(200);

InPara2(a,real,9,j) = nrasp(0.5,0.5);

}

}

BASIC COMPONENT buyer

MOBILE SUBCOMPONENT OF CLASS query

LOCAL DEFINITIONS

C_PROCEDURE fillClients (ARRAY[n][s] REAL,INTEGER --> INTEGER)

DECLARATION OF ELEMENTS

STATE VARIABLES

ARRAY[9][100] criterion (REAL):=0,

TNext(INTEGER):=0,

tmp(INTEGER):=0

DYNAMIC BEHAVIOUR

ON START DO

(tmp^):=fillClients(ARRAY criterion,100);

DISPLAY(" BUYERS ADDED.\n");

END

WHENEVER T>=TNext DO

IF TNext>47 DO

(tmp^):=fillClients(ARRAY criterion,100);

DISPLAY(" NEW BUYERS ADDED.\n");

END

TNext^:=TNext+1;

END

END OF buyer

Для каждого олигополиста также случайным образом разыгрываются параметры предлагаемого продукта и сопутствующих услуг. Но каждая фирма описывается в отдельном базисном компоненте: Firm, Firm2, Firm3, а ее параметры записываются в виде вектора в мобильный компонент.

BASIC COMPONENT Firm

MOBILE SUBCOMPONENT OF CLASS query

DECLARATION OF SUBFUNCTION

strategy(INTEGER:past_buy2,LOCATION FOR query:Stock,

ARRAY [l] LOGICAL:LOST_c,ARRAY [l] REAL:bal,INTEGER:ff1,

INTEGER:I,INTEGER:g,ARRAY[n]REAL:param1,INTEGER:cash,

ARRAY[l]REAL:dem-->ARRAY [n] REAL,INTEGER),

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

DECLARATION OF ELEMENTS

STATE VARIABLES

ARRAY[2] past_buyers (INTEGER):=0, # количествоклиентовзапрошлыйпериод

ARRAY[9]parameters1(REAL):=0, # массивпараметровфирмы

ARRAY[9]p1(REAL):=0,

TNext(INTEGER):=0,

count(INTEGER):=1,

past_b(INTEGER):=0,

past_b2(INTEGER):=0,

invest(INTEGER):=0 # количество свободных денежных средств

SENSORVARIABLES

ff(INTEGER), # количество покупателей за текущий период

ARRAY [3]balances(REAL), # остатки

ARRAY [3]LOST_cl(LOGICAL), # наличиенеобслуженныхклиентов

ARRAY [9]parameters2(REAL),

ARRAY [9]parameters3(REAL),

firm_leader(INTEGER),

g(INTEGER),

ARRAY [3]demand(REAL) # недостающийобъем

RANDOM VARIABLES

PRI(REAL):UNIFORM(LowLimit:=200,UpLimit:=400), # цена

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

ENDOFFirm

Приходя на рынок (базисный компонент 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 <ch>

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 <ch>;

END

END_LOOP <ch>

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]<CRITER[2][I] DO

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]<average_price

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 фирмы