sets: %集合定义部分,定义集合及其属性
[email=NDMU/@ole(]NDMU/@ole('D:\1\1.xls','DMU')/[/email]; %从文件D:\1\1.xls的DMU所指示的单元中取出数据,作为集合NDMU的元素,
[email=NInput/@ole(]NInput/@ole('D:\1\1.xls','NInput')/:InputWeight[/email]; %同理
[email=NOutput/@ole(]NOutput/@ole('D:\1\1.xls','NOutput')/:OutputWeight[/email]; %同理
DMUInput(NDMU,NInput):Input;
%派生集合定义,Input属于这样的一个派生集合,其含元素包含NDMU,NInput两个,模型可认为是a(i,j)这种,i,j本身又可看作集合
DMUOutput(NDMU,NOutput):Output; %同理
Endsets%定义结束
data:
%数据输入部分
Input,Output=@ole('D:\1\1.xls');
%从文件‘D:\1\1.xls’中相应单元给Input,Output赋值 。
@ole('D:\1\1.xls','InputWeight')=InputWeight;
%将InputWeight的值输出赋给D:\1\1.xls文件中由InputWeight指定的单元格
@ole('D:\1\1.xls','OutputWeight')=OutputWeight;
%同理
t=?; %t赋值,但之后没用?
enddata%输入结束
%目标函数及其优化部分
[email=max=@sum(NOutput(j):Output(t,j)*OutputWeight(j))+U]
max=@sum(NOutput(j):Output(t,j)*OutputWeight(j))+U[/email];
%目标函数,求和运算
U=U01-U02;
@for(NDMU(i):
%循环,但这里没写完哟~~
@sum(NInput(j):Input(i,j)*InputWeight(j))-@sum(NOutput(j):Output(i,j)*OutputWeight(j))>=U;);%求和操作,纯套公式
@sum(NInput(j):Input(t,j)*InputWeight(j))=1; %同理
总的来说,程序是个错的(或者说楼主故意没给完整~~),其中的函数意思标在上面。运行中的错误修改:如集合定义部分的第一行可以弄成只要这样就行NDMU/@ole('D:\1\1.xls','DMU')/。
还有循环部分根本没有写哈。
特别说明:
LINGO系统与EXCEL文件传递数据的函数的一般用法是通过@OLE函数
调用格式:
@OLE(spreadsheet_file [, range_name_list])
内部前者是电子表格文件名,后者是数据的单位范围
输入数据 :“属性(或变量)=@OLE(...)”
输出数据 :[email=“@OLE]“@OLE[/email](...)=属性(或变量)”
个人意见,仅作参考