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.
寒泊
- 粉丝: 86
- 资源: 1万+
最新资源
- 上课教材ppt-数据库系统原理及MySQL应用教程(第二版)课件.zip
- usb gadget 学习资料
- 智能毕设项目开发基础教程
- 实用脚本工具:自动化编程基础教程
- LabVIEW编程入门与实践基础教程
- 嵌入式开发入门与实践基础教程
- JFinal-Python资源
- 胆小菇 Python Selenium 爬虫入门:批量将豆瓣书影标记设置为"仅自己可见"
- bboss-plugins-kafka
- iotucy-websocket
- 胆小菇 Python Selenium 爬虫入门:批量将豆瓣书影标记设置为"仅自己可见"
- StudentManageSystem-建立学生信息链表
- Sa-Token-java
- 基于Atlas 200I DK A2研究的机械臂目标检测系统-注意力机制
- ga_network_reconfiguration-遗传算法
- tomcat-tomcat
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0