Автор работы: Пользователь скрыл имя, 17 Мая 2011 в 04:21, курсовая работа
Целью работы является исследование вопросов принятия решения в условиях, когда выбор некоторой стратегии гарантирует получение результата с определенной вероятностью, и разработка программного модуля. Упрощение матрицы игры. Критерий Байеса. Критерий Лапласа. Критерий относительных значений вероятностей состояний природы с учетом выигрышей (рисков). Программа для расчета, интерфейс, код, пример.
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(
begin
begin
if not (key in ['0'..'9',#8]) then key:=#0;
end;
end;
procedure TForm1.StringGrid2KeyPress(
begin
begin
if not (key in ['0'..'9','.',',',#8]) then key:=#0;
end;
end;
procedure TForm1.StringGrid3KeyPress(
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(
// äëÿ
ìàòðèöû èãðû îïðåäåëåíèÿ
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('Íàøåë
// äëÿ ìàòðèöû ðèñêîâ îïðåäåëåíèÿ ìèíèìóìà
if RadioButton4.Checked=true then begin
for i:=1 to SpinEdit2.Value-1 do
if a[max]>a[i] then max:=i; ShowMessage('Íàøåë
// äëÿ ðàñ÷èòàííîé ìàòðèöû ðèñêîâ
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(
for i:=1 to SpinEdit2.Value-1 do
if a[maxr]>a[i] then maxr:=i;
if max=maxr then ShowMessage('Îïòèìàëüíûå çíà÷
else ShowMessage('Íàøåë
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(
// äëÿ
ìàòðèöû èãðû îïðåäåëåíèÿ
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('Íàøåë
// äëÿ ìàòðèöû ðèñêîâ îïðåäåëåíèÿ ìèíèìóìà
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(
for i:=1 to SpinEdit2.Value-1 do
if a[maxr]>a[i] then maxr:=i;
if max=maxr then ShowMessage('Îïòèìàëüíûå çíà÷
else ShowMessage('Íàøåë
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(
// äëÿ
ìàòðèöû èãðû îïðåäåëåíèÿ
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('Íàøåë
// äëÿ ìàòðèöû ðèñêîâ îïðåäåëåíèÿ ìèíèìóìà
if RadioButton4.Checked=true then begin
for i:=1 to SpinEdit2.Value-1 do
if a[max]>a[i] then max:=i; ShowMessage('Íàøåë
// äëÿ ðàñ÷èòàííîé ìàòðèöû ðèñêîâ
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(
for i:=1 to SpinEdit2.Value-1 do
if a[maxr]>a[i] then maxr:=i;
if max=maxr then ShowMessage('Îïòèìàëüíûå çíà÷
else ShowMessage('Íàøåë
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,
if strtoint(StringGrid1.Cells[i,
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,
if strtoint(StringGrid1.Cells[i,
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]:=
SpinEdit2.Value:=SpinEdit2.
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;