重心法选址

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档