Моделирование работы банка

базой) для установления регулирующими органами нормативов, определяющих контролируемые показатели их деятельности. Наконец, чем больше размер капитала банка, тем выше уверенность его вкладчиков, кредиторов и клиентов, поскольку при этом повышается его надежность. Т.о. для получения наибольшей прибыли предполагается создание и организация: системы информации; системы прогнозирования денежных ресурсов; системы принятия решений; системы контроля. Представление динамической модели работы банка в виде программы оправды-вает себя, когда число отделов (S) и объемы финансирования (N) достаточно большие. (Уже при S>4 , N>10) В этом случае преимущества такого подхода к решению задачи неоспоримы, так как в ручную рассчитать такой объем информации сложно, и программа дает неплохие результаты. Программа настроена на определенную организационную структуру, базирующуюся на отделах. Методика, изложенная в данной работе, может быть применена в любом отдельно взятом банке. Например, в следующих банках: Возрождение, Волгопромбанк, Индустриальный, РусЮгБанк, Сава и др.

Приложение 1.

Модель общего вида задачи распределения усилий.

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

Максимизировать (1)

при ограничениях (2) yj = 0 , 1, 2, ... при любом j. (3) Допустим, что каждая функция Hj(yj) есть неубывающая функция, принимающая целочисленные значения при любом yj = 0, 1, 2, ... и удовлетворяющая условию Hj(0) = 0. Для упрощения рассуждений принимается, что H1(y1) = y1, вследствие чего допустимое решение существует при любом значении N. На каждую величину yj можно также наложить ограничение сверху. Рекуррентное соотношение динамического программирования, соответствующее задаче (1) (3), имеет следующий вид: gj = max {Rj (yj) +gj-1 [ n Hj(yj)]}, j = 1,2,...,s, (4) g0 ( n ) ? 0, j = 0 , (5) где n = 0, 1, ..., N, а максимум берется только по неотрицательным целочисленным значениям yj, удовлетворяющим условию Hj(yj) ? n. Отыскивается значение gs(N). Для выполнения вычислений нужно определить по выражению (4) значения каждой функции gj(n) при n = 0, 1, ..., N, начиная с j = 1 и заканчивая j=s. [4].

Приложение 2.

Листинг. { Динамическая модель работы банка } program Bank;

uses Crt;

const S = 10; { Число отделов } N = 67; { Общий объем финансирования } Lmax = 17; { Максимальное финансирование отдела }

{ Зависимости доходов от вложений по видам исследований и отделам } P : array[1..S, 0..Lmax] of integer = ( {0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 } (0, 0, 3, 1, 1, 22, 10, 17, 2, 9, 10, 6, 6, 17, 14, 10, 10, 10 ), (0, 0, 3, 1, 1, 2, 10, 17, 9, 2, 11, 7, 6, 13, 13, 13, 13, 13 ), (0, 0, 3, 8, 1, 20, 17, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 8 ), (0, 1, 3, 1, 1, 22, 10, 17, 3, 9, 20, 6, 6, 17, 14, 10, 10, 10 ), (0, 1, 30,8, 1, 2, 11, 17, 4, 2, 11,27,26, 33, 33, 33, 33, 33 ), (0, 1, 3, 7, 1, 14, 17, 6, 6, 6, 6, 7,17, 18, 18, 18, 8, 28 ), (0, 3, 2, 6, 1, 22, 10, 14, 7, 9, 10, 6, 6, 17, 14, 15, 10, 11 ), (0, 3, 1, 5, 1, 2, 0, 17, 9, 2, 11, 7, 6, 13, 13, 13, 13, 13 ), (0, 5, 6, 14,1, 21, 15, 6, 8, 6, 6, 7, 7, 8, 11, 8, 8, 8 ), (0, 6, 9, 3, 1, 20, 12, 4, 6, 1, 6, 7, 7, 8, 14, 18, 28, 38 ) );

Q : array[1..S, 0..Lmax] of integer = ( {0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 } (0, 0,13, 3, 3, 23, 30, 15,12,19, 11, 1, 1, 11, 13, 14, 14, 14 ), (0, 0, 3, 1,11, 2, 10, 17,19, 2, 11, 7, 6, 13, 13, 33, 33, 14 ), (0, 0, 3, 8,11, 20, 17, 6, 16, 6, 6, 7, 7, 8, 8, 38, 48, 5 ), (0, 1, 3, 1,11, 22, 10, 17,13, 9, 20, 6, 6, 17, 14, 40, 14, 15 ), (0, 1, 30,8,11, 2, 11, 17,11, 2, 11,27,26, 33, 33, 32, 34, 35 ), (0, 1, 3, 7,11, 14, 17, 6, 16,16,16, 17,17, 18, 18, 28, 14, 25 ), (0, 3, 2, 6,11, 22, 10, 14,17,19, 10, 6,16, 17, 14, 15, 10, 15 ), (0, 3, 1, 5,11, 2, 0, 17,19,12, 11, 7,16, 13, 13, 13, 15, 13 ), (0, 5, 6, 14, 11, 21, 15, 6, 18,16,16, 17,17, 8, 11, 18, 18, 18 ), (0, 6, 9, 3,11, 20, 12, 4, 16,11,16, 7, 7, 8, 14, 18, 28, 38 )

);

