QQ登录

只需要一步,快速开始

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

lingo的0-1非线性规划问题,不知道哪错了

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

1

主题

8

听众

2

积分

升级  40%

该用户从未签到

自我介绍
一名喜欢建模的研究生。
跳转到指定楼层
1#
发表于 2015-9-6 20:43 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
model:

sets:
xinde/1..5/:;
lu(xinde,xinde):H,w,A,L,r,a11,a22;
endsets
data:
N=4;
M=1;
A=0 0 0 0 0
1 0 0 0 0
1 0 0 0 0
1 0 1 0 0
0 0 0 0 0;
enddata

!约束条件;
@for(xinde(i)for(xinde(j)bin(H(i,j))));!自变量H为0-1矩阵;


!确保自变量H的每一条边的行和列的和都为1;
@for(xinde(i):
        @sum(xinde(j):H(i,j))=1);
@for(xinde(j):
        @sum(xinde(i):H(i,j))=1);
!对H矩阵进行运算,使得编程L矩阵;

!令a11矩阵=H矩阵加上A矩阵后的0-1矩阵;
@for(xinde(i):
        @for(xinde(j):
                a11(i,j)=A(i,j)+H(i,j);
                a11(i,j)=@if(a11(i,j)#eq#2,1,a11(i,j))));!
!将a11矩阵的0元素换成(N+M)的平方,并赋值给a22矩阵;
@for(xinde(i):
        @for(xinde(j):
                a11(i,j)=@if(a11(i,j)#eq#0,(N+M)*(N+M),a11(i,j));
                a22(i,j)=a11(j,i);
                r(i,j)=0));
!计算a22矩阵各个节点之间的最短距离,并赋给a22,最短路径赋给r矩阵;
@for(xinde(k):
        @for(xinde(i):
                @for(xinde(j):
                        tm=@smin(a22(i,j),a22(i,k)+a22(k,j));
                        r(i,j)=@if(a22(i,j)#gt# tm,k,r(i,j));
                        a22(i,j)=tm)));
!将r矩阵距离大于(N+M)的平方的,化成0;
@for(xinde(i):
        @for(xinde(j):
                r(i,j)=@if(a22(i,j)#ge#(N+M)*(M+N),0,r(i,j));
                L(i,j)=0));
!将r矩阵转化为L矩阵;
@for(xinde(i):
        @for(xinde(j):
                L(i,j)=@if(r(i,j)#eq#0,0,L(i,j));
                L(i,j)=@if(r(i,j)#eq#j,L(i,j)+1,L(i,j));
                L(i,r(i,j))=@if(r(i,j)#ne#0 #and# r(i,j)#ne#j,L(i,r(i,j))+1,L(i,r(i,j)));
                L(r(i,j),j)=@if(r(i,j)#ne#0 #and# r(i,j)#ne#j,L(r(i,j),j)+1,L(r(i,j),j))));

!目标函数;
min=@sum(lu(i,j)(i,j)*A(i,j));
end



zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

413

主题

36

听众

1854

积分

升级  85.4%

  • TA的每日心情
    开心
    2019-9-18 21:55
  • 签到天数: 258 天

    [LV.8]以坛为家I

    社区QQ达人

    群组2015国赛冲刺

    群组2016美赛公益课程

    群组国赛讨论

    群组第三届数模基础实训

    群组Matlab讨论组

    回复

    使用道具 举报

    liwenhui        

    70

    主题

    65

    听众

    5195

    积分

    独孤求败

  • TA的每日心情
    擦汗
    2018-4-26 23:29
  • 签到天数: 1502 天

    [LV.Master]伴坛终老

    自我介绍
    紫薇软剑,三十岁前所用,误伤义士不祥,乃弃之深谷。 重剑无锋,大巧不工。四十岁前恃之横行天下。 四十岁后,不滞于物,草木竹石均可为剑。自此精修,渐进至无剑胜有剑之境。

    社区QQ达人 邮箱绑定达人 发帖功臣 元老勋章 新人进步奖 风雨历程奖 最具活力勋章

    群组计量经济学之性

    群组LINGO

    1. @for(xinde(i):
    2.         @for(xinde(j):
    3.                 a11(i,j)=A(i,j)+H(i,j);
    4.                 a11(i,j)=@if(a11(i,j)#eq#2,1,a11(i,j))))
    复制代码
    这段的逻辑有问题。H的所有元素都是未知量,而这段的语句的意思是把未知量赋值给别的量。那么问题来了,H(i,j)是未知的(只知道它或为0或为1),那么在后面的@if的判定条件中,LINGO怎么知道a11(i,j)#eq#2  成立还是不成立呢?(H是未知的,LINGO无法判断)。所以在此处就出错。

    我能理解你想表达的意思,但我此刻可能也想不出合适的解决办法。自己思考,应该有解决方案的。

    四十岁后,不滞于物,草木竹石均可为剑。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2024-5-29 05:26 , Processed in 0.397738 second(s), 69 queries .

    回顶部