请问这两个语句有什么区别啊?我正参加我们学校的数学建模,用lingo求解时出现了问题,1.min=@sum(assigin(i,j):d1(i,j)*(20*@abs(x1-a(i))+30*@abs(y1-b(j)))+d2(i,j)*(20*@abs(x2-a(i))+30*@abs(y2-b(j))));.2.min=@sum(assigin(i,j)
来源:学生作业学帮网 编辑:学帮网 时间:2024/05/07 03:01:31
请问这两个语句有什么区别啊?我正参加我们学校的数学建模,用lingo求解时出现了问题,
1.min=@sum(assigin(i,j):d1(i,j)*(20*@abs(x1-a(i))+30*@abs(y1-b(j)))+d2(i,j)*(20*@abs(x2-a(i))+30*@abs(y2-b(j))));.
2.min=@sum(assigin(i,j):d1(i,j)*(20*@abs(x1-(a(i)-0.5))+30*@abs(y1-(b(j)-0.5)))+d2(i,j)*@abs(20*(x2-(a(i)-0.5))+30*@abs(y2-(b(j)-0.5))));
我在data里面定义a和b,前面的和后面的刚好相差0.5,如1是a=0.5,1.5;b=0.5,1.5;而2是a=1,2;b=1,2;可为什么这两个算出来的结果不一样呢?
再附上整个程序吧
model:
sets:
demad/1..6/:a;
step/1..12/:b;
assigin(demad,step):c,d1,d2;
endsets
data:
c=4,2,5,2,1,0,6,4,2,3,1,2
3,4,3,1,2,3,1,6,5,4,2,3
1,2,5,0,4,0,2,5,0,0,2,3
2,1,0,0,2,1,2,6,0,2,1,4
3,5,6,4,3,1,2,4,0,1,5,1
4,1,1,2,2,3,1,0,1,2,4,3;
a=1.5,2.5,3.5,4.5,5.5,6.5;
b=1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5,11.5,12.5;
enddata
min=@sum(assigin(i,j):d1(i,j)*(20*@abs(x1-a(i))+30*@abs(y1-b(j)))+d2(i,j)*(20*@abs(x2-a(i))+30*@abs(y2-b(j))));
x1
你这个是非线性的 所以得到的是局部最优解 局部最优解跟初始的值是有关的 所以解可能不同
你都用global solver试一下吧