使用lingo编程使用lingo求平面上两点,使平面上的12个点到这两点距离最近.例如这12个点位x=12 15 26

问题描述:

使用lingo编程
使用lingo求平面上两点,使平面上的12个点到这两点距离最近.例如这12个点位x=12 15 26 18 15 5 3 2 7 2 23 56;y=23 43 56 12 67 23 12 45 78 34 23 78 ;加权为r=500 1000 300 400 700 800 1000 600 100 200 400 600;求平面上的两点12个点到两点的距离为最短,用lingo或者Matlab编程
能不能求出这两个点 这两个点为不为同一点!(初学lingo我求出的是一样的但是不符合题意)还是我的理解有问题?
1个回答 分类:综合 2014-12-01

问题解答:

我来补答
sets:
point/1..12/:x,y,r,c;
link(point,point):d;
endsets
calc:
@for(link(i,j):d(i,j)=@sqrt((x(i)-x(j))^2+(y(i)-y(j))^2));
endcalc
min=@sum(link(i,j):d(i,j)*c(i)*r(i));
@sum(point:c)=2;
@for(point:@bin(c));
再问: 你好 谢谢你的回答,根据你的回答我不太明白要找的两个点是那两个点?
再答: c为1的点
再问: 根据您的回答,你这两个点是不是在12个点中的两个点?我的意思是有没有平面上的两个点(不一定是12个点中的一个)
再答: 那你说清楚你的问题好吗 具体目标函数到底是什么 你要说清楚否则没法给你看
再问: 对不起,我以前没学过lingo,现在突然用lingo做题有点吃不消。 有12个自然村组成,每个自然村的位置(用平面坐标x,y和自然村的人口数R)需要建两个服务网点,试确定其位置。(我把这道题理解为上面的模型,不知道对不对?)
再答: sets: point/1..12/:x,y,r,c,d1,d2,c1,c2; link(point,point):d; endsets data: x=12 15 26 18 15 5 3 2 7 2 23 56; y=23 43 56 12 67 23 12 45 78 34 23 78; r=500 1000 300 400 700 800 1000 600 100 200 400 600; enddata @for(point:d1=@sqrt((x-x1)^2+(y-y1)^2)); @for(point:d2=@sqrt((x-x2)^2+(y-y2)^2)); min=@sum(point:r*(c1*d1+c2*d2)); @for(point:c1+c2)=1; @for(point:@bin(c1);@bin(c2);); 没问题请采纳
 
 
展开全文阅读
剩余:2000
上一页:函数急