程序如下:
model:
sets:
d/1..100/: num;
c/1..1000/;
links(c,d): p, x;
endsets
!目标函数;
max=@sum(links: p*x);
!DVD数量约束;
@for(d(J):
@sum(c(I): x(I,J))<=num(J));
@for(c(I):
@sum(d(J): x(I,J))<=3);
!变量类型;
@for(links:@bin(x));
!这里是数据;
data:
num,p=@ole('B2005Table2.xls',ndvd,p);
@text('out.txt')=x;
enddata
end
注:原题数据文件B2005Table2.xls中, 可从
http://mcm.edu.cn/mcm05/problems2005c.asp 下载
程序的运行需要Excel文件B2005Table2.xls中数据的支持,另外,在Excel中要为数据块定义名称,具体方式为
将B2005Table2.xls与程序放到相同目录,打开B2005Table2.xls,选中“DVD现有数量”栏的数据部分,插入->名称->定义->输入“ndvd”;选中“会员在线订单”栏的数据部分,插入->名称->定义->输入“p”,保存