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

📄 shuru.pas

📁 线形规划代码:包括单纯形法,对偶形法,
💻 PAS
字号:
unit shuru;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Buttons;
 const long=250;//定义常量控制数组长度
type
  Tfrmshuru = class(TForm)
    panel2: TPanel;
    Memo1: TMemo;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    RadioGroup1: TRadioGroup;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type  myarray=array[1..long]  of  array[0..long]  of  real;
type  myarray2=array[0..long]  of  array[0..long]  of  tedit;
{----------自定义两种类型,供输入数据和数组计算使用-------------}
var
  frmshuru: Tfrmshuru;
   m,n:integer;
   A:myarray;
   b:array[1..long]  of real;
{----定义几个全局变量。实现数据传递------------------------------}
implementation

uses jisuan;
var shuru1:myarray2;
{$R *.DFM}

procedure Tfrmshuru.BitBtn1Click(Sender: TObject);
var i,j:integer;
begin
if (edit1.text<>'')  and (edit2.text<>'') then
begin
try
for i:=1 to m+1 do
 for j:=1 to n+2  do
  shuru1[i,j].free;
finally
m:=0;n:=0;
m:=strtoint(edit1.text);   //输入不等式约束条件个数m:
n:=strtoint(edit2.text);   //输入不等式变量个数n;
for i:=1  to  m+1  do
  for j:=1  to n+2  do
   begin
    shuru1[i,j]:=tedit.Create(self);
    shuru1[i,j].parent:=panel2;
    shuru1[i,j].Width:=40;
    shuru1[i,j].left:=30+(j-1)*shuru1[i,j].Width;
    shuru1[i,j].top:=30+(i-1)*shuru1[i,j].Height;
   end;
 end;
{-------动态创建控件数组,以供输入系数矩阵、目标函数系数等初始数据----}
shuru1[1,1].SetFocus;
BitBtn2.Enabled:=true;
if m>5 then 
Panel2.Height:=(m+1)*shuru1[1,1].height+30+20+memo1.Height;
frmshuru.Height:=Panel1.Height+Panel2.height+30;
{----------控制界面--------------------------------------------------}
end
else showmessage('输入条件不完善,请补充');
end;

procedure Tfrmshuru.BitBtn2Click(Sender: TObject);
var i,j:integer;opt:array[1..long] of integer;
begin
for i:=1  to long  do
  for j:=0 to long do A[i,j]:=0;
for i:=1  to long  do b[i]:=0;
for i:=1 to long  do opt[i]:=0;
{---------------初始化变量---------------------------------------}
for i:=1 to m+1 do
 begin
  if shuru1[i,n+2].text<>'' then A[i,0]:=strtofloat(shuru1[i,n+2].text);
  if shuru1[i,n+1].text<>'' then opt[i]:=strtoint(shuru1[i,n+1].text);
  for j:= 1 to n  do if shuru1[i,j].text<>'' then
     A[i,j]:=strtofloat(shuru1[i,j].text);
 end;
if RadioGroup1.Items[RadioGroup1.ItemIndex] = 'Max' then
  for j:=1 to n do A[m+1,j]:=-A[m+1,j];
leixing:=RadioGroup1.Items[RadioGroup1.ItemIndex];
for i:=1 to m do
  A[i,n+i]:=1;
{------------------------标准化处理------------------------------}
 for j:=1  to n  do b[j]:=A[m+1,j];
{-------------------- 保留初始目标系数值------------------------}
 frmjisuan.show;
 frmjisuan.BitBtn4.Enabled:=True;
end;
procedure Tfrmshuru.FormCreate(Sender: TObject);
begin
 BitBtn2.Enabled:=false;
end;

end.

⌨️ 快捷键说明

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