Принятие решений в условиях риска

Автор работы: Пользователь скрыл имя, 17 Мая 2011 в 04:21, курсовая работа

Описание работы

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

Файлы: 1 файл

Федеральное агентство по образованию.doc

— 1.02 Мб (Скачать файл)

       end;

    StringGrid2.Cells[i,0]:='';

    Form2.StringGrid1.Cells[i,1]:='';

    Form2.StringGrid2.Cells[i,1]:='';

    end;

  end; 

  procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

  begin

  Form2.Close;

  end; 

  procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

  begin

  begin

  if  not (key in ['0'..'9',#8]) then key:=#0;

  end;

  end;

  procedure TForm1.StringGrid2KeyPress(Sender: TObject; var Key: Char);

  begin

  begin

  if  not (key in ['0'..'9','.',',',#8]) then key:=#0;

  end;

  end;

  procedure TForm1.StringGrid3KeyPress(Sender: TObject; var Key: Char);

  begin

  begin

  if  not (key in ['0'..'9',#8]) then key:=#0;

  end;

  end; 

  procedure TForm1.Button4Click(Sender: TObject);

  var

  i,j,max,maxr:integer;

  f:boolean;

  a: array [0..12] of Real;

  begin

  f:=true;

  max:=0;

  maxr:=0;

  for i:=0 to SpinEdit2.Value-1 do

       a[i]:=0;

  for i:=1 to SpinEdit1.Value do

    for j:=1 to SpinEdit2.Value do

         if StringGrid1.Cells[i,j]='' then f:=false;

  if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

  else begin

  f:=true;

  // ÊÐÈÒÅÐÈÉ ÁÀÉÅÑÀ

  if CheckBox1.Checked=true then begin

    for i:=1 to SpinEdit1.Value do

           if StringGrid2.Cells[i,0]='' then f:=false;

    if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

    else begin

  // äëÿ  ìàòðèöû èãðû ïîäñò÷åò ìàò  îæèäàíèÿ

      for i:=1 to SpinEdit1.Value do

          for j:=1 to SpinEdit2.Value do

              a[j-1]:=a[j-1]+strtoint(StringGrid1.Cells[i,j])*strtofloat(StringGrid2.Cells[i,0]);

  // äëÿ  ìàòðèöû èãðû îïðåäåëåíèÿ ìàêñèìóìà

      if RadioButton3.Checked=true then begin

      for i:=1 to SpinEdit2.Value-1 do

            if a[max]<a[i] then max:=i;

            if Form1.Height<757 then

            ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)); end;

  // äëÿ  ìàòðèöû ðèñêîâ  îïðåäåëåíèÿ ìèíèìóìà

      if RadioButton4.Checked=true then begin

       for i:=1 to SpinEdit2.Value-1 do

            if a[max]>a[i] then max:=i; ShowMessage('Íàøåë îïòèìàëüíûé   ìèíèìóì: À'+inttostr(max+1)); end;

  // äëÿ  ðàñ÷èòàííîé ìàòðèöû ðèñêîâ

      if (Form1.Height=757) and (RadioButton3.Checked=true) then begin

        f:=true;

        for i:=1 to SpinEdit1.Value do

           for j:=1 to SpinEdit2.Value do

           if StringGrid3.Cells[i,j]='' then f:=false;

           if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

           else begin

             for i:=0 to SpinEdit2.Value-1 do

                   a[i]:=0;

             for i:=1 to SpinEdit1.Value do

                 for j:=1 to SpinEdit2.Value do

                     a[j-1]:=a[j-1]+strtoint(StringGrid3.Cells[i,j])*strtofloat(StringGrid2.Cells[i,0]);

             for i:=1 to SpinEdit2.Value-1 do

                   if a[maxr]>a[i] then maxr:=i;

           if max=maxr then ShowMessage('Îïòèìàëüíûå çíà÷åíèÿ  ñîâïàäàþò: À'+inttostr(max+1))

           else ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)+'; Íàøåë îïòèìàëüíûé  ìèíèìóì: À'+inttostr(maxr+1))

           end;

       end;

    end;

  end;

  // ÊÐÈÒÅÐÈÉ  ËÀÏËÀÑÀ

  If (CheckBox2.Checked=true) and (RadioButton1.Checked=true) then  begin

  // äëÿ  ìàòðèöû èãðû ïîäñò÷åò ìàò  îæèäàíèÿ

      for i:=1 to SpinEdit1.Value do

          for j:=1 to SpinEdit2.Value do

              a[j-1]:=a[j-1]+strtoint(StringGrid1.Cells[i,j]);

  // äëÿ  ìàòðèöû èãðû îïðåäåëåíèÿ ìàêñèìóìà

      if RadioButton3.Checked=true then Begin

      for i:=1 to SpinEdit2.Value-1 do

            if a[max]<a[i] then max:=i;

            if Form1.Height<757 then

            ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)); end;

  // äëÿ  ìàòðèöû ðèñêîâ  îïðåäåëåíèÿ ìèíèìóìà

      if RadioButton4.Checked=true then begin

       for i:=1 to SpinEdit2.Value-1 do

            if a[max]>a[i] then max:=i; ShowMessage('Íàøåë îïòèìàëüíûé ìèíèìóì: À'+inttostr(max+1)); end;

  // äëÿ  ðàñ÷èòàííîé ìàòðèöû ðèñêîâ

      if (Form1.Height=757) and (RadioButton3.Checked=true) then begin

        f:=true;

        for i:=1 to SpinEdit1.Value do

           for j:=1 to SpinEdit2.Value do

        if StringGrid3.Cells[i,j]='' then f:=false;

        if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

        else begin

             for i:=0 to SpinEdit2.Value-1 do

                   a[i]:=0;

             for i:=1 to SpinEdit1.Value do

                 for j:=1 to SpinEdit2.Value do

                     a[j-1]:=a[j-1]+strtoint(StringGrid3.Cells[i,j]);

             for i:=1 to SpinEdit2.Value-1 do

                   if a[maxr]>a[i] then maxr:=i;

           if max=maxr then ShowMessage('Îïòèìàëüíûå çíà÷åíèÿ ñîâïàäàþò: À'+inttostr(max+1))

           else ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)+'; Íàøåë îïòèìàëüíûé   ìèíèìóì: À'+inttostr(maxr+1))

        end;

      end;

  end;

  f:=true;

  // ÒÐÅÒÈÉ  ÊÐÈÒÅÐÈÉ

  If (CheckBox2.Checked=true) and (RadioButton2.Checked=true) then  begin

    for i:=1 to SpinEdit1.Value do

           if StringGrid2.Cells[i,0]='' then f:=false;

    if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

    else begin

  // äëÿ  ìàòðèöû èãðû ïîäñò÷åò ìàò  îæèäàíèÿ

      for i:=1 to SpinEdit1.Value do

          for j:=1 to SpinEdit2.Value do

              a[j-1]:=a[j-1]+strtoint(StringGrid1.Cells[i,j])*strtofloat(StringGrid2.Cells[i,0]);

  // äëÿ  ìàòðèöû èãðû îïðåäåëåíèÿ ìàêñèìóìà

      if RadioButton3.Checked=true then begin

      for i:=1 to SpinEdit2.Value-1 do

            if a[max]<a[i] then max:=i;

            if Form1.Height<757 then

            ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)); end;

  // äëÿ  ìàòðèöû ðèñêîâ  îïðåäåëåíèÿ ìèíèìóìà

      if RadioButton4.Checked=true then  begin

       for i:=1 to SpinEdit2.Value-1 do

            if a[max]>a[i] then max:=i; ShowMessage('Íàøåë îïòèìàëüíûé   ìèíèìóì: À'+inttostr(max+1)); end;

  // äëÿ  ðàñ÷èòàííîé ìàòðèöû ðèñêîâ

      if (Form1.Height=757) and (RadioButton3.Checked=true) then begin

        f:=true;

       for i:=1 to SpinEdit1.Value do

           for j:=1 to SpinEdit2.Value do

           if StringGrid3.Cells[i,j]='' then f:=false;

           if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

           else begin

             for i:=0 to SpinEdit2.Value-1 do

                   a[i]:=0;

             for i:=1 to SpinEdit1.Value do

                 for j:=1 to SpinEdit2.Value do

                     a[j-1]:=a[j-1]+strtoint(StringGrid3.Cells[i,j])*strtofloat(StringGrid2.Cells[i,0]);

             for i:=1 to SpinEdit2.Value-1 do

                   if a[maxr]>a[i] then maxr:=i;

           if max=maxr then ShowMessage('Îïòèìàëüíûå çíà÷åíèÿ  ñîâïàäàþò: À'+inttostr(max+1))

           else ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)+'; Íàøåë îïòèìàëüíûé   ìèíèìóì: À'+inttostr(maxr+1))

           end;

        end;

    end;

  end;

  end;

  end; 

  procedure TForm1.Button1Click(Sender: TObject);

  var

  s: string;

  i,j,l,p,k:integer;

  f:boolean;

  a: array [0..13] of integer;

  begin

  f:=true;

  for i:=1 to SpinEdit1.Value do

    for j:=1 to SpinEdit2.Value do

         if StringGrid1.Cells[i,j]='' then f:=false;

  if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')

  else begin

  p:=0; k:=0;

  for i:=1 to SpinEdit1.Value do

   a[i]:=0;

  if RadioButton3.Checked=true then

  for l:=1 to SpinEdit2.Value-1 do

    for j:=l+1 to SpinEdit2.Value do begin

      for i:=1 to SpinEdit1.Value do  begin

              if strtoint(StringGrid1.Cells[i,l])>=strtoint(StringGrid1.Cells[i,j]) then p:=p+1;

              if strtoint(StringGrid1.Cells[i,1])<strtoint(StringGrid1.Cells[i,j]) then k:=k+1; end;

      if (p=SpinEdit1.Value) then a[j]:=-1;

      if (k=SpinEdit1.Value) then a[l]:=-1;

      p:=0;

      k:=0;

    end;

  if RadioButton4.Checked=true then 

  for l:=1 to SpinEdit2.Value-1 do

    for j:=l+1 to SpinEdit2.Value do begin

      for i:=1 to SpinEdit1.Value do  begin

              if strtoint(StringGrid1.Cells[i,l])<=strtoint(StringGrid1.Cells[i,j]) then p:=p+1;

              if strtoint(StringGrid1.Cells[i,1])>strtoint(StringGrid1.Cells[i,j]) then k:=k+1; end;

      if (p=SpinEdit1.Value) then a[j]:=-1;

      if (k=SpinEdit1.Value) then a[l]:=-1;

      p:=0;

      k:=0;

    end;

  for j:=1 to SpinEdit2.Value do

        if  a[j]=-1 then begin

        s := s + 'A' + inttostr(j)+' ';

        if SpinEdit2.Value>2 then

           for i:=1 to SpinEdit1.Value do

              StringGrid1.Cells[i,j]:=StringGrid1.Cells[i,j+1];

        SpinEdit2.Value:=SpinEdit2.Value-1; end;

  if s='' then ShowMessage('Íå  òðåáóåòñÿ') else begin

    ShowMessage('Óáðàë  '+s);

    If SpinEdit2.Value<=2 then

      for i:=1 to SpinEdit2.Value do

      if (a[i]=0) then ShowMessage(' ðåçóëüòàòå óïðîùåíèÿ îñòàëàñü òîëüêî 1 ñòðàòåãèÿ, ñëåäóò ñ÷èòàòü îïòèìàëüíîé À'+inttostr(i))

    end;

  end;

  end; 

  end. 

  Дополнительный модуль: 

  unit Unit2; 

  interface 

  uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, Grids, StdCtrls, Spin; 

  type

    TForm2 = class(TForm)

      StringGrid1: TStringGrid;

Информация о работе Принятие решений в условиях риска