数学建模社区-数学中国

标题: 求大神帮帮忙index variables may not share names with other variables [打印本页]

作者: lk593615138    时间: 2016-4-5 11:01
标题: 求大神帮帮忙index variables may not share names with other variables
MODEL:
sets:
var1/1..3/:m,q,c3,h,c1,c2,t,w;!表示船的类型;
var2/1..6/:d,f2,p0,p1,q1,q2;!表示航线类型;
link(var1,var2):x,v,t0,u,n,b;
a;!碳税税率;
endsets
data:
m=11 11 5;
q=10 8 5;
c3=800 560 350;
h=0.0164 0.0157 0.0147;
c1=2.0 1.8 1.6;
c2=2.5 2.3 2.1;
d=7963 6137 7964 8898 9584 10954;
f2=1.67 1.80 2.11 2.45 1.74 2.46;
p0=0.0203 0.0409 0.0331 0.0225 0.0279 0.0307;
p1=0.0156 0.0189 0.0176 0.0109 0.0166 0.0153;
q1=160 120 200 230 150 180;
q2=150 110 160 200 130 150;
t0=5 6 5 6 5 6
   4 5 4 5 4 5
   3 4 3 4 3 4;
t=345 345 345;
a=20;
enddata
!目标函数,成本最小;
@for(link(k,r):u(k,r)=d(r)*(h(k)*(v(k,r))^3*p0(r)+c1(k)*p1(r))/(12*v(k,r))+p1(r)*c2(k)*t0(k,r));
@for(link(k,r):n(k,r)=t(k)/(d(r)/(12*v(k,r))+t0(k,r)));
@for(link(k,r):b(k,r)=d(r)*(h(k)*(v(k,r))^3+c1(k))/(12*v(k,r)+c2*t0(k,r)));
carbon=3.17*20*@sum(link(k,r):b(k,r)*n(k,r)*x(k,r));!碳成本;
[OBJ]min=@sum(link(k,r):u(k,r)*n(k,r)*x(k,r))+f2(r)+@sum(var1(k):c3(k)*w(k))+@sum(link(k,r):b(k,r)*n(k,r)*x(k,r))*20*3.17;
@for(var1(k):
    w(k)+@sum(var2(r):x(k,r))=m(k));!船队数量约束,w为松弛变量;
@for(var2(r):
         @sum(var1(k):
                   q(k)*x(k,r)*n(k,r))>q1(j);!正向运量约束;
         @sum(var1(k):
                   q(k)*x(k,r)*n(k,r))>q2(j));!反向运量约束;
@for(link(k,r):
         @bnd(14,v(k,r),26));!船舶航速约束;
@for(link(k,r):
         @gin(x(k,r)));!配船数整数约束;
@for(link(k,r):
         @gin(w(k)));!闲置船舶数整数约束;
End

为什么一直报错啊,想破脑子也想不通啊,求大神帮帮忙,跪谢啦!

1.png (24.19 KB, 下载次数: 210)

1.png

2.jpg (151.77 KB, 下载次数: 221)

2.jpg

3.jpg (45.61 KB, 下载次数: 204)

3.jpg


作者: lk593615138    时间: 2016-4-5 12:17
大神们求解答啊,小女子谢谢各位大神了

作者: lk593615138    时间: 2016-4-5 14:58
难道就没有大神帮帮忙嘛

作者: lk593615138    时间: 2016-4-5 18:02
大神帮帮忙啦,

作者: liwenhui    时间: 2016-4-11 11:24
语法问题很多。
  1. @for(link(k,r):u(k,r)=d(r)*(h(k)*(v(k,r))^3*p0(r)+c1(k)*p1(r))/(12*v(k,r))+p1(r)*c2(k)*t0(k,r));
  2. @for(link(k,r):n(k,r)=t(k)/(d(r)/(12*v(k,r))+t0(k,r)));
  3. @for(link(k,r):b(k,r)=d(r)*(h(k)*(v(k,r))^3+c1(k))/(12*v(k,r)+c2*t0(k,r)));
复制代码
使用@for这种表述都有问题,d不是link的属性,循环中不能用link,合乎规则的表述应该是嵌套两个For,外层循环使用var1,内层循环使用var2.
c2*t0(k,r)这一句,中c2为何没有下标?
问题很多,无法逐一列出,你需要重新按语法规矩写程序。





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5