重心法选址
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2单设施重心法选址
2.1实验目的
掌握单设施重心法选址的原理,能够计算简单选址题目中待选设施的位置; 掌握单设施重心选址的算法流程,能够设计类似题目的算法流程,并编写程序。
2.2实验过程
(1)单设施重心法选址的原理
重心法选址模型示意图如图2-1所示。
图2-1 单设施重心法选址选址示意图
求解目标:C-总成本最低
其中:f i -序号为i 的点的运输费率;
V i -序号为i 的点的产量或者销量;
d i -序号为i 的点到待选设施点的相对距离。
待选设施位置的计算公式:
其中:X c -重心的X 坐标;
Y c -重心的Y 坐标;
X i -第i 个地点X 坐标;
Y i -第i 个地点Y 坐标;
i i n
i i d V f MinC ∑==1∑∑===n i i i i n i i i i i c d V f d
x V f X 11)/()
/(∑
∑===n i i i i n i i i i i c d V f d y V f Y 11)/()/()()(22y i c ix c d d Y d X i --+=X
Y
(2)算法流程图,如图2-2所示。
图2-2 算法流程图
2.3实验结果
(1)单设施重心法选址程序参数设定及其求解界面如图2-3所示。
图2-3 单设施重心法选址程序参数设定及其求解界面 初始化Xc=0,Yc=0
JD=0.001赋值SumCOld = 0
SumCNew = 0Sum1 = 0
Sum2 = 0Sum3 = 0
计算
di SumCOld Xc,Yc Di
SumCNew 判断
(SumCOld-SumCNew )<=JD 输出Xc,Yc
SumCNew j(跌代次数)
停止j=j+1是否
(2)参数设定及其求解界面变量声明部分(代码)Private Sub Command1_Click()
If Text1.Text = "" Then
MsgBox "X-横坐标不允许为空"
Text1.SetFocus
Exit Sub
ElseIf IsNumeric(Text1.Text) = False Then
MsgBox "X-横坐标必须为数值型数据!"
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
If Text2.Text = "" Then
MsgBox "Y-纵坐标不允许为空"
Text2.SetFocus
Exit Sub
ElseIf IsNumeric(Text2.Text) = False Then
MsgBox "Y-纵坐标必须为数值型数据!"
Text2.Text = ""
Text2.SetFocus
Exit Sub
End If
If Text3.Text = "" Then
MsgBox "产量或销量不允许为空"
Text3.SetFocus
Exit Sub
ElseIf IsNumeric(Text3.Text) = False Then
MsgBox "产量或销量应为数值型数据!"
Text3.Text = ""
Text3.SetFocus
Exit Sub
ElseIf Val(Text3.Text) < 0 Then
MsgBox "产量或销量应为正数,否则无实际意义!" Text3.Text = ""
Text3.SetFocus
Exit Sub
End If
If Text4.Text = "" Then
MsgBox "运输费率不允许为空"
Text4.SetFocus
Exit Sub
ElseIf IsNumeric(Text4.Text) = False Then
MsgBox "运输费率应为数值型数据!"
Text4.Text = ""
Text4.SetFocus
Exit Sub
ElseIf Val(Text4.Text) < 0 Then
MsgBox "运输费率应为正数,否则无实际意义!" Text4.Text = ""
Text4.SetFocus
Exit Sub
End If
If Text5.Text = "" Then
MsgBox "X0-横坐标不允许为空"
Text5.SetFocus
Exit Sub
ElseIf IsNumeric(Text5.Text) = False Then
MsgBox "X0-横坐标必须为数值型数据!"
Text5.Text = ""
Text5.SetFocus
Exit Sub
End If
If Text6.Text = "" Then
MsgBox "Y0-纵坐标不允许为空"
Text6.SetFocus
Exit Sub
ElseIf IsNumeric(Text6.Text) = False Then
MsgBox "Y0-纵坐标必须为数值型数据!"
Text6.Text = ""
Text6.SetFocus
Exit Sub
End If
If Text7.Text = "" Then
MsgBox "精度不允许为空"
Text7.SetFocus
Exit Sub
ElseIf IsNumeric(Text7.Text) = False Then
MsgBox "精度应为数值型数据!"
Text7.Text = ""
Text7.SetFocus
Exit Sub
ElseIf Val(Text7.Text) < 0 Then