- 在线时间
- 1 小时
- 最后登录
- 2021-1-10
- 注册时间
- 2021-1-5
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 12 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 5
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 2
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级 0% 该用户从未签到
- 自我介绍
- 平平淡淡,没有任何突出
|
题目在此:
\(model:
sets:
fact/1..7/ : x,t,w,y,n;
endsets
data:
!i = 1,2,3,4,5,6,7;
!n = 8+7+9+6+6+4+8;
n = 8,7,9,6,6,4,8;
t = 48.7,52.0,61.3,72.0,48.7,52.0,64.0;
w = 2000,3000,1000,500,4000,2000,1000;
enddata
@sum(fact(i) : t(i)*x(i)) < 1020 ;
@sum(fact(i) : t(i)*y(i)) < 1020 ;
!x(i)+y(i) <= n(i);
@for( fact(i): x(i)+y(i) < n(i) ) ; ! 证明每一批次的货都得小于 所拥有的货 ;
@sum(fact(i) : w(i)*x(i)) < 40000 ;
@sum(fact(i) : w(i)*y(i)) < 40000 ;
!@sum(fact(i) #and# i #ge# 5: t(i)*y(i) ) < 302.7 ;
@sum(fact(i) | i #ge# 5 #and# i #le# 7 : t(i)*y(i) ) < 302.7 ;
min= (1020 - @sum(fact(i):x(i)*y(i)) ) + (1020 - @sum(fact(i):t(i)*y(i)) );
@for(fact(i)gin(x));
@for(fact(i)gin(y));
end\)
这个是老师给的答案
我自己尝试写的代码\(model:
sets:
fact/1..7/ : t,w,x,y,n ;
endsets
data:
n = 8,7,9,6,6,4,8;
t = 48.7,52.0,61.3,72.0,48.7,52.0,64.0;
w = 2000,3000,1000,500,4000,2000,1000;
enddata
@sum(fact(i) : t(i)*x(i)) < 1020 ;
@sum(fact(i) : t(i)*y(i)) < 1020 ;
@for( fact(i) : x(i)+y(i) < n(i) ) ;
@sum(fact(i) : w(i)*x(i)) < 40000 ;
@sum(fact(i) : w(i)*y(i)) < 40000 ;
@sum(fact(i) | i #ge# 5 #and# i #le# 7 : t(i) * ( x(i) * y(i) ) ) < 302.7 ;
min= (1020 - @sum(fact(i):t(i)*x(i)) ) + (1020 - @sum(fact(i):t(i)*y(i)) );
@for(fact(i) : @gin(x));
@for(fact(i) : @gin(y));
end\)
主要的区别在min上,但结果都在报错,不知道什么回事。
还有一个问题就是,为什么要用gin来规定x,y必须是正整数啊?
我在做另外一道题的时候,好像都没有用gin来保证gin是正整数,但是结果一样正确。
如果这道题没有用调用gin函数的话,结果却错了。
|
zan
|