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

📄 unit1.~pas

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

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Label1: TLabel;
    Panel3: TPanel;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Label4: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Label10: TLabel;
    Label9: TLabel;
    Edit9: TEdit;
    pgMain: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Label7: TLabel;
    Label6: TLabel;
    Edit4: TEdit;
    Edit5: TEdit;
    Label5: TLabel;
    Edit6: TEdit;
    Label11: TLabel;
    Edit7: TEdit;
    Label8: TLabel;
    Edit8: TEdit;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Edit10: TEdit;
    Edit11: TEdit;
    Label15: TLabel;
    Label16: TLabel;
    Edit12: TEdit;
    Edit13: TEdit;
    Label17: TLabel;
    GroupBox1: TGroupBox;
    Label19: TLabel;
    CB1: TComboBox;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
   
    procedure CB1Change(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation


uses math;
{$R *.dfm}

function jiecheng(n:integer):integer; //阶乘函数
var i,s:integer ;
begin
  s:=1;
  for i:=1 to n do
    s:=s*i;
  result:=s;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var m,n,x,u,i,j:integer;
    S,S1,S2,qp,P0,Pmang,Adan,Aduo,K,K1,K2,Wdan,Wduo,Lq,Psun:real;
begin
  if (edit1.Text='') or (edit2.Text='')or (edit3.Text='') or (edit9.Text='')  then
    begin
      showmessage('请输入完整数据!');
      exit;
    end;
    m:=strtoint(edit1.text);
    n:=strtoint(edit2.text);
    x:=strtoint(edit3.text);
    u:=strtoint(edit9.text);
    qp:=x/u ;
    S1:=0; S2:=0;
    for i:=1 to m do
      S1:=S1+ jiecheng(n)*power(qp,i)/(jiecheng(n-i)*jiecheng(i));
    for j:=m+1 to n do
      S2:=S2+ jiecheng(n)*power(qp,j)/(jiecheng(n-j)*jiecheng(m)*power(m,j-m));
    S:=1+S1+S2;
    P0:=1/S;                                 //系统空闲概率
    if  cb1.ItemIndex=0  then                //单通道系统
      begin
        Pmang:=1-P0;                         //维护队忙的概率
        Adan:=(1-P0)*u;                      //系统的绝对通过能力
        Wdan:=n-(1-P0)/qp;                   //损坏道路的平均数
        Lq:=n-(1-P0)*(1+1/qp);               //排队等待抢修的道路平均数
        Psun:=Wdan/n;                        //系统的损失率
        edit4.Text:=formatfloat('0.000',Pmang);
        edit5.Text:=formatfloat('0.000',Adan);
        edit6.Text:=formatfloat('0.000',Wdan);
        edit7.Text:=formatfloat('0.000',Lq);
        edit8.Text:=formatfloat('0.000',Psun);
      end
    else                                       //多通道系统
      begin                             
        K1:=0;  K2:=0;
        for  i:=0 to m-1 do
          K1:=K1+i*jiecheng(n)*power(qp,i)*P0/(jiecheng(n-i));
        for i:=1 to m-1 do
          K2:=K2+m*(1-P0-jiecheng(n)*power(qp,i)*P0/(jiecheng(n-i)));
        K:=K1+K2;                                               //占用维护分队的平均数
        Aduo:=K*u;                                              //系统的绝对通过能力
        Wduo:=n-Aduo/x;                                         //损坏道路的平均数
        edit10.Text:=formatfloat('0.000',P0);
        edit11.Text:=formatfloat('0.000',K);
        edit12.Text:=formatfloat('0.000',Aduo);
        edit13.Text:=formatfloat('0.000',Wduo);
      end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
  for i:= 0 to pgMain.PageCount - 1 do
    pgMain.Pages[I].TabVisible := False;
  pgmain.ActivePageIndex:=cb1.ItemIndex;
  edit1.Text:='1';
  edit1.Enabled:=false;
  label2.Enabled:=false;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.CB1Change(Sender: TObject);
begin
  edit1.Text:='';edit2.Text:='';edit3.Text:='';
  edit9.Text:='';edit4.Text:='';edit5.Text:='';
  edit6.Text:='';edit7.Text:='';edit8.Text:='';
  edit10.Text:='';edit11.Text:='';edit12.Text:='';
  edit13.Text:='';
  pgmain.ActivePageIndex:=cb1.ItemIndex;
  if  cb1.ItemIndex=0 then
    begin
      edit1.Text:='1';
      edit1.Enabled:=false;
      label2.Enabled:=false;
    end 
  else
    begin
      edit1.Text:='';
      edit1.Enabled:=true;
      label2.Enabled:=true;
    end;
end;

end.

⌨️ 快捷键说明

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