Моделирование работы банка
базой) для установления регулирующими органами нормативов, определяющих контролируемые показатели их деятельности. Наконец, чем больше размер капитала банка, тем выше уверенность его вкладчиков, кредиторов и клиентов, поскольку при этом повышается его надежность.
Т.о. для получения наибольшей прибыли предполагается создание и организация:
системы информации;
системы прогнозирования денежных ресурсов;
системы принятия решений;
системы контроля.
Представление динамической модели работы банка в виде программы оправды-вает себя, когда число отделов (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