楼主: jgj990163
2027 3

请高人逐行解释以下LINGO程序 [推广有奖]

  • 0关注
  • 1粉丝

已卖:202份资源

硕士生

16%

还不是VIP/贵宾

-

威望
0
论坛币
8847 个
通用积分
0.0600
学术水平
-1 点
热心指数
-1 点
信用等级
-1 点
经验
8056 点
帖子
81
精华
0
在线时间
75 小时
注册时间
2008-5-14
最后登录
2012-2-28

楼主
jgj990163 发表于 2010-8-15 14:20:20 |AI写论文
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;

关键词:lingo Lin ING NGO output 程序 lingo 解释 高人

沙发
wangds 在职认证  发表于 2010-8-24 20:29:23
看谢金星教授的PPT
“因真理,得自由,以服务”,这是当年燕京大学的校训,取自圣经中的两段经文。约翰福音8:32 “你们必晓得真理,真理

藤椅
xy_hello 发表于 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](...)=属性(或变量)

个人意见,仅作参考

板凳
robot2009 在职认证  发表于 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
上面这个程序有什么问题吗,谢谢指出!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-21 09:35