全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1984 3
2010-08-15
悬赏 10 个论坛币 未解决
请高人逐行解释以下LINGO程序,特别是“sets”与“data”部分

sets:
[email=NDMU/@ole(]NDMU/@ole('D:\1\1.xls','DMU')/[/email];
[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;
DMUOutput(NDMU,NOutput):Output;
endsets
data:
Input,Output=@ole('D:\1\1.xls');
@ole('D:\1\1.xls','InputWeight')=InputWeight;
@ole('D:\1\1.xls','OutputWeight')=OutputWeight;
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;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-8-24 20:29:23
看谢金星教授的PPT
附件列表
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-8-24 22:17:12
sets: %集合定义部分,定义集合及其属性
[email=NDMU/@ole(]NDMU/@ole('D:\1\1.xls','DMU')/[/email]; %从文件D:\1\1.xlsDMU所指示的单元中取出数据,作为集合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](...)=属性(或变量)

个人意见,仅作参考
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-8-25 16:14:13
本人初学Lingo,没有多少基础,希望能找熟悉Lingo软件的高手,不吝赐教。
一个简单的问题:
MODEL:
SETS:
GONGCHANG/1..3/;
CANGKU/1..5/;
WUZI/1..8/:D;
LINK1(GONGCHANG,WUZI):DANJIA,XULIANG,CHANLINAG;
ENDSETS
DATA:
DANJIA=
100        10000        210        250        290        300        10000        430        450        500       
90        180        10000        240        10000        305        380        435        10000        490       
10000        170        210        245        10000        285        400        10000        450        480       
;
D=
3800        3600        3640        3250        3140        3340        3140        3230        3740        3900       
;
CHANLINAG=
2000        0        3000        1000        3200        1000        0        2000        1500        1500       
2000        1300        0        1000        0        1500        2000        1500        0        1200       
0        2500        800        1500        0        1000        1400        0        2500        1500       
;
ENDDATA
MIN=@SUM(LINK(i,j):DANJIA(i,j)*WUZI(i,j));
@FOR(WUZI(j):@SUM(GONGCHANG(i):XULIANG(i,j))=D(j););
@FOR(XULIANG(i,j)<=CHANLIANG(i,j));
END
上面这个程序有什么问题吗,谢谢指出!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群