МОДЕЛЬ ПОВЕДЕНИЯ ФИРМЫ В УСЛОВИЯХ КОНКУРЕНЦИИ

Моспан А.А.

Руководитель Дацун Н.Н.

Восьмая межвузовская студенческая научная конференция, Секция: современные проблемы менеджмента и экономики глазами молодых, Донецкий институт психологии и предпринимательства, г.Донецк, 16 мая 2006 г.


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

  Ряд ситуаций в области экономики также принадлежит к конфликтным, в роли борющихся сторон выступают торговые фирмы, предприятия, тресты, монополии и т.д. Необходимость анализировать такие ситуации вызвала к жизни специальный математический аппарат – теорию игр. Чтобы математически анализировать ситуацию, необходимо отвлечься от второстепенных факторов и построить упрощенную, схематизированную модель ситуации. Такая модель называется игрой. От реальной конфликтной ситуации игра отличается тем, что ведется по определенным правилам. В экономике и менеджменте к задачам теории игр могут быть сведены задачи «спрос-предложение», о проведении рекламных кампаний одного вида товара различными фирмами, о хранении и реализации продукции и т.п. Автоматизация решение задачи теории игр может быть выполнена с помощью копьютерных программ. Рассмотрим задачу теории игр в чистых стратегиях (т.е. только на сознательном выборе игроков возможных вариантов действий), и принципе минимакса (т.е. принципе осторожности, диктующий игрокам выбор соответствующих стратегий (максиминной и минимаксной)).

  Построим модель такой задачи.
Постановка задачи:
Исходные данные:
      m, n: целые {количество стратегий игроков};
       А: массив [1…m] – строковый {названия стратегий первого игрока};
       В: массив [1….n] – строковый {названия стратегий второго игрока};
       С: двумерный массив [1...m,1...n] – вещественный {платежная матрица};
       K,L: строковые {названия игроков}.
Ограничения:
       1< m =<10 {количество стратегий игрока должно быть больше 1,
       1< n =<10 но меньше или равно 10 }.
Результат:
       D: вещественное {седловая точка};
       NA, NB: целые {номера названий стратегий соответствующего игрока};
       OSA, OSB: строковые {переменные, запоминающие номер названия стратегий, определяющих седловую точку};
сообщение: строковое { - об ошибке, если седловая точка не найдена, - если найдена седловая точка, то показать ее цену игры};
       VCI, NCI: вещественные {верхняя и нижняя цена соответственно}.
Связь:

αi = minj αij {минимальное число из чисел αij в i-той строке}

NCI = maxi αi = maxi minj αij {максимальное число среди минимальных αij}

βj = maxi αij {максимальное число из чисел αij в j-том столбце}

VCI = minj αj = minj maxi αij {минимальное число среди максимальных αij}

D определяется при условии NCI=VCI:
      Если NCI=VCI, то D =NCI
                                      сообщение = «Существует седловая точка D (m, n)»
                                     OSA=A[NA]
                                     OSB= B[NB]
      Если NCI<>VCI, то
                                     сообщение: «Нет решения в чистых стратегиях»

  Разработка метода решения задачи: {решаем с помощью метода перебора}
NCI: = max
max: = ai
NA: = i, при ai > max, i: = 1,m
max : = - 1000000
ai:= min
min:= aij, при aij < min, j=1,n, i: =1,m
min:= 1000000

D=NCI
сообщение: «Существует седловая точка D ()», при NCI=VCI
OSA = A[NA]
OSB = B[NB]
сообщение: «Нет решения в чистых стратегиях», при NCI<>VCI

VCI:= min
min:= bj
NB:= bj, при bj max: = 1000000

bj:= max
max:= aij, при aij > max, i:= 1,m, j:=1,n max:= -1000000

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

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

  Программа написана на языке программирования Visual Basic 6.0. Работа программы осуществляется с помощью специальных методов, циклов и соответствующих процедур обработки событий:

  1. Ввод стратегий каждого игрока: использована процедура обработки событий Private Sub Combo_KeyPress(KeyAscii As Integer). Где код KeyAscii = 13 и является кодом клавиши ENTER, при нажатии которой названия стратегий заносятся в список. При этом элементы списка нумеруются и запоминаются в переменной N.
  2. Вывод платежной матрицы: матрица открывается размером m*n, где m и n количество стратегий игроков, причем 1< m =<10 и 1< n =<10. При этом использована основная форма циклов в VB – цикл For…Next. Пример из кода программы:
          Dim i As Integer, j As Integer
           For i = 0 To N - 1
            Label1(i).Visible = True
           Next i
           For j = 0 To M - 1
            Label2(j).Visible = True
           Next j
  3. Выбор, из введенных пользователем числовых значений в матрицу, минимумов и максимумов: осуществляется с помощью того же цикла For…Next и оператора If …Then…Else, который представляет собой простейшую и самую распространенную форму проверки условий в VB. Пример кода из программы:
          For i = 0 To M - 1
             min(i) = A(i, 0)
           For j = 1 To N - 1
             If A(i, j) < min(i) Then
            min(i) = A(i, j)
           End If
         Next j
        Next i
  4. Нахождение максимума среди минимумов и минимума среди максимума: использованы те же цикл For и оператор If. При этом если эти два значения совпадают, то седловая точка найдена. Пример кода:
          maxmin = min(0)     Сравниваются значения maxmin и maxm = 0
    minmax .         For i = 1 To M - 1
             If min(i) > maxmin Then
              maxmin = min(i)
              maxm = i
             End If
            Next i
            minmax = max(0)
           minn = 0
            For j = 1 To N - 1
             If max(j) < minmax Then
              minmax = max(j)
              minn = j
            End If
    совпадение значений minmax и maxmin влечет за собой вывод сообщения:
          If minmax = maxmin Then          MsgBox ("Для фирм " + z + " и " + d + " существует седловая точка D с оптимальными стратегиями (" + Str$(maxm + 1) + "," + Str$(minn + 1) + ")")
           Else
             MsgBox ("Для фирм " + z + " и " + d + " нет решения в чистых стратегиях!")
           End If

  При этом использован оператор стандартного диалогового окна MsgBox. В этом окне отображаются названия фирм, введенных пользователем вначале работы приложения (z, d), а также сама седловая точка D (номер строки и столбца с названиями стратегий двух игроков). Таким образом решение задачи теории игр по используемой модели и ее программное решение дают возможность руководителю фирмы получить рекомендации по стратегии фирмы в текстовом виде. Это значительно облегчает окочательное принятие решений в условиях конкуренции.


© Моспан А.А. 2010