ER 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, # масив збігів p> 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) p> DO
k: = k +1/9; # ступінь задоволеності покупця
END
END
END_LOOP
QuBu [J] [I]: = k;
END_LOOP
END_LOOP p> # Вибір покупцем найбільш відповідний фірми
FOR I FROM...