任意线段集生成多边形_算法: 平面图自动生成(转载)

2023-10-08 14:40

本文主要是介绍任意线段集生成多边形_算法: 平面图自动生成(转载),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“ikuku建筑网”可以订阅哦!

8681457abaf699984a10eb03a545882f.png

作者: Joel Simon翻译: 马海东

编者按: 一个关于平面生成的算法,期望可以启发对CAAD感兴趣的同学 e399ec19177891a6d5bbf6ccb843344e.png

平面图生成(EFP)是一个实验性的项目,研究平面的生成及优化的可能性。初始条件为各个房间关系及人流分布, 通过一个遗传算法来优化生成平面图,其优化的限制因素为步行时间和走廊的长度等。EFP项目只是从设定的优化条件来进行平面布局,而不去考虑传统的布局要求及可建性等因素。EFP的目标是如何通过算法将显性、隐性的限制条件结合起来,生成高复杂度的平面图。EFP的平面图是从它的遗传编码中“生长”出来,使用的算法是图像收缩方法生成布局及蚁群算法生长走廊。

其最终的结果在外观上有生物学的特性,其特色看起来耐人寻味的, 从实践的角度来看是疯狂的非理性的。本项目是一次有趣的学习经历,我期望在其他项目中可以继续使用本项目中的方法。

原始的平面布局

7535825bef060e6ee17f8cfdad2a830c.png

缅因州某个地方的小学平面图

‘平面优化’

88253b46eb5987bd56361e343ac4eade.png

左:优化了班级之间的人流量和建材的使用量。右边:加入了消防通道长度因素。

采光

823b12802ac56faf4f715c5df992c812.png

采光功能要求,其中教室的优先级高于储藏室。这导致了许多内部庭院

项目背景

空间设计的一个核心挑战是空间形式的优化, 其中包括位置关系、形状和大小。在建筑设计中,房间的布局处于设计过程的概念阶段,它受到多种相互关联及竞争的客观和主观因素的影响 。

随着计算机技术的发展, 计算工具可以用来模拟交通、声学和热保护等,使得对形式的评估更加客观量化。与这些计算能力相融合的是制造方面的进步,包括数控铣削、现场3D打印、自组装等等,这使得新的、更复杂的形式成为可能,这些新的形式可以赋予设计师探索和优化越来越复杂的空间处理能力。

相关算法

图形收缩和蚁群路径这两种模拟方法被用作平面的”成长”过程。图形收缩是一系列算法,旨在创建视觉上吸引人的图形布局。蚁群算法是一种概率论方法,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。这种算法具有分布计算、信息正反馈和启发式搜索的特征,本质上是进化算法中的一种启发式全局优化算法。

大致的原理如下: 平面图基因组是一个有加权因子、相互连接又不定向的图。每一个想要的房间都用一个节点基因来表示,这个节点基因包含了房间的大小等信息。t同时还有连接基因, 连接基因指定了两个要跨越的节点基因以及一个随机初始化的权重;这两种基因以随机的方式添加,直到图被连接。相邻性要求创建一个具有最大边缘权重的子图。例如,食堂必须与厨房相邻。

从基因信息映射成平面信息的绘制

从基因信息映射成平面信息的绘制过程分四个部分完成。首先,图中的每个节点都设置到一个中间位置(图1a)。第二,物理模拟将中间位置映射到最终坐标,该坐标是平面图中该房间的中心(图1b)。第三,将房间中心转换为代表墙壁的多边形网格(图1c,1d)。第四,沿着网格的边缘创建走廊,然后使用受蚂蚁群行为启发的算法进行修剪和最终确定,并转换为最终的几何体(图1e,1f)。

Mapping Overview

59b6e0b5e2420c1692243e931ca82e17.png

图1:完整的映射过程。a)初始物理模拟。b)物理模拟的最终结果。c)轮廓图(红色)扩张,以产生边界Voronoi种子(紫色圆圈)。d)Voronoi镶嵌创建几何网格。e)添加了内部边缘的平面图,走廊算法的结果用黄色绘制。f)走廊被合并成最终的几何体,内部边缘用于门的放置。

Hallways

a222dcc1d727ccca51a7dd5a1e813b0e.png

图2:走廊生成过程。a)具有三个房间的平面图。b)内部节点和边缘的创建,显示为空心圆和虚线。c) OHP的初步结果。选定的边缘用红色画出。d)通过将走廊顶点移动到其投影到邻居形成的线段上来平滑走廊。e)通过使用半径与旅行负荷成正比的圆的外切线来创建走廊几何体。f)最终的走廊几何体,门从内部边缘放置,并带有旅行负荷。

后续发展

学校的一个特点就是学生的课表和平面布局的相互关联与演变。这样可以对整个学校一天的体验进行统一的优化处理。目前遗传算法已经可以应用于优化排课问题。

