24小时热门版块排行榜    

查看: 3825  |  回复: 10
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

c123_5

铁虫 (初入文坛)

[求助] matlab解决重心法选址问题,运行不了啊,求助各位大神

这是代码,我是R2013a版的,各位大神帮忙看看啊,我才刚开始接触matlab
function T=TotalCost
x0=0;
y0=0;
x1=0;
y1=0;
a=[0.04,0.04,0.095,0.095,0.095];
w=[5000,7000,3500,3000,5500];
x=[3,8,2,6,8];
y=[8,2,5,4,8];
d=[0,0,0,0,0];
T0=200;
T1=100;
while(T1-T0<=0)                                             
T0=0;
T1=0;
a1=0;
a2=0;
b1=0;
b2=0;
x0=x1;
y0=y1;
d(i)=sqrt((x0-x(i))^2+(y0-y(i))^2);
T0=T0+a(i)*w(i)*d(i);
end
for i=1:5
    a1=a1+a(i)*w(i)*x(i)/d(i);
    a2=a2+a(i)*w(i)/d(i);
    b1=b1+a(i)*w(i)*y(i)/d(i);
    b2=b2+a(i)*w(i)/d(i);
end
x1=a1/a2;
y1=b1/b2;
for i=1:5
   d(i)=sqrt((x(i)-x1)^2+(y(i)-y1)^2);
   T1=T1+a(i)*w(i)*d(i);
end
T0;
T1;
end
x1;
y1;
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

c123_5

铁虫 (初入文坛)

引用回帖:
8楼: Originally posted by libralibra at 2013-04-30 22:00:22
迭代是可以,问题是既然是重心法,直接能求出来重心,为何要舍近求远取用迭代?不太理解...

因为可能他不是最优,要有一个验证的过程,可以求偏导,也可以用迭代,迭代不是较容易编程吗?您能看出来问题出在哪了吗?
9楼2013-05-01 00:04:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖


感谢参与,应助指数 +1
fegg7502: 金币+1, 3ks 2013-05-04 19:41:26
描述问题,你有什么输入,需要什么输出?
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2013-04-30 18:43:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

c123_5

铁虫 (初入文坛)

引用回帖:
2楼: Originally posted by libralibra at 2013-04-30 18:43:28
描述问题,你有什么输入,需要什么输出?

就是设施选址的重心法,就是比如说有六个地点,要选择一个配送中心,这个中心到这六个点的运送货物的流量已知,单位费用已知,求这个点,使之到这六个点的配送总费用最小的问题。。。。六个点的坐标已知,求这个点的坐标。。。。非常感谢!
3楼2013-04-30 19:12:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★
ben_ladeng: 专家考核 2013-04-30 20:46:06
csgt0: 金币+2, 谢谢 2013-05-02 09:47:29
引用回帖:
3楼: Originally posted by c123_5 at 2013-04-30 19:12:45
就是设施选址的重心法,就是比如说有六个地点,要选择一个配送中心,这个中心到这六个点的运送货物的流量已知,单位费用已知,求这个点,使之到这六个点的配送总费用最小的问题。。。。六个点的坐标已知,求这个点 ...

这个你直接按照重心定义求就可以了吗?看做6个质点,每个质点有质量(流量*单位费用),然后直接求加权平均就行了
CODE:
a=[0.04,0.04,0.095,0.095,0.095];
w=[5000,7000,3500,3000,5500];
x=[3,8,2,6,8];
y=[8,2,5,4,8];
m = a.*w;
n = sum(m);
c(1) = x*m'/n;
c(2) = y*m'/n;
figure,hold on;
scatter(x,y,50,'filled') % 站点
scatter(c(1),c(2),100,'filled') % 重心

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2013-04-30 19:52:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见