我用Python做设计(一)
我用Python做设计(一)
目录
- 我用Python做设计一
- 目录
- 前言
- 简介
- 数据处理
- 算法分析
前言
“铃铃铃,铃铃铃。。。”随着一阵急促的电话,我知道又要有的忙了。“XX,有一份规划,着急要,要求和资料我已经发你了,你抓紧看一下,有什么问题给我打电话。”
晕,难得的清闲时间,又没了,开始接收文件,看看是啥。原来是一份本地区的配网自动化规划设计要求。
简介
看了下要求,原来对本地的配网自动化光纤建设进行规划,做到本地区配网自动化节点和配变节点的光纤100%覆盖。要求知道了,下面就是看看,都有哪些资料。
- 本地的当前配电房的GIS的CAD版本
本地的当前所有配变的Excel版资料
先对本地区的配网自动化组网方案进行一个简要的介绍,本地区的配网光线自动化组网方案,采用以太网交换机的光纤环网的组网方案,环网从变电站出发,串接各个自动化节点,最后再回到变电站。然后原则上,一个变电站可以出不超过4个光纤环,一个环,原则上串接不超过25个节点。
要求有了,先熟悉一下资料,看看有啥可用的。
首先先从CAD中导出所有的变电站资料,看看有多少座变电站,他们都在哪儿。
序号 | 变电站 | 坐标X | 坐标Y | 坐标Z |
---|---|---|---|---|
1 | 叶孤城变电站 | 114.0911 | 22.5536 | 0 |
2 | 惊云变电站 | 114.1025 | 22.5758 | 0 |
3 | 连城变电站 | 114.1035 | 22.5716 | 0 |
… | … | … | … | … |
14 | 香山变电站 | 114.1692 | 22.66 | 0 |
然后是本地的所有配电房的数据,这个数据就比较多了,然后格式也是一样的,就不列举了。
下面开始尝试先对数据有个简单的感受。
数据处理
变电站的数据很少,就先看它。下面,当然是掏出我的大蟒蛇,嘻嘻嘻嘻,将数据处理之后,放进去,代码很简单。
import geoplotlib
from geoplotlib.utils import read_csv, BoundingBoxdata = read_csv('data/lh_stations.csv')
geoplotlib.dot(data, point_size=8)
geoplotlib.set_bbox(BoundingBox(22.58, 114.11, 22.53, 114.16))
geoplotlib.show()
得到的效果如下:
额。。。,好吧,开导自己,我至少知道了这几个变电站在哪儿,看着这些站的位置还是很不平均的,有些地方空出了很大位置,不晓得会不会影响规划。
先不管了,再看看本地区的配电房都在那里吧。配电房数据,肯定不能这么看了,毕竟它要密的多,所以决定用热力图看看,代码也很简单。
import geoplotlib
from geoplotlib.utils import read_csv, BoundingBox
import comdef hist():data = read_csv('data/lh_powerhouses.csv')geoplotlib.hist(data, colorscale='sqrt', binsize=16)geoplotlib.set_bbox(com.boundingBoxDefault)geoplotlib.show()hist()
得到的效果如下:
图中,分成若干个矩形区域,然后统计每个矩形区域中的配电房的个数,配电房密度越高,颜色越亮,配电房密度越低,颜色越暗。从中可以看到配电房的分布也是很不均匀的。
粗略的计算了一下,按照业主的要求,1个变电站可以接25*4=100个节点,那14座变电站就可以接1400个节点,对当前的规划来说,是够用的,那下面开始考虑,该怎么能实现业主的要求能。
算法分析
首先想到的就是K-means算法,因为这跟聚类思想很像,假设我如果每个变电站出4个环,然后每个环接不超过25个点的话,通过不断尝试每个分组的最小类,来计算所有的分组。因为,如果要考虑每个环接不超过25个点这个条件的话,算法的复杂度会增大,所以,这里先直接调用经典K-means算法。
K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。算法采用误差平方和准则函数作为聚类准则函数。
代码比上面的稍长一些。
from geoplotlib.colors import create_set_cmap
import pyglet
from sklearn.cluster import KMeans
import geoplotlib
from geoplotlib.layers import BaseLayer
from geoplotlib.core import BatchPainter
from geoplotlib.utils import BoundingBox
import numpy as np
import comclass KMeansLayer(BaseLayer):def __init__(self, data):self.data = dataself.k = 56def invalidate(self, proj):self.painter = BatchPainter()x, y = proj.lonlat_to_screen(self.data['lon'], self.data['lat'])k_means = KMeans(n_clusters=self.k)k_means.fit(np.vstack([x,y]).T)labels = k_means.labels_self.cmap = create_set_cmap(set(labels), 'hsv')for l in set(labels):self.painter.set_color(self.cmap[l])self.painter.convexhull(x[labels == l], y[labels == l])self.painter.points(x[labels == l], y[labels == l], 2)def draw(self, proj, mouse_x, mouse_y, ui_manager):ui_manager.info('Use left and right to increase/decrease the number of clusters. k = %d' % self.k)self.painter.batch_draw()def on_key_release(self, key, modifiers):if key == pyglet.window.key.LEFT:self.k = max(2,self.k - 1)return Trueelif key == pyglet.window.key.RIGHT:self.k = self.k + 1return Truereturn Falsedata = geoplotlib.utils.read_csv('data/lh_powerhouses.csv')
geoplotlib.add_layer(KMeansLayer(data))
geoplotlib.set_smoothing(True)
geoplotlib.set_bbox(com.boundingBoxDefault)
geoplotlib.show()
得到的效果如下:
我细数了一下,最多的一个环里面有30+个,所以直接用肯定是不行的。不过暂时看着还像那么回事儿的,把得到的数据,先稍微处理一下,就先这样向老板交差吧,后面再细细考虑算法的问题。( ̄▽ ̄)”
我用Python做设计(一)相关推荐
- 自学python什么时候能够兼职-我,做设计两年,工资4000,兼职1.5w...
"什么?!设计还要学这玩意 ?" 上周,约一朋友出去吃饭,没想到她居然在学Python. 然而,这还不是最令我感到惊讶的-- 我这朋友是做建筑设计的,一毕业就进了设计院,闲的时候每 ...
- python 科学计算设计_用Python做科学计算 高清晰PDF
用Python做科学计算一书介绍如何用Python开发科学计算的应用程序,除了介绍数值计算之外,我们还将着重介绍如何制作交互式的2D.3D图像:如何设计精巧的程序界面:如何和C语言所编写的高速计算程序 ...
- python开发cs程序_CSE209代做、代写Computer Graphics、代做CS/python编程设计代写Python程序|代做Processing...
CSE209代做.代写Computer Graphics.代做CS/python编程设计代写Python程序|代做ProcessingCSE209 Computer Graphics~1~CSE209 ...
- python程序设计作业_CS602留学生作业代做、代写Programming课程作业、代做Python语言作业、Python编程设计作业调试...
CS602留学生作业代做.代写Programming课程作业.代做Python语言作业.Python编程设计作业调试 日期:2019-12-06 10:50 CS602 - Data-Driven D ...
- 代写python期末作业价格_代写program留学生作业、代做Python程序语言作业、代写Python课程设计作业...
代写program留学生作业.代做Python程序语言作业.代写Python课程设计作业 日期:2019-11-29 12:55 Completing the Final Project - Pyth ...
- python255多少钱_CS255留学生作业代做、代写Python语言作业、Timetabling作业代做、Python编程设计作业调试...
CS255留学生作业代做.代写Python语言作业.Timetabling作业代做.Python编程设计作业调试 日期:2019-11-11 11:08 CS255 Artificial Intell ...
- 用python写搜索引擎_用python做一个搜索引擎(Pylucene)的实例代码
1.什么是搜索引擎? 搜索引擎是"对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分".如图1是搜索引擎的一般结构,信息搜集模块从网络采集信 ...
- len(x) 击败 x.len(),从内置函数看 Python 的设计思想
内置函数是 Python 的一大特色,用极简的语法实现很多常用的操作. 它们预先定义在内置命名空间中,开箱即用,所见即所得.Python 被公认是一种新手友好型的语言,这种说法能够成立,内置函数在其中 ...
- python的设计哲学_Python 的设计哲学
The Zen of Python, by Tim Peters Python 的设计哲学,作者:Tim Peters Beautiful is better than ugly. 优雅胜于丑陋. E ...
最新文章
- java 获取mp4 缩略图_java获取视频缩略图
- c++ 动态分配数组_C/C++编程笔记:「C语言指针」民间解读版本
- 向oracle表空间添加一个数据文件命令
- 判断一个字符串大写小写,和数字出现的次数
- 山东大学linux实验报告,山东大学操作系统实验四
- [erlang] mnesia
- Inno Setup 插件 CallbackCtrl V1.1 (回调函数插件)
- 【免费下载】2021年4月热门报告盘点下载
- 二维数组按指定的键值排序
- SNS网站获取导入MSN联系人的方法
- 上传文件_Spring Boot文件上传
- IB选课指南及热门专业选课建议
- git commit 参数详解 --amend
- 文件加密的c语言程序课程设计,C语言文件加密课程设计.pdf
- canvas 画图 android,Android 中的Canvas画图
- 评论抓取:Python爬取AppStore上的评论内容及星级,突破500条限制
- 我所知道查找算法之斐波拉契(黄金分割法)查找
- 如何写好软件项目的工作计划(一)
- maven集成docker插件进行打包镜像并推送私服
- SQuirrel 一直连接不上问题