m0_52043689 2021-09-20 10:53 采纳率: 100%
浏览 179
已结题

matlab调用yalmip求解网络最短路问题,测试代码显示infeasible problem,求懂yalmip的高人

matlab调用yalmip求解网络最短路问题,测试代码显示infeasible problem,于是分段运行查看代码问题,这条件设置的哪里有问题,苦恼了很久……

cons=[];
o=[1,1,1,1,1,3,3,3,3,3,4,4,4,4,4,18,18,18,18,18,24,24,24,24,24];
d=[11,19,22,38,40,11,19,22,38,40,11,19,22,38,40,11,19,22,38,40,11,19,22,38,40];
len=readmatrix('len.csv');
time=readmatrix('time.csv');
load('orig.mat');
load('dest.mat');
%% 决策变量
X=binvar(25,128);
%% 目标函数
cost=sum(2.8*X*len)/(197*25);
T=sum(sum(X*time))/(2.5*25);
A=0.8*cost+0.2*T;
%% 约束条件
for i=1:10
    for j=1:25
        for L=1:128
        cons=[cons,0<=X(j,L)<=1]; 
        end
%         cons=[cons,sum(X(j,orig==o(j)))-sum(X(j,dest==o(j)))==1];
%         cons=[cons,sum(X(j,orig==d(j)))-sum(X(j,dest==d(j)))==-1];
        for k=1:41
            cons=[cons,sum(X(j,orig==k))<=1];%从
            cons=[cons,sum(X(j,dest==k))<=1];
          if k~=o(j) && k~=d(j)
              cons=[cons,sum(X(j,orig==k))-sum(X(j,dest==k))==0];%每个中间点和不经过的点的净流量为0
          end
        cons=[cons,max(sum(X(j,:)*time))<=2.5];
        end
    end
ops=sdpsettings('verbose',1);
sol=optimize(cons,A,ops)
%% 结果输出
    if sol.problem==0
      X=value(X);
      A=value(A);
    else
        disp('error');
    end
end
clear i;
clear j;
clear k;

以上为matlab代码片段,前面的注释掉的片段一旦注释掉,问题就好像有解但其实为0;不注释就显示infeasible problem。

img

这里o(1)是1,k==o(j)是成立的

img

可见条件没有产生作用,value值是0,裂开了呀。sum函数不能用的话怎样从别的矩阵获得我想要的相同位置的决策变量元素的加总成为条件呢?

  • 写回答

1条回答 默认 最新

  • 技术专家团-Joel 2021-09-20 11:18
    关注

    同学你好,你的条件不能连着写啊,分开写:

    cons=[cons,0<=X(j,L)<=1]; 
    

    改成

    cons=[cons,0<=X(j,L), X(j,L)<=1]; 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月28日
  • 已采纳回答 9月20日
  • 创建了问题 9月20日

悬赏问题

  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格