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

📄 unit1.~pas

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

interface

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

type
  TForm1 = class(TForm)
    Panel2: TPanel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Panel3: TPanel;
    Label4: TLabel;
    Label5: TLabel;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    RadioGroup1: TRadioGroup;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Panel4: TPanel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Panel1: TPanel;
    Label1: TLabel;
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type array2=array[1..99,1..99] of real;  //声明的数组类型数据:二维数组
type array1=array[1..99] of integer;     //声明的数组类型数据:一维数组

var
  Form1: TForm1;
  i,j,k,l,m,n,p,q:integer;
  s:real;
  a,b:array2;  //a,b为二维数组变量
  c,d:array1;  //c,d为一维数组变量
implementation

{$R *.dfm}

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  edit1.text:='';
  edit2.Text:='';
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  m:=strtoint(edit1.text);    //m是行动方案数
  n:=strtoint(edit2.text);    //n是状态数
  stringgrid1.colcount:=n+1;  //stringgrid1控件的列数(包括固定列)
  stringgrid2.RowCount:=m+1;  //stringgrid2控件的行数(包括固定行)
  stringgrid2.ColCount:=n+1;  //stringgrid2控件的列数(包括固定列)
  for j:=1 to n do
  begin
    stringgrid1.Cells[j,0]:='p'+inttostr(j);
    stringgrid2.Cells[j,0]:='s'+inttostr(j);
  end;
  for i:=1 to m do
  begin
    stringgrid2.Cells[0,i]:='A'+inttostr(i);
  end;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
  for j:=1 to n do
  begin
    b[j,1]:=strtofloat(stringgrid1.Cells[j,1]);  //用b[j,1]存放各状态概率
  end;

  for i:=1 to m  do
  begin
      for j:=1 to n do
        a[j,i]:=strtofloat(stringgrid2.cells[j,i]);
               //将stringgrid2中所输入的矩阵数据即支付矩阵映射到二维熟组中
  end;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
  p:=1;
  q:=1;
  s:=b[1,1];
  c[1]:=1;
  for j:=2 to n do
    begin
      if b[j,1]=s then
      begin
        c[p+1]:=j;
        p:=p+1;
      end;

      if b[j,1]>s then
      begin
        s:=b[j,1];
        c[1]:=j;
        p:=1;
      end;
    end;
//q为概率为最大的状态总数(因不同状态可能同时取得最大概率)
//c[p]是各最大概率状态对应的列表
//s是最大概率值


    q:=p;
    edit3.Text:='  ';
    for p:=1 to q do
    begin
      edit3.text:=edit3.Text+'  '+'状态'+inttostr(c[p]);
    end;
//输出最大可能状态

    k:=1;
    l:=1;
    s:=a[c[1],1];
    d[1]:=1;
    if radiobutton1.checked then
    begin
      for p:=1 to q do
      begin
        for i:=1 to m do
        begin
          if a[c[p],i]>s then
          begin
            s:=a[c[p],i];
            d[1]:=i;
            k:=1;
          end;
          if a[c[p],i]=s  then
          begin
            d[k+1]:=i;
            k:=k+1;
          end;
        end;
        //当最大可能状态确定后,找出最佳益损值s(有可能不同方案同时取得最佳)
        //及其对应的方案号d[k]
      end;
    end;
//当决策目标是效益最大时,所求出的各项参数

    if radiobutton2.checked then
    begin
      for p:=1 to q do
      begin
        for i:=1 to m do
        begin
          if a[c[p],i]<s then
          begin
            s:=a[c[p],i];
            d[1]:=i;
            k:=1;
          end;
          if a[c[p],i]=s  then
          begin
            d[k+1]:=i;
            k:=k+1;
          end;
        end;
      end;
    end;
//当决策目标是损失最小时,所求出的各项参数

    l:=k;
    for i:=1 to l-1 do
    begin
      for j:=i+1 to l do
      begin
        if d[i]=d[j] then d[j]:=0;
      end;
    end;
    //去掉重复的方案号
    edit5.Text:=floattostr(s);  //输出最佳益损值

    edit4.Text:='  ';
    for k:=1 to l do
    begin
      if d[k]<>0 then
      begin
        edit4.text:=edit4.Text+'  '+'方案'+inttostr(d[k]);
      end;
    end;
    //输出最佳方案
end;

end.

⌨️ 快捷键说明

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