全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1685 4
2011-08-21
sets:
bianliang/1..12/:x,y;
endsets
max=@sum(bianliang(i):x(i)*y(i));
@for(bianliang(i):@gin(x(i)/5));
@for(bianliang(i):x(i)>=20);
@for(bianliang(i):y(i)>=26);
@for(bianliang(i):x(i)>x(i+1);
x(1)<650
@sum(bianliang(i):y(i))<650;
@for(bianliang(i):((x(i)/2)^2+(0.5*@sum(biangliang(i):y(i))^2))<=(650/2)^2);
各位高手帮看看,这里有什么错误,解答的时候提示说最后两行有语法错误
二维码

扫码加我 拉你入群

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

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

全部回复
2011-8-21 14:30:52
倒数第三行加分号;最后行@sum,集合名错,括号位置有问题;另外貌似y的限制不够
二维码

扫码加我 拉你入群

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

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

2011-8-21 14:58:08
安全出口 发表于 2011-8-21 14:30
倒数第三行加分号;最后行@sum,集合名错,括号位置有问题;另外貌似y的限制不够
又连续发现了许多错误,更郁闷的是那个@GIN,那种表达是不是不能限制其为5的倍数?每次出来的都是一堆小数
二维码

扫码加我 拉你入群

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

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

2011-11-12 23:39:21
sets:
bianliang/1..12/:x,y;
endsets
max=@sum(bianliang(i):x(i)*y(i));
@for(bianliang(i):(x(i)/5)<=.00001);
@for(bianliang(i):x(i)>=20);
@for(bianliang(i):y(i)>=26);
@for(bianliang(i)|i#le#@size(bianliang)-1:x(i)>x(i+1));
x(1)<650;
@sum(bianliang(i):y(i))<650;
@for(bianliang(i):((x(i)/2)^2+(0.5*@sum(bianliang(i):y(i))^2))<=(650/2)^2);
不过没有可行解!
二维码

扫码加我 拉你入群

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

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

2013-8-20 15:35:50
qlb061 发表于 2011-11-12 23:39
sets:
bianliang/1..12/:x,y;
endsets
   qlb061,你好!我在另一个论坛上也看到了你,很佩服你在LINGO上的造诣!   我也尝试简单修改了下楼主的程序:

MODEL:
SETS:
VAR/1..12/:X,Y,DX;
ENDSETS
MAX=@SUM(VAR(I):X(I)*Y(I));
@FOR(VAR(I):X(I)=5*DX(I));
@FOR(VAR(I):@GIN(DX(I)));
@FOR(VAR(I):X(I)>=20);
@FOR(VAR(I):Y(I)>26);
@FOR(VAR(I)|I#GE#2:X(I-1)>X(I));
@SUM(VAR(I):Y(I))<650;
@FOR(VAR(I):((X(I)/2)^2+(0.5*@SUM(VAR(I):Y(I))^2))<=(650/2)^2);
X(1)<650;
END


在LINGO 11上运行得到如下结果,摘录其中一部分:
  Global optimal solution found.
  Objective value:                              419250.0
  Objective bound:                            419250.0
  Infeasibilities:                                    0.000000
  Extended solver steps:                           1
  Total solver iterations:                           955

   Variable           Value        Reduced Cost
     X( 1)        645.0000            0.000000
     X( 2)        645.0000            0.000000
     X( 3)        645.0000            0.000000
     X( 4)        645.0000            0.000000
     X( 5)        645.0000            0.000000
     X( 6)        645.0000            0.000000
     X( 7)        645.0000            0.000000
     X( 8)        645.0000            0.000000
     X( 9)        645.0000            0.000000
   X( 10)        645.0000            0.000000
   X( 11)        645.0000            0.000000
   X( 12)        645.0000            0.000000
     Y( 1)        56.89847            0.000000
     Y( 2)        49.45565            0.000000
     Y( 3)        56.89893            0.000000
     Y( 4)        56.89900            0.000000
     Y( 5)        56.89871            0.000000
     Y( 6)        51.77753            0.000000
     Y( 7)        51.78358            0.000000
     Y( 8)        56.74557            0.000000
     Y( 9)        56.89901            0.000000
   Y( 10)        56.89827            0.000000
   Y( 11)        56.89786            0.000000
   Y( 12)        41.94742            0.000000


  一点存疑是“@FOR(VAR(I)|I#GE#2:X(I-1)>X(I));”,因为LINGO似乎对>和>=不加以区别,所以结果中X的结果全部相同。这是我的一些个人见解,希望你有时间也能看看,并提出疑问,班门弄斧,莫怪。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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