最佳選址問題的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...