• Імітаційна модель поведінки інтелектуального агента в умовах конкуренції
  • Постановка задачі
  • FUNCTION strategy


  • Дата конвертації24.03.2017
    Розмір27.19 Kb.
    Типреферат

    Скачати 27.19 Kb.

    Імітаційна модель інтелектуального агента в умовах конкуренції

    Московський Державний Університет

    прикладний Біотехнології

    Кафедра «Комп'ютерні технології та системи»

    реферат:

    «Імітаційна модель інтелектуального агента в умовах конкуренції»

    виконала:

    студентка АБС 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

    #include

    #include

    #include

    #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

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


    Головна сторінка


        Головна сторінка



    Імітаційна модель інтелектуального агента в умовах конкуренції

    Скачати 27.19 Kb.