⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.~pas

📁 很好运筹学的DEOPHI原代码.包括动态规划,原始单纯形法,对策论,决策论等
💻 ~PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Grids, Buttons;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Panel1: TPanel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Panel2: TPanel;
    Label4: TLabel;
    StringGrid1: TStringGrid;  //存放对策矩阵数据的控件
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Panel3: TPanel;
    Label5: TLabel;
    Label6: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Edit5: TEdit;
    Edit6: TEdit;
    RadioGroup1: TRadioGroup;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Button1: TButton;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type array2=array[1..99,1..99] of real;  //声明的数组类型数据:二维数组
type array1=array[1..99] of real;        //声明的数组类型数据:一维数组
var
  Form1: TForm1;
  m,n,i,j,i1,j2:integer;
  s1,s2:real;
  a:array2;
  b,c:array1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  m:=strtoint(edit1.Text);
  n:=strtoint(edit2.Text);
  stringgrid1.RowCount:=m+1;  //stringgrid控件的行数(包括固定行)
  stringgrid1.ColCount:=n+1;  //stringgrid控件的列数(包括固定列)
  for i:=1 to m do
  begin
    stringgrid1.Cells[0,i]:='α'+inttostr(i);
  end;
  for j:=1 to n do
  begin
    stringgrid1.Cells[j,0]:='β'+inttostr(j);
  end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  edit1.Text:='';
  edit2.Text:='';  // 清空文本框中的数据
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
    for i:=1 to m  do
    begin
      for j:=1 to n do
        a[j,i]:=strtofloat(stringgrid1.cells[j,i]);
               //将stringgrid中所输入的矩阵数据映射到二维熟组中
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  edit5.Text:='';
  for i:=1 to m do
  begin
    b[i]:=a[1,i];  //一维数组b[i]首先等于二维数组中的各行的第一个元素
    for j:=1 to n do
    begin
      if a[j,i]<b[i] then b[i]:=a[j,i];  //b[i]是二维数组中的各行的最小元素
    end;
    edit5.Text:=edit5.Text+'  '+floattostr(b[i]);  //显示各行的最小元素
  end;

  s1:=b[1];
  i1:=1;
  for i:=2 to m do
  begin
    if b[i]>s1 then
      begin
        s1:=b[i];  //S1是各行最小元素中的最大者
        i1:=i;     //i1是所求的各行最小元素中的最大者在数组中所对应的行标
      end;
  end;

  edit6.Text:='';
  for j:=1 to n do
  begin
    c[j]:=a[j,1];  //一维数组c[j]首先等于二维数组中的各列的第一个元素
    for i:=1 to m do
      if a[j,i]>c[j] then c[j]:=a[j,i];  //c[j]是二维数组中的各列的最大元素
    edit6.Text:=edit6.Text+'  '+floattostr(c[j]);  //显示各列的最大元素
  end;


  s2:=c[1];
  j2:=1;
  for j:=2 to n do
  begin
    if c[j]<s2 then
    begin
      s2:=c[j];  //S2是各列最大元素中的最小者
      j2:=j;     //j2是所求的各行最大元素中的最小者在数组中所对应的列标
    end;
  end;

  if s1=s2 then
    radiobutton1.checked:=true  //如果s1=s2则表示存在最优纯策略
  else radiobutton2.checked:=true;  //如果s1<>s2则表示不存在最优纯策略

  if s1=s2 then
    begin
      edit3.text:='(α'+inttostr(i1)+',β'+inttostr(j2)+')';  //输出最优策略
      edit4.Text:=floattostr(s1);  //输出对策值
    end;  
end;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -