QQ登录

只需要一步,快速开始

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

之前的初始数据可行解正确,换了个就没有可行解,求大神帮忙,急

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

1

主题

2

听众

3

积分

升级  60%

该用户从未签到

自我介绍
adfa
跳转到指定楼层
1#
发表于 2014-6-27 12:39 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
本帖最后由 wujianjack2 于 2014-6-28 10:22 编辑

测试出来,第五行约束为@for(VIT(i): fvec(i)<=1023);时可行解正确,可改为@for(VIT(i): fvec(i)<=1024);就没有可行解了,调试信息我也看不明白。本来约束条件里应该是没有这行约束的,如果去掉程序一直运行。
但在以前的初始数据下是正确解。请大神帮忙分析下,看到底是哪里的问题:
data:
m0 = 100 0 0 0 2 2 0 0 100;
pFlag = 0 2 2 2 1 1 2 2 0;
bnd = 100 20 1 1 2 2 1 2 100;
itFlag = 1 0 0 0 1 0 0;
wpt = 1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 0 0 0
1 0 0 0 0 2 0
0 1 1 0 1 0 0
0 0 0 0 0 0 1
0 0 0 0 0 1 0
0 0 0 0 1 0 0;
wtp = 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 1 1 0 0 0 0
1 0 0 0 0 2 0 0 0
0 0 0 0 0 0 0 1 0
0 0 0 0 0 1 1 0 0
0 0 0 0 2 0 0 0 1;
mvalue = -1 0 0 1 0 0 0
1 -1 0 0 0 0 0
0 1 -1 0 0 0 0
0 0 1 -1 0 0 0
-1 0 1 0 0 -2 2
0 -1 -1 2 -1 1 0
0 0 0 0 0 1 -1
0 0 0 0 1 -1 0
0 0 0 0 -1 0 1;
enddata
model:
sets:
!place m0 - initial marking;
!pFlag: 0==idle place, 1==resource, 2==working place;
!bnd - the place's boundness, m - reachable marking;
VIP:m0,pFlag,bnd,m,ps;
!transition itFlag: 1==initial transition, 0 == others;
!fvec - the firing vector of transitions;
VIT:itFlag, fvec;
!the arc from place to transition;
Pre(VIP,VIT):wpt;
!the arc from transition to place;
Post(VIT,VIP):wtp;
!incidence matirx;
Matrix(VIP,VIT):mvalue;

!;
BadMarkedSiphon(VIP):vp;
EnabledTrans(VIT):et;
EnabledResourse(VIP,VIT): ert;
endsets
data:
m0 = 5 0 0 0 0 5 0 0 0 2 2 2;
pFlag = 0 2 2 2 2 0 2 2 2 1 1 1 ;
bnd = 5 5 5 5 5 5 5 5 5 5 5 5 ;
itFlag = 1 0 0 0 0 0 1 0 0 0 ;
wpt = 1 0 0 0 0 0 0 0 0 0
0 1 0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1 0
2 0 0 0 0 0 0 1 0 0
0 0 1 0 1 0 1 0 0 0 ;
wtp = 0 1 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 1 1 0
0 0 0 0 1 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0 0 0 2 0
1 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 1 0 1 0
0 0 0 0 0 1 0 0 0 1 0 0 ;
mvalue = -1 0 0 0 0 1 0 0 0 0
1 -1 0 -1 0 0 0 0 0 0
0 1 -1 0 0 0 0 0 0 0
0 0 0 1 -1 0 0 0 0 0
0 0 1 0 1 -1 0 0 0 0
0 0 0 0 0 0 -1 0 0 1
0 0 0 0 0 0 1 -1 0 0
0 0 0 0 0 0 0 1 -1 0
0 0 0 0 0 0 0 0 1 -1
-1 1 0 1 0 0 0 0 -1 1
-2 1 1 0 2 0 0 -1 1 0
0 0 -1 0 -1 1 -1 1 0 0 ;
@text(Minimize_Bad_Siphon.dat)= @write('the place whose value is 0 is included in a bad siphon ');
@text(Minimize_Bad_Siphon.dat)= @writefor(VIP(i)|pFlag#NE#0:@newline(1),'p',VIP(i),'=',vp(i));
enddata
max = @sum(BadMarkedSiphon(i)|pFlag(i)#NE#0:vp(i));
!constrants (1);
@for(VIP(i):
@for(VIT(j)| pFlag(i)#NE#0 #AND# wtp(j,i)#NE#0 : vp(i) >= @sum(VIP(z):@if(wpt(z,j)#NE#0,1,0)*vp(z))-
@sum(VIP(z):@if(wpt(z,j)#NE#0,1,0))+1);
);
!constrants (2);
@sum(VIP(i)|pFlag(i)#NE#0 : vp(i)) < @sum(VIP(i) : @if(pFlag(i)#NE#0,1,0))-0.00001;
!constrants (3);
@for(VIT(i) :
@for(VIP(j) | itFlag(i)#NE#1 #AND# wpt(j,i)#NE#0 #AND# pFlag(j)#EQ#2 : m(j) >= et(i));
);
!constrants (4);
@for(VIT(i) :
@for(VIP(j) | itFlag(i)#NE#1 #AND# wpt(j,i)#NE#0 #AND# pFlag(j)#EQ#2 : et(i) >= m(j)/bnd(j));
);
!constrants (5);
@for(VIP(i) :
@for(VIT(j) | pFlag(i)#EQ#1 #AND# itFlag(j)#NE#1 #AND# wpt(i,j)#NE#0: (m(i)/wpt(i,j)+vp(i)) >= ert(i,j));
);
!constrants (6);
@for(VIP(i) :
@for(VIT(j) | pFlag(i)#EQ#1 #AND# itFlag(j)#NE#1 #AND# wpt(i,j)#NE#0: ert(i,j) >= (m(i)-wpt(i,j)+1)/(m0(i)-wpt(i,j)+1));
);
!constrants (7);
@for(VIP(i) :
@for(VIT(j) | pFlag(i)#EQ#1 #AND# itFlag(j)#NE#1 #AND# wpt(i,j)#NE#0: ert(i,j) >= vp(i));
);
!constrants (8);
@for(VIT(i) | itFlag(i)#NE#1: @sum(EnabledResourse(j,i)| pFlag(j)#EQ#1 #AND# wpt(j,i)#NE#0: ert(j,i))+0.00001 < @sum(VIP(z)| pFlag(z)#EQ#1: @if(wpt(z,i)#NE#0,1,0))+1-et(i) );
!constrants (9);
@for(VIP(i) | pFlag(i)#NE#0 : @bin(vp(i)));
!constrants (10);
@for(VIT(i) | itFlag(i)#NE#1 : @bin(et(i)));
!constrants (11);
@for(VIP(i) :
@for(VIT(j)| pFlag(i)#EQ#1 #AND# itFlag(j)#NE#1 #AND# wpt(i,j)#NE#0 :@bin(ert(i,j)));
);
!constrants (12);
@for(VIP(i)|pFlag(i)#EQ#2: ps(i)=@if(m(i)#gt#0,1,0));
@sum(VIP(i)|pFlag(i)#EQ#2: ps(i))>1;
@for(VIP(i): m(i)>=0);
@for(VIT(i): fvec(i)>=0 );
@for(VIT(i): fvec(i)<=1024);
@for(VIP(i):m(i)= m0(i)+@sum(VIT(j):mvalue(i,j)*fvec(j)));
@for(VIP(i):@gin(m(i)));
@for(VIT(i):@gin(fvec(i)));
@for(VIP(i)|pFlag(i)#EQ#2: @bin(ps(i)););
end
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

21

主题

97

听众

3110

积分

  • TA的每日心情
    奋斗
    2014-3-2 00:26
  • 签到天数: 243 天

    [LV.8]以坛为家I

        你的问题,LINDO 14与LINGO 11求解出来的全局解不一样。
    原始数据的解:
      Global optimal solution found.
      Objective value:                         9.00000000000
      Objective bound:                         9.00000000000
      Infeasibilities:                         0.00000000000
      Extended solver steps:                               0
      Total solver iterations:                             9
      Elapsed runtime seconds:                          0.17

                                                                  Variable                Value
                                                                     M( 1)        5.00000000000
                                                                     M( 6)        5.00000000000
                                                                    M( 10)        2.00000000000
                                                                    M( 11)        2.00000000000
                                                                    M( 12)        2.00000000000
                                                                    PS( 1)        1.23456788063
                                                                    PS( 2)        1.00000000000
                                                                    PS( 5)        1.00000000000
                                                                    PS( 6)        1.23456788063
                                                                    PS( 9)        1.00000000000
                                                                   PS( 10)        1.23456788063
                                                                   PS( 11)        1.23456788063
                                                                   PS( 12)        1.23456788063
                                                                  FVEC( 7)        1019.00000000
                                                                  FVEC( 8)        1019.00000000
                                                                  FVEC( 9)        1019.00000000
                                                                 FVEC( 10)        1019.00000000

    修改数据后的解:
      Global optimal solution found.
      Objective value:                         6.00000000000
      Objective bound:                         6.00000000000
      Infeasibilities:                         0.00000000000
      Extended solver steps:                               0
      Total solver iterations:                             3
      Elapsed runtime seconds:                          0.06

                                                                  Variable                Value
                                                                     M( 1)        100.000000000
                                                                     M( 5)        2.00000000000
                                                                     M( 6)        2.00000000000
                                                                     M( 9)        100.000000000
                                                                    PS( 1)        1.23456788063
                                                                    PS( 4)        1.00000000000
                                                                    PS( 5)        1.23456788063
                                                                    PS( 6)        1.23456788063
                                                                    PS( 7)        1.00000000000
                                                                    PS( 9)        1.23456788063
                                                                  FVEC( 1)        1022.00000000
                                                                  FVEC( 2)        1022.00000000
                                                                  FVEC( 3)        1022.00000000
                                                                  FVEC( 4)        1022.00000000
                                                                  FVEC( 5)        1022.00000000
                                                                  FVEC( 6)        1022.00000000
                                                                  FVEC( 7)        1022.00000000

       程序太长,逻辑判断太多,看你书写的格式估计是在做个大作业或者小项目,你很难让人花大把时间去仔细看你的程序的。
       不排除软件计算有误,MINLP问题求解本身是非常困难的。首先,你应该仔细检查自己的模型,有时候或许是笔误,或者思考不周,导致浪费大量时间也是有可能的。
    已有 1 人评分威望 体力 收起 理由
    平凡之不凡 + 5 + 10 很给力!

    总评分: 威望 + 5  体力 + 10   查看全部评分

    有什么好说的
    回复

    使用道具 举报

    0

    主题

    4

    听众

    97

    积分

    升级  96.84%

  • TA的每日心情
    开心
    2014-9-24 13:13
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    自我介绍
    我是学生
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-10-6 03:14 , Processed in 0.563517 second(s), 65 queries .

    回顶部