<a href="https://archive.ph/NCZhi" rel="nofollow">https://archive.ph/NCZhi</a>
返回首页
最新
这个项目的起始点是我决定编写一个自动布线器,比起手动为一个8000多个网络的背板布线要容易得多。<p>这是一个KiCad插件,包含几种不同的算法,其中最酷的是一种“曼哈顿布线网格”自动布线器,它沿着正交轨迹进行布线。基本思路是借用FPGA布线的算法并将其应用于PCB。我正在使用CuPy来加速布线;与GPU版本相比,CPU版本的速度至少慢10倍。<p>目前这个项目处于非常早期的开发阶段,但它在技术上是可行的。虽然从任何标准来看都不算优秀,但毕竟它是一个自动布线器。<p>我有一篇关于其制作过程和原因的文章:<a href="https://bbenchoff.github.io/pages/OrthoRoute.html" rel="nofollow">https://bbenchoff.github.io/pages/OrthoRoute.html</a><p>还有一段视频展示它在2分钟多一点的时间内为一个512网络的背板布线:<a href="https://www.youtube.com/watch?v=KXxxNQPTagA" rel="nofollow">https://www.youtube.com/watch?v=KXxxNQPTagA</a><p>这非常酷,也是几个月前发布的KiCad IPC API的首次良好应用之一。如果这听起来有趣且有用,欢迎提出PR和问题。
应用确实非常广泛。可以将 Gröbner 基础视为解决多元多项式系统的“通用坐标系统”。以下是一些具体的例子:
**机器人技术与运动学:**
计算机器人手臂在避免碰撞和奇异点的情况下,达到目标位置所需的精确关节角度。
**结构工程:**
在具有多个支撑点和材料约束的桥梁和建筑中,确定最佳的荷载分布。
**游戏开发:**
解决角色动画中的逆运动学问题,或在多重资源约束下优化非玩家角色(NPC)的决策。
**放射治疗:**
精确优化放射线束的角度和强度,以最大化肿瘤损伤,同时最小化健康组织的暴露。
**金融建模:**
计算多产品市场中相互依赖的需求函数下的均衡价格。
**核心见解:**
每个物理对象或抽象系统都可以用方程表示。每个方程在多维空间中定义了一个“形状”。Gröbner 基础使我们能够:
- 测量这些形状
- 验证新约束是否符合现有形状
- 确定解的可行性
- 找到最佳配置
**让代数变得易于接触:**
RomiMath 的突破不仅在于数学本身,更在于将这种计算能力提供给任何浏览器,打破了以前被锁定在昂贵的专业软件(如 Mathematica 或 Maple)中的壁垒。
这将抽象代数转变为工程师、研究人员和开发者的实用工具,他们需要解决复杂的优化问题,却没有数学博士学位。现在,您可以在几秒钟内直接在浏览器中解决七个变量的系统,这使得这些应用能够接触到更广泛的受众。
对于那些有兴趣进行实验的人,RomiMath 的实时演示(https://romimath.pages.dev)展示了这些理论概念如何转化为实际计算——从帖子中的四维球体示例到潜在的现实世界优化问题。
我正在为我的个人项目建立一个网站,网址是 xn--tkc.net。我在想,尽管这个 Punycode 域名看起来很不错,但使用它是否是个好主意?它的快捷方式是 3ronds.net。
大家都在讨论使用哪款GPU,但却没有人谈论今天在哪里能以最低价格购买它。<p>我开发了一个工具,可以比较各大云服务提供商的最新GPU价格,并提供规格、价格和云服务提供商的筛选功能。<p>请访问 www.gpu-radar.com,了解GPU市场的全貌。
Kedr是一种用于游戏的编程语言,主要源自F#和Rust。它的设计思路是创建一个具有自动引用计数的游戏,然后逐步将影响较大的类型切换为手动内存管理。以下是我的一些发现。
我们习惯于在每个文件的开头进行导入,但将所有导入集中在整个crate的一个地方可能更好。这样,代码可以在文件之间自由移动,同时也鼓励使用较小的文件。打开一个文件并立即看到有用的代码也让人耳目一新。
当大括号始终表示闭包时,这非常有益。这为基于缩进的代码结构提供了有力的支持。
对象树的创建在没有括号和逗号的情况下调用函数,看起来更自然。
顺序代码的强制执行,即元素只能依赖于上面定义的内容,开启了新的可能性。其中之一是将类型构造函数拆分到多个文件中,这些文件可能位于不同的crate中。一个例子是如何利用这一点:一个crate包含UI控件的定义和布局代码,而其他crate则通过数据和计算扩展控件类型,这些是其渲染所必需的,从而导致多个可切换的后端,如Vulkan或Skia。将这些数据维护在外部会使代码变得复杂。
有一种趋势是逐渐远离类型层次结构。我认为更好的做法是降低其复杂性并重新评估。复杂性的一个主要来源是能够重写现有方法的实现,因为代码被添加到一个类型中,而没有保证它会一直存在。这样的保证将使得保留层次结构变得更有价值。