Skip to content

复杂示例 1:服务放置 — 总览 ​

English

1. 概述 ​

本示例用路由(Route)和带宽(Bandwidth)两个有界上下文表达服务放置与网络带宽分配。总览介绍协作关系;子页给出 Kotlin 示例实际注册的变量、中间值和约束。

2. 上下文与依赖 ​

上下文职责依赖
Route图、客户端、服务、分配变量、分配约束和服务成本目标—
Bandwidth边/服务/节点带宽表达式和有效带宽约束Route

3. 概念、集合与谓词 ​

N 是节点集合,E 是有向边集合,S 是服务集合。Nnormal 与 Nclient 分别表示普通节点和客户端节点;Enormal 表示源节点为普通节点的边,与子页采用相同记号。

4. 变量与中间值 ​

xn,s 是二元服务分配变量,客户端行固定为零;ye,s 是受边界限制的非负整数带宽。服务分配计数 As、节点分配计数 An、边总带宽 Be 和节点入带宽 In 均为这些变量的线性中间值,客户需求则是输入参数。

5. 断言、约束与目标 ​

路由上下文限制每个普通节点至多承载一个服务、每个服务至多放置一次,并注册服务成本目标。带宽上下文注册边带宽、客户需求、服务容量约束及带宽成本目标。未被管线生成器返回的 TransferNodeBandwidthConstraint 不属于已注册模型;净流出量定义也不能代替流守恒约束。

6. 算法与生命周期 ​

应用初始化 Route,将其传入 Bandwidth,注册两个聚合根,构造元模型,使用 SCIP 求解,并分析分配和带宽结果。当前应用没有额外引入流守恒等式。

7. 注册 → 构造 → 求解 → 分析 ​

init 创建上下文和数据;register 添加变量和 Pipeline;construct 构造求解模型;solve 调用求解器;analyze 将结果绑定回领域对象。

8. 源码入口 ​

9. Kotlin/Rust 对照与设计决策 ​

Kotlin 与 Rust 的复杂示例均具有路由和带宽上下文。下方链接指向各自的框架示例,而非同编号的简单示例。子页以 Kotlin 注册结果为数学模型基准,不因问题名称而隐式增加约束。

10. 上下文模型页面 ​

11. 变更记录 ​

版本变更原因
1.1统一中英文总览、数学记号和源码入口与所属上下文模型保持一致