作业帮 > 数学 > 作业

请问这两个语句有什么区别啊?我正参加我们学校的数学建模,用lingo求解时出现了问题,

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:数学作业 时间:2024/08/04 08:36:34
请问这两个语句有什么区别啊?我正参加我们学校的数学建模,用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
请问这两个语句有什么区别啊?我正参加我们学校的数学建模,用lingo求解时出现了问题,
你这个是非线性的 所以得到的是局部最优解 局部最优解跟初始的值是有关的 所以解可能不同
你都用global solver试一下吧
再问: 关键是我那两个式子他是等价的呀,只不过一个是在里面减去0.5,一个是在外面减去0.5而已,为什么会出现结果不一样的状况呢?
再答: 我已经说了 你用global solver试试 这个给出的解是局部解 有多个不奇怪 而且你这个问题应该不需要用lingo 只要为每一组a和b配上相应的x和y就行了 你写的这样非线性太强用lingo解是很可能有问题的