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

📄 unit1.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, StdCtrls, Buttons;
const long=20;
type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Pgmain: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    Label1: TLabel;
    Edit1: TEdit;
    BitBtn2: TBitBtn;
    Button1: TButton;
    Button2: TButton;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label8: TLabel;
    Edit2: TEdit;
    Label11: TLabel;
    Edit8: TEdit;
    GroupBox3: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Edit4: TEdit;
    Edit5: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Edit6: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure FormActivate(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type  myarray1=array[1..long]  of  array[1..long]  of  tedit;
type  myarray2=array[1..long]  of  Tlabel;
type  yuansu=record
      zhi: real;
      xuhao:integer;
end;
var
  Form1: TForm1;

implementation
{$R *.dfm}
var n:integer;
    Cp,Cd,D:real;
    shuru1:myarray1;
    shuru2: myarray2;

function feiyong(a,b:real):real;
begin
  result:=b*Cp/2+D*Cd/b+D*a;
end;

function zuixiaoyuansu(shuzu:array of real;m:integer):yuansu;
var i,j:integer;
    min:real;
begin
   min:=shuzu[0];
   for i:=0 to m-1  do
     if  min>shuzu[i] then
       begin
          min:=shuzu[i];
          j:=i;
       end;
   result.zhi:=min;
   result.xuhao:=j;
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:=0 ;

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['1'..'9']) then
    key:=chr(0);
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  
  if pgmain.ActivePageIndex=0 then
    button1.Enabled:=false;
end;

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

procedure TForm1.Button2Click(Sender: TObject);
var i,j,finalxuhao:integer;
    jiage: array[1..long] of real;
    Q,N1,N2,f: array[1..long] of real;
    finalF,finalQ:real;
begin
  if pgmain.ActivePageIndex<>pgMain.PageCount-1 then
    pgmain.ActivePageIndex:= pgmain.ActivePageIndex+1 ;
  if  pgmain.ActivePageIndex=1 then
      begin
         button1.Enabled:=true;
         button2.Enabled:=true;
         if edit1.text<>'' then
          begin
             try
               for i:=1 to n do
                 begin
                   shuru2[i].free;
                   for j:=1 to 3  do
                     shuru1[i,j].free;
                 end;
             finally
               n:=0;
               n:=strtoint(edit1.text);
               for i:=1  to  n  do
                  begin
                   shuru2[i]:=Tlabel.Create(self);
                   shuru2[i].parent:=tabsheet2;
                   shuru2[i].Width:=40;
                   shuru2[i].Height:=24;
                   shuru2[i].left:=66;
                   shuru2[i].top:=54+(i-1)*(shuru2[i].Height+5);
                   shuru2[i].Caption:='K'+inttostr(i)+'=                       ,                        <Q<    ' ;
               for j:=1  to 3  do
                     begin
                        shuru1[i,j]:=tedit.Create(self);
                        shuru1[i,j].parent:=tabsheet2;
                        shuru1[i,j].Width:=62;
                        shuru1[i,j].Height:=24;
                        shuru1[i,j].left:=90+(j-1)*(shuru1[i,j].Width+28);  //90代表[1,1]离左边框的距离宽度宽度,+28表示各edit框之间的左右距离
                        shuru1[i,j].top:=50+(i-1)*(shuru1[i,j].Height+5);
                     end;
             end;
          end;
          shuru1[1,1].SetFocus;
          shuru1[1,2].text:='0' ; shuru1[1,2].enabled:=false;
          shuru1[n,3].text:='∞'; shuru1[n,3].enabled:=false;
         end;
      end;
  if pgmain.ActivePageIndex=2 then
    begin
      button1.Enabled:=true;
      button2.Enabled:=false;
      Cd:=StrTofloat(Edit4.Text);                //订货费
      Cp:=StrTofloat(Edit5.Text);                //存储费
      D:=StrTofloat(Edit6.Text);                 //需求量
      shuru1[n,3].text:=inttostr(maxint);
      for i:=1  to  n  do
        for j:=1  to 3  do
          if shuru1[i,j].text<>'' then
            begin
              jiage[i]:=strtofloat(shuru1[i,1].text);

              N1[i]:=strtofloat(shuru1[i,2].text);

              N2[i]:=strtofloat(shuru1[i,3].text);

              Q[i]:=sqrt(2*Cd*D/Cp);
              if (Q[i]>=N2[i]) or (Q[i]<N1[i]) then
                Q[i]:=N1[i] ;
              f[i]:=feiyong(jiage[i],Q[i]);
            end
          else
            begin
               showmessage('输入不能为空!');
               pgmain.ActivePageIndex:=1;
               exit;
            end;
      finalF:=zuixiaoyuansu(f,n).zhi;
      finalQ:=Q[zuixiaoyuansu(f,n).xuhao+1];     //输出最优批量
      edit2.Text:=formatfloat('0.###',finalQ);
      edit8.Text:=formatfloat('0.###',finalF);
    end;
end;
procedure TForm1.Button1Click(Sender: TObject);

begin
  if pgmain.ActivePageIndex<>0 then
    pgmain.ActivePageIndex:= pgmain.ActivePageIndex-1 ;
  if  pgmain.ActivePageIndex=0 then
    button1.Enabled:=false;
  if  pgmain.ActivePageIndex=1 then
  begin
    button2.Enabled:=true;
    button1.Enabled:=true
  end;

end;

end.


 

⌨️ 快捷键说明

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