此外EFP的衡量标准可以扩展到包括地形图、太阳路径、现有树木和其他环境输入,使建筑物能够高度适应其环境。物理模拟也可以强制进行一定的边界形状约束。

EFP方法也可以用于其他功能的布置,如办公室布局或医院。医院可以尽量减少关键路线,如手术室和病理实验室之间或护士室和病人之间。办公室的规划可以旨在最大限度地减少声学问题,这是开放式办公室的一个常见问题,或者最大限度地减少步行路径,同时也最大限度地增加与其他部门员工共享的步行路径的比例。

结论

这是我的第一个大型生成式设计项目,我认为其底层想法有很大的潜力。目前各个步骤所需的工作可能过于复杂。由于不遵守任何建筑或设计的规律,也使得结果很难评估。

我希望它能引起读者对未来生成性和设计的一些想法。

References

1、Michalek, J.J., Choudhary, R., Papalambros, P.Y.: Architectural layout design optimization. Eng. Optimization (2002)
2、Merrell, Paul, Eric Schkufza, and Vladlen Koltun. “Computer generated residential building layouts.” ACM Transactions on Graphics (TOG). Vol. 29. No. 6. ACM, 2010.
3、Liu, Han, et al. “Constraint aware interior layout exploration for pre-cast concrete based buildings.” The Visual Computer (2013)
4、Nassar, Khaled. “New advances in the automated architectural space plan layout problem.” Proceedings Computing in Civil and Building Engineering (2010).
5、O’Reilly, UnaMay, and Martin Hemberg. “Integrating generative growth and evolutionary computation for form exploration.” Genetic Programming and Evolvable Machines (2007)
6、Bentley, P. J. & Kumar, S. (1999). Three Ways to Grow Designs: A Comparison of Embryogenies for an Evolutionary Design Problem. Genetic & Evolutionary Computation Conference.
7、Hornby, Gregory S., and Jordan B. Pollack. “The advantages of generative grammatical encodings for physical design.” Evolutionary Computation, 2001. Proceedings of the 2001 Congress on. Vol. 1. IEEE, 2001.
8、Feng, Tian, et al. “Crowddriven midscale layout design.” ACM Transactions on Graphics 35.4 (2016).
9、Stanley, Kenneth O., and Risto Miikkulainen. “Evolving Neural Networks through Augmenting Topologies.” Evolutionary Computation (2002).
10、Weisstein, Eric W. “Graph Embedding.” From MathWorld Wolfram Web Resource. http://mathworld.wolfram.com/GraphEmbedding.html
11、Luo, Bin, Richard C. Wilson, and Edwin R. Hancock. “Spectral Embedding of Graphs.” Pattern Recognition 36.10 (2003): 2213230. Print.
12、Fruchterman, Thomas M. J., and Edward M. Reingold. “Graph Drawing by Forcedirected Placement.” Software: Practice and Experience 21.11 (1991): 1129164. Print.

● 项目代码: https://github.com/joel-simon/evo_floorplans
● 原文连接: https://www.joelsimon.net/evo_floorplans.html

相关文章

建筑师为什么要会python编程?
Caad4Rhino:建筑绘图工具插件
Rhino及Bob McNeel的故事(转载)
计算机曲线spline简史(转载)
漫谈算法设计(computational design)与脚本语言(grasshopper, python)

建筑师编程课推广

ikuku精选课 Python4Rhino建筑师编程课第5期 2020.9.26开始线上直播!讲师:马海东

25f9f7761c4ec464a16f5a744dd34df9.png

1 关于ikuku
ikuku的使命是关注华人社区内最有影响力的建筑实践、最先锋的建筑探索、最热点的建筑评论,传递给建筑师、设计师、工程师、业主最有价值最详细的内容。
2如何向ikuku投稿
1> 在www.ikuku.cn上注册用户中心账号;
2> 上传作品的相关资料;
3> 在用户中心发布作品,并投递给ikuku。
《如何上传作品并投递给ikuku?》具体内容详见:
http://www.ikuku.cn/article/yonghushangchuanshouce
3 如何找到ikuku
微信服务号:ikuku.cn在库言库
微信订阅号:ikuku.cn订阅号
微博:@ikuku建筑网
QQ建筑师交流群:121154041
官网:www.ikuku.cn

↓↓↓ 

这篇关于任意线段集生成多边形_算法: 平面图自动生成(转载)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/165986

相关文章

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

Django HTTPResponse响应体中返回openpyxl生成的文件过程

《DjangoHTTPResponse响应体中返回openpyxl生成的文件过程》Django返回文件流时需通过Content-Disposition头指定编码后的文件名,使用openpyxl的sa... 目录Django返回文件流时使用指定文件名Django HTTPResponse响应体中返回openp

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机