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

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

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

hdu1689(线段树成段更新)

两种操作:1、set区间[a,b]上数字为v;2、查询[ 1 , n ]上的sum 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdl

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo