请选择 进入手机版 | 继续访问电脑版

QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4676|回复: 2

优化模型代码问题,大佬帮k'k

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

1

主题

1

听众

5

积分

升级  0%

该用户从未签到

自我介绍
平平淡淡,没有任何突出
发表于 2021-1-5 15:27 |显示全部楼层
|招呼Ta 关注Ta
题目在此:
1.png
2.png


\(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
Irving2        

1

主题

1

听众

5

积分

升级  0%

该用户从未签到

自我介绍
平平淡淡,没有任何突出
另外一道题没有报错的题目和代码 3.png



\(model:
sets:
item/1..9/:c,x;
endsets
data:
c=5,4,4,3,4,3,2,2,3;
enddata
max=@sum(item(i):c(i)*x(i));
@sum(item(i):x(i))=6; !课程为6门;
x(1)+x(2)+x(3)+x(4)+x(5)>=2;
x(3)+x(5)+x(6)+x(8)+x(9)>=3;
x(4)+x(6)+x(7)+x(9)>=2;
x(3)<=x(1);
x(3)<=x(2);
x(4)<=x(7);
x(5)<=x(1);
x(5)<=x(2);
x(6)<=x(7);
x(8)<=x(5);
x(9)<=x(1);
x(9)<=x(2);
@for(item(i)bin(x(i)));
end\)



回复

使用道具 举报

0

主题

3

听众

11

积分

升级  6.32%

该用户从未签到

邮箱绑定达人

你老师给的答案?你老师给的目标函数都是错的哦。t*x写成x*y了
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:t*x)<=1020;
@sum(fact:t*y)<=1020;

@for(fact:x+y<=n);   
@sum(fact:w*x)<=40000;
@sum(fact:w*y)<=40000;

@sum(fact(i)|i#ge#5#and#i#le#7:t(i)*(x(i)*y(i)))<=302.7;

min=(1020-@sum(fact:t*x))+(1020-@sum(fact:t*y));

@for(factgin(x));
@for(factgin(y));

end

Global optimal solution found.
  Objective value:                             0.4774847E-11
  Objective bound:                             0.4774847E-11
  Infeasibilities:                              0.000000
  Extended solver steps:                               1
  Total solver iterations:                        541019


                       Variable           Value        Reduced Cost
                          T( 1)        48.70000            0.000000
                          T( 2)        52.00000            0.000000
                          T( 3)        61.30000            0.000000
                          T( 4)        72.00000            0.000000
                          T( 5)        48.70000            0.000000
                          T( 6)        52.00000            0.000000
                          T( 7)        64.00000            0.000000
                          W( 1)        2000.000            0.000000
                          W( 2)        3000.000            0.000000
                          W( 3)        1000.000            0.000000
                          W( 4)        500.0000            0.000000
                          W( 5)        4000.000            0.000000
                          W( 6)        2000.000            0.000000
                          W( 7)        1000.000            0.000000
                          X( 1)        4.000000            0.000000
                          X( 2)        6.000000            0.000000
                          X( 3)        4.000000            0.000000
                          X( 4)        3.000000            0.000000
                          X( 5)        0.000000            0.000000
                          X( 6)        1.000000            0.000000
                          X( 7)        0.000000            0.000000
                          Y( 1)        3.000000            0.000000
                          Y( 2)        1.000000            0.000000
                          Y( 3)        4.000000            0.000000
                          Y( 4)        2.000000            0.000000
                          Y( 5)        1.000000            0.000000
                          Y( 6)        0.000000            0.000000
                          Y( 7)        6.000000            0.000000
                          N( 1)        8.000000            0.000000
                          N( 2)        7.000000            0.000000
                          N( 3)        9.000000            0.000000
                          N( 4)        6.000000            0.000000
                          N( 5)        6.000000            0.000000
                          N( 6)        4.000000            0.000000
                          N( 7)        8.000000            0.000000

回复

使用道具 举报

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

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

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

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

蒙公网安备 15010502000194号

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

GMT+8, 2024-3-29 17:01 , Processed in 0.532853 second(s), 64 queries .

回顶部