R : array[1..S, 0..Lmax] of integer = ( {0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 } (0, 0, 0, 0, 0, 20, 0, 10, 0, 0, 10, 0, 6, 10, 10, 10, 10, 10 ), (0, 0,13,11, 1,12, 10, 17,19,12, 11,17,16, 13, 13, 13, 13, 13 ), (0, 0,13,28,11, 20, 17,16, 16,16,16, 27,37, 38, 38, 18, 18, 8 ), (0,11,13,21,11, 22, 10, 17, 3, 9, 20, 6, 6, 17, 14, 10, 10, 10 ), (0,11, 30,8,11,12, 11, 17,14, 2, 11,27,26, 33, 33, 33, 33, 33 ), (0,11,13,27, 1, 14, 17,16, 16, 6, 6, 7,17, 18, 18, 18, 8, 28 ), (0,13,12,26, 1, 22, 10, 14,17, 9, 10,26,26, 17, 14, 15, 10, 11 ), (0,13,11,25,21, 2, 0, 17,19, 2, 11,27,26, 13, 13, 13, 13, 13 ), (0,15,16,21,21, 21, 15,16, 18, 6, 6, 27,27, 28, 11, 28, 28, 8 ), (0,16,19,23, 1, 20, 12, 4, 26,21,26, 27,27, 28, 14, 18, 28, 38 )

);

{ Максимальные объемы финансирования отделов } L : array[1..S] of integer = ( 12, 5, 3, 10, 11, 7, 8, 10, 6, 17 );

function min(a, b : integer) : integer; begin if a > b then min := b else min := a; end;

var i, j, y, k, f : integer; Sum, nn : integer;

pp, qq, rr : array[1..S, 0..Lmax] of integer;

T : array[0..S, 0..N] of record y, g : integer; end;

T2 : array[0..3, 0..Lmax] of record y, g : integer; end;

Income : array[1..S, 0..3] of integer;

begin ClrScr;

{ Поиск p(y) } for j := 1 to S do for y := 0 to L[j] do pp[j, y] := P[j, y];

{ Поиск q(y) } for j := 1 to S do for y := 0 to L[j] do begin qq[j, y] := Q[j, 0] + pp[j, y]; for i := 1 to y do if Q[j, i] + pp[j, y-i] > qq[j, y] then qq[j, y] := Q[j, i] + pp[j, y-i]; end;

{ Поиск r(y) } for j := 1 to S do for y := 0 to L[j] do begin rr[j, y] := R[j, 0] + qq[j, y]; for i := 1 to y do if R[j, i] + qq[j, y-i] > rr[j, y] then rr[j, y] := R[j, i] + qq[j, y-i]; end;

{ Поиск g } for i := 0 to N do begin T[0, i].y := 0; T[0, i].g := 0; end;

for j := 1 to S do for i := 0 to N do begin T[j, i].y := 0; T[j, i].g := rr[j, 0] + T[j-1, i].g; for y := 1 to min(L[j], i) do if rr[j, y] + T[j-1, i-y].g > T[j, i].g then begin T[j, i].y := y; T[j, i].g := rr[j, y] + T[j-1, i-y].g; end; end;

{ Распределение средств по отделам } nn := N; for j := S downto 1 do begin Income[j, 0] := T[j, nn].y; nn := nn - Income[j, 0]; end;

{ Распределение средств в каждом отделе } for k := 1 to S do begin for i := 0 to Income[k, 0] do begin T2[0, i].y := 0; T2[0, i].g := 0; end;

for j := 1 to 3 do for i := 0 to Income[k, 0] do begin T2[j, i].y := 0; case j of 1 : T2[j, i].g := P[k, 0] + T2[j-1, i].g; 2 : T2[j, i].g := Q[k, 0] + T2[j-1, i].g; 3 : T2[j, i].g := R[k, 0] + T2[j-1, i].g; end;

for y := 1 to i do begin case j of 1 : f := P[k, y]; 2 : f := Q[k, y]; 3 : f := R[k, y]; end;

скачать реферат
первая   ... 3 4 5 6 7