村鎮小學最佳選址問題Python求解

2021-10-06 10:30:22 字數 2330 閱讀 2621

最佳選址問題的python求解

團結鄉有8個村鎮,各村鎮位置座標及學生人數如下表所示。

村鎮代號

座標位置

小學生人數xy

10060

210380

31215100414

13120516

980618

66078

124086

1080

考慮到學校的規模效益,擬選其中兩個村鎮各建一所小學。問兩所小學各建於何處,使小學生上學所走路程最短(小學生所走路程按兩村鎮之間的歐式距離計算)。

# -*- coding: utf-8 -*-

import math #匯入math模組

sqrt = math.sqrt #運算兩點之間距離

from queue import queue #匯入佇列的模組

q = queue(maxsize=0)

#初始化空佇列

x =[0,

10,12,

14,16,

18,8,

6]#各點的橫座標

y =[0,

3,15,

13,9,

6,12,

10]#各點的縱座標

number =[60

,80,100

,120,80

,60,40

,80]#各點的人數

'''存放兩地學校選址的座標'''

stack =

#構造棧

b_list =

#存放所有情況的列表

c_list =

;d_list =

lst =

;list_d =

'''資料寫入列表'''

for i in

range

(len

(x))

:for j in

range

(len

(y))

:if i == j:

#學校建在不同的兩地

continue

else

: a_list =

#儲存一種情況

a_dict =

#儲存一種情況的座標資料

a_dict[

"x"]

= x[i]

a_dict[

"y"]

= y[i]

q.put(stack.pop())

#彈棧和入隊先後進行

a_dict =

a_dict[

"x"]

= x[j]

a_dict[

"y"]

= y[j]

q.put(stack.pop())

for h in

range

(len

(q.queue)):

))#兩地選址的情況,考慮了順序

'''還需判斷某點對兩處位址哪一處距離最小'''

for k in

range

(len

(b_list)):

for n in

range

(len

(b_list[k]))

:[n]

)#讀出兩處的座標

for m in

range

(len

(x))

:for l in

range

(len

(d_list)):

q = d_list[l]

d = sqrt(

(q["x"

]-x[m])**

2+(q["y"

]-y[m])**

2)min_d =

min(c_list)

* number[m]

#距離最小

c_list.clear(

)sum

(lst)

) d_list.clear(

) lst.clear(

)for s in

range

(len

(list_d)):

print

(list_d[s]

)print()

print

(min

(list_d)

)

1 9 貨倉選址問題 Python

在一條數軸上有 n 家商店,它們的座標分別為 a1 an。現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。輸入格式 第一行輸入整數n。第二行n個整數a1 an。輸出格式 輸出乙個整數,表示距離之和的最小值...

python結合線性代數解決小學奧數問題

因為我的記憶力不好,還得輔導兒子的小學奧數,面對好多 腳 的問題,學了線性代數後根本就不用動腦筋,兩個動物 的通過克拉默法則一下就出來,三個動物 以上的通過高斯變換就計算出來,都不用思考,於是對線性代數使用python的技術進行總結歸納,為了好玩,也會熟練掌握numpy,以便在神經網路中找到線性代數...

python 遺傳演算法求函式極值問題

遺傳演算法實現求函式極大值 zjh import numpy as np import random import matplotlib.pyplot as plt class ga 求出二進位制編碼的長度 def init self self.boundsbegin 2 self.boundsen...