用lingo14.0来解线性规划问题。是用5个虚拟机(Vnode)来处理3个数据(Dnode),没有目标函数 5
用lingo14.0来解线性规划问题。是用5个虚拟机(Vnode)来处理3个数据(Dnode),没有目标,是给出5个约束条件,找一个可行解。我是完全按照论文中约束写的,为...
用lingo14.0来解线性规划问题。是用5个虚拟机(Vnode)来处理3个数据(Dnode),没有目标,是给出5个约束条件,找一个可行解。我是完全按照论文中约束写的,为什么会找不到可行解。
lingo14.0代码:
MODEL:
SETS:
Dnode/d1..d3/;
Vnode/v1..v5/;
link(Dnode,Vnode):time,x;
ENDSETS
DATA:
t = 10;
time =
10 19 28 10 10
20 10 19 19 19
19 19 19 10 10
;
ENDDATA
@for(Dnode(I):@sum(Vnode(J):x(I,J))=1);
@for(Vnode(J):@sum(Dnode(I):x(I,J)) <= 1);
@for(link:x*(t-time) >= 0);
@for(link:(2*t-time)>= 0);
@for(link:@Bnd(0,x,1));
END
约束条件:
问题模型(a),.(b)是把约束条件中(3e)松弛成x属于[0,1]来找线性解,我写的lingo代码应该能找到可行解,为什么运行后软件提示是没有可行解,而且用lingo9.0版本的运行同样的代码,是只有整数解,不是线性解。我想了很长时间,还是不知道哪有问题。
@for(Dnode(I):@sum(Vnode(J):x(I,J))=1);
!每个Dnode必须有数量为1个Vnode处理;
@for(Vnode(J):@sum(Dnode(I):x(I,J)) <= 1);
!每个Vnode处理的Dnode数目不超过1个;
@for(link:x*(t-time) >= 0);
!对于用来处理数据的虚拟机,访问延迟不能超过阈值t;
@for(link:(2*t-time)>= 0);
!对于任何一个数据 和 任何一个虚拟机,访问延迟都不能超过2倍阈值 ,2*t;
@for(link:@Bnd(0,x,1));
!限制0<= x <=1;
--------------------------------------- 展开
lingo14.0代码:
MODEL:
SETS:
Dnode/d1..d3/;
Vnode/v1..v5/;
link(Dnode,Vnode):time,x;
ENDSETS
DATA:
t = 10;
time =
10 19 28 10 10
20 10 19 19 19
19 19 19 10 10
;
ENDDATA
@for(Dnode(I):@sum(Vnode(J):x(I,J))=1);
@for(Vnode(J):@sum(Dnode(I):x(I,J)) <= 1);
@for(link:x*(t-time) >= 0);
@for(link:(2*t-time)>= 0);
@for(link:@Bnd(0,x,1));
END
约束条件:
问题模型(a),.(b)是把约束条件中(3e)松弛成x属于[0,1]来找线性解,我写的lingo代码应该能找到可行解,为什么运行后软件提示是没有可行解,而且用lingo9.0版本的运行同样的代码,是只有整数解,不是线性解。我想了很长时间,还是不知道哪有问题。
@for(Dnode(I):@sum(Vnode(J):x(I,J))=1);
!每个Dnode必须有数量为1个Vnode处理;
@for(Vnode(J):@sum(Dnode(I):x(I,J)) <= 1);
!每个Vnode处理的Dnode数目不超过1个;
@for(link:x*(t-time) >= 0);
!对于用来处理数据的虚拟机,访问延迟不能超过阈值t;
@for(link:(2*t-time)>= 0);
!对于任何一个数据 和 任何一个虚拟机,访问延迟都不能超过2倍阈值 ,2*t;
@for(link:@Bnd(0,x,1));
!限制0<= x <=1;
--------------------------------------- 展开
1个回答
展开全部
@for(link:(2*t-time)>= 0); 你的time有个是28 而且你这些t和time都已知了 你写这个约束不知道是干什么用的
追问
t和time都已知,x(I,J)不知道,也就是求x(I,J),即用哪个虚拟机来处理哪个数据。
图(a)左边一列是数据结点,右边一列是虚拟机结点,虚拟机和虚拟机之间也是有通讯的
如果I虚拟机处理J数据,那么IJ之间通讯不能超过阈值t
@for(link:(2*t-time)>= 0)这个约束是任意一个虚拟机和数据之间通讯都不能超过2倍阈值。 从而使被选中的虚拟机之间通讯不能超过3t(满足三角不等式)。
追答
那么你看看到底有没有矛盾不就得了 我可是把矛盾在哪都告诉你了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询