QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4649|回复: 11
打印 上一主题 下一主题

[求助]帮忙看此Lingo程序哪里错误

[复制链接]
字体大小: 正常 放大
zwjcandy        

1

主题

3

听众

11

积分

升级  6.32%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2008-5-3 17:12 |只看该作者 |倒序浏览
|招呼Ta 关注Ta

刚学Lingo,用它求解CVaR的问题。模型中有分段费用函数,转换为含0-1变量的线性规划。程序贴出来,实在奈何不了它,请高手们帮忙看看哪里错误,谢谢了哈!

station我取250个,但贴出来时为了简便,只用了5个,相应y(i,j)就只有8行5列了。还是出现“Error code: 1017”,LINGO Solver Status显示Variables:1,Model:。。,State:Unknown。。。 根本认不出我的模型。改好几次都不行,非常之郁闷!

MODEL:
CVaR优化;
SETS:
capital/1..8/: q,x0,e,x,u,v,c;
station/1..5/: z;
points/1,2,3/;
linkI(capital,station): y;
linkII(points,capital): s,r;
ENDSETS
DATA:
n=0.95;
w=0.00294836;
q=25.73 9.38 17.82 38.27 17.4 11.35 22.95 13;
x0=1500 1500 1500 1500 1500 1500 1500 1500;
e=0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2;
y=-0.00930851 -0.00939597 0.07452575 -0.05422446 0.04266667
-0.00172414 -0.04145078 0.01261261 -0.03558719 0.04059041
0.002849 -0.03551136 -0.00589102 -0.04888889 0.04205607
-0.01478953 0.02713626 0.03428893 -0.04728261 0.02909298
0.00712251 -0.00141443 0.03541076 -0.03419973 0.03966006
-0.00879765 0.10059172 0.05645161 -0.08142494 0.08033241
-0.01073826 -0.03663501 -0.01126761 -0.07692308 0.03703704
0.09985735 0.0998703 0.00943396 -0.06308411 0.04738155;
ENDDATA
CALC:
T=@sum(capital(i):q(i)*x0(i));
ENDCALC
MIN=@sum(station(j):z(j))/((1-n)*@size(station))+m;
@for(linkII(k,i)|k#eq#3:r(k,i)=0);
@for(linkII(k,i)|k#ne#3bin(r(k,i)));
@for(capital(i):
s(1,i)<=r(1,i);
s(2,i)<=1;
s(3,i)<=r(2,i);
@sum(points(k):s(k,i)=1);
@sum(points(k):r(k,i)=1);
x(i)-x0(i)=u(i)-v(i);
u(i)+v(i)=2500*s(2,i)/q(i)+T*s(3,i)/q(i);
c(i)=5*s(1,i)+15*s(2,i)+6*T*s(3,i)/1000;
q(i)*x(i)<=e(i)*T;
);
T=@sum(capital:c)+@sum(capital:q*x);
@sum(capital(i)sum(station(j):y(i,j))/@size(station)*q(i)*x(i))-@sum(capital(i):c(i))>=w*T;
@for(station(j):
z(j)+m>=-@sum(capital(i):x(i)*y(i,j)));
END

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
zwjcandy        

1

主题

3

听众

11

积分

升级  6.32%

该用户从未签到

新人进步奖

回复

使用道具 举报

madio        

3万

主题

1307

听众

5万

积分

  • TA的每日心情
    奋斗
    2021-5-1 20:26
  • 签到天数: 2013 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    MODEL:

    SETS:
    capital/1..8/: q,x0,e,x,u,v,c;
    station/1..5/: z;
    points/1,2,3/;
    linkI(capital,station): y;
    linkII(points,capital): s,r;
    ENDSETS
    DATA:
    n=0.95;
    w=0.00294836;
    q=25.73 9.38 17.82 38.27 17.4 11.35 22.95 13;
    x0=1500 1500 1500 1500 1500 1500 1500 1500;
    e=0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2;
    y=-0.00930851 -0.00939597 0.07452575 -0.05422446 0.04266667
    -0.00172414 -0.04145078 0.01261261 -0.03558719 0.04059041
    0.002849 -0.03551136 -0.00589102 -0.04888889 0.04205607
    -0.01478953 0.02713626 0.03428893 -0.04728261 0.02909298
    0.00712251 -0.00141443 0.03541076 -0.03419973 0.03966006
    -0.00879765 0.10059172 0.05645161 -0.08142494 0.08033241
    -0.01073826 -0.03663501 -0.01126761 -0.07692308 0.03703704
    0.09985735 0.0998703 0.00943396 -0.06308411 0.04738155;
    ENDDATA
    CALC:
    T=@sum(capital(i):q(i)*x0(i));
    ENDCALC
    MIN=@sum(station(j):z(j))/((1-n)*@size(station))+m;
    @for(linkII(k,i)|k#eq#3:r(k,i)=0);
    @for(linkII(k,i)|k#ne#3bin(r(k,i)));
    @for(capital(i):
    s(1,i)<=r(1,i);
    s(2,i)<=1;
    s(3,i)<=r(2,i);
    @sum(points(k):s(k,i))=1;
    @sum(points(k):r(k,i))=1;
    x(i)-x0(i)=u(i)-v(i);
    u(i)+v(i)=2500*s(2,i)/q(i)+T*s(3,i)/q(i);
    c(i)=5*s(1,i)+15*s(2,i)+6*T*s(3,i)/1000;
    q(i)*x(i)<=e(i)*T;
    );
    T=@sum(capital:c)+@sum(capital:q*x);
    @sum(capital(i)sum(station(j):y(i,j))/@size(station)*q(i)*x(i))-@sum(capital(i):c(i))>=w*T;
    @for(station(j):
    z(j)+m>=-@sum(capital(i):x(i)*y(i,j)));
    END

    按照上面修改就可以了,建议看看错误帮助,错误很明确!

    数学建模社会化
    回复

    使用道具 举报

    zwjcandy        

    1

    主题

    3

    听众

    11

    积分

    升级  6.32%

    该用户从未签到

    新人进步奖

    非常谢谢管理员!!不好意思,帮助是英文,让人发虚,没仔细研究。

    @sum(points(k):s(k,i)=1);括号弄错了,下次要小心检查。“CVaR优化;”这个不能加吗?什么情况下才能加上这种“标题”呢?我看书上有些例子加了。

    ststion取5能运行。但station取250,y(i,j)就是8行250列,数据应该怎样输入呢? y(i,j)8行250列的数据我放在一excel表中了,能用Edit|Insert New Objects...,由文件创建:指定那个excel的位置,确定。Lingo里就出现了个excel格式,8行250列的表。 这样可以吗?请指教!

    Solve,还是出现相同的Error code,就是Variables增加到306个

    回复

    使用道具 举报

    madio        

    3万

    主题

    1307

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2021-5-1 20:26
  • 签到天数: 2013 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    要想写注释就用!放在注释前面。

    道理上应该可以改变规模的,出现了什么错误提示?

    回复

    使用道具 举报

    zwjcandy        

    1

    主题

    3

    听众

    11

    积分

    升级  6.32%

    该用户从未签到

    新人进步奖

    或者应该把excel中的8行250列数据复制,用“Edit|Paste Special...”,“未格式化文本”。这样能运行,不知道解得对不对。

    Lingo对集合属性按列赋值,不太理解这个意思。Y是个8行250列的矩阵,那输入y(i,j)的数据时需要把行列转置吗?

    呵呵,问题有些白痴,请担待!

    回复

    使用道具 举报

    zwjcandy        

    1

    主题

    3

    听众

    11

    积分

    升级  6.32%

    该用户从未签到

    新人进步奖

    用Edit|Insert New Objects...,由文件创建:指定那个excel的位置,确定。Lingo里就出现了个excel格式,8行250列的表。Solve,还是出现:Error code:1017,只是Variables增加到306个

    把excel中的8行250列数据复制,用“Edit|Paste Special...”,“未格式化文本”。这样能运行,不知道解得对不对。

    我觉得应该是y(i,j)输入的问题,

    回复

    使用道具 举报

    zwjcandy        

    1

    主题

    3

    听众

    11

    积分

    升级  6.32%

    该用户从未签到

    新人进步奖

    把excel中的8行250列数据复制,用“Edit|Paste Special...”,“未格式化文本”。这样能运行。结果:Model:ILP, State:Global Opt. Variables:total:323,Intergers:16...

    怎样判断结果正不正确呢?

    回复

    使用道具 举报

    zwjcandy        

    1

    主题

    3

    听众

    11

    积分

    升级  6.32%

    该用户从未签到

    新人进步奖

    把excel中的8行250列数据复制,用“Edit|Paste Special...”,“未格式化文本”。

    用这个y(i,j)就有很大一坨数据在程序中,怪吓人的,由没有别的方法咧?

    谢谢啊!

    回复

    使用道具 举报

    madio        

    3万

    主题

    1307

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2021-5-1 20:26
  • 签到天数: 2013 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组数学建模培训课堂1

    群组数学中国美赛辅助报名

    群组Matlab讨论组

    群组2013认证赛A题讨论群组

    群组2013认证赛C题讨论群组

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2024-6-16 19:53 , Processed in 0.749707 second(s), 97 queries .

    回顶部