unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask, ExtCtrls, Grids, Buttons;
const long=250;//定义常量控制数组长度
type
TForm1 = class(TForm)
Panel3: TPanel;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
StringGrid1: TStringGrid;
Panel1: TPanel;
RadioGroup1: TRadioGroup;
Panel4: TPanel;
StringGrid2: TStringGrid;
Edit1: TEdit;
Edit2: TEdit;
Panel5: TPanel;
BitBtn1: TBitBtn;
Panel6: TPanel;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
var
VarNum,ConNum:integer;//定义整形变量,存放变量个数和约束条件个数}
leixing:String;//存放目标函数类型
x:array[1..long] of integer;//存放变量的值
z:array of real;//存放每次枚举的函数值
meijucishu:integer;//枚举次数,即所有取值的可能组合的个数
biaoshi:array of char;//用于标识当前组合是否是可行解
a:array[1..long,1..long] of real;//存放系数矩阵
b:array[1..long] of real;//存放限定向量
c:array[1..long] of real;//存放目标函数系数
opt:array[1..long] of integer;//存放操作符
implementation
uses Unit2;//调用unit2单元的数据
{$R *.DFM}
procedure chushihuabianliang;
var i,j:Integer;
begin
for i:=1 to long do
for j:=1 to long do
a[i,j]:=0;
for i:=1 to long do
begin
b[i]:=0;
opt[i]:=0;
end;
for j:=1 to long do
begin
c[j]:=0;
x[j]:=0;
end;
end;
{------------初始化变量-------------------------}
procedure TForm1.BitBtn2Click(Sender: TObject);
var i,j:integer;
heli:Boolean;//判断输入的数据是否合理
begin
heli:=true;//赋初值
try
VarNum:=strtoint(edit1.text);
ConNum:=strtoint(edit2.text); {输入变量个数和约束条件个数}
except
begin
heli:=False;
showmessage('输入有误!'+#13+'请确定您输入的是整数并且没有空格');
//数据的合理性检验
exit;
end;
end;
if not heli then exit;
stringgrid1.ColCount:=VarNum+1;
stringgrid1.Cells[0,0]:='变量';
stringgrid1.Cells[0,1]:='系数';
//表格1的列数=变量数+1; (第一列用作标签) }
for i:=1 to VarNum do
begin
stringgrid1.Cells[i,0]:='X'+inttostr(i);
stringgrid1.Cells[i,1]:='';
end;
//表格1外观,第一行显示变量名,第二行用来输入系数,这里赋初值为0
//第一行、第一列用作标签}
stringgrid2.ColCount:=VarNum+2;
stringgrid2.RowCount:=ConNum+1;
//表格2的列数=变量数+2;(最后两列为运算符及常数项)
//表格2的行数=约束条件数+1;(第一行用作标签)}
for i:=0 to VarNum-1 do
stringgrid2.Cells[i,0]:='X'+inttostr(i+1);
//表格2第一行,显示变量名X1,X2,…
stringgrid2.Cells[VarNum,0]:= '运算符';
//表格2第一行倒数第二列,显示约束条件中的运算符
stringgrid2.Cells[VarNum+1,0]:='b';
//表格2第一行最后一列,显示约束条件的常数项b
for j:=1 to ConNum do
for i:=0 to VarNum-1 do
stringgrid2.Cells[i,j]:='';
//约束条件系数矩阵赋初值为空,等待用户输入
for j:=1 to ConNum do
begin
stringgrid2.Cells[VarNum,j]:= '';
//表格2倒数第二列,用来输入约束条件中的符号,默认为等号
stringgrid2.Cells[VarNum+1,j]:='';
//表格2最后一列,用来输入约束条件中的常数项b,默认为空}
end;
StringGrid1.SetFocus;
end;
{-----------设置初始输入表格------------------------}
procedure duqushuju;
var i,j:Integer;
begin
for i:=1 to ConNum do
for j:=0 to VarNum-1 do
if Form1.StringGrid2.Cells[j,i]<>'' then
a[i,j+1]:=StrToFloat(Form1.StringGrid2.Cells[j,i]);
//读取0-1整数规划的系数矩阵
for i:=1 to ConNum do
if Form1.StringGrid2.Cells[VarNum+1,i]<>'' then
b[i]:=StrToFloat(Form1.StringGrid2.Cells[varnum+1,i]);
//读取0-1整数规划的限定向量
for i:=1 to ConNum do
if Form1.StringGrid2.Cells[VarNum,i]<>'' then
opt[i]:=StrToInt(Form1.StringGrid2.Cells[varnum,i]);
//读取0-1整数规划的操作符,用-1,0,1分别表示小于、等于、大于
for j:=1 to VarNum do
if Form1.StringGrid1.Cells[j,1]<>'' then
c[j]:=StrToFloat(Form1.StringGrid1.Cells[j,1]);
//读取0-1整数规划目标函数系数
end;
{-----------自定义过程读取初始化数据------------------}
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
chushihuabianliang;
//调用自定义过程初始化变量
RadioGroup1Click(Sender);//改变目标函数类型
duqushuju;//读取输入的数据
form2.show;
end;
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=0 then
leixing:='Max'
else
leixing:='Min';
//使目标函数的类型不断更新
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
Edit1.SetFocus;
end;
end.
寒泊
- 粉丝: 85
- 资源: 1万+
最新资源
- 基于CSS与JavaScript的积分系统设计源码
- 生物化学作业_1_生物化学作业资料.pdf
- 基于libgdx引擎的Java开发连连看游戏设计源码
- 基于MobileNetV3的SSD目标检测算法PyTorch实现设计源码
- 基于Java JDK的全面框架设计源码学习项目
- 基于Python黑魔法原理的Python编程技巧设计源码
- 基于Python的EducationCRM管理系统前端设计源码
- 基于Django4.0+Python3.10的在线学习系统Scss设计源码
- 基于activiti6和jeesite4的dreamFlow工作流管理设计源码
- 基于Python实现的简单植物大战僵尸脚本设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0