跳转至

快速开始示例

快速开始示例用于确认 OptAgent 的三件事可以串起来:用 ModelBuilder 定义变量和约束、冻结为 program、交给 Orchestrator 求解。

https://github.com/Dongbox/optagent-examples

目录结构

optagent-examples/
  examples/
    linear/
      knapsack_mathopt.py
    scheduling/
      job_shop_small.py
    blackbox/
      tsp_blackbox_small.py
    hybrid/
      hybrid_production_planning_small.py
  requirements-dev.txt

quickstart 没有单独目录,建议按从简单到复杂的顺序运行上面四个入口。

最小代码形状

下面是线性背包示例的核心结构,完整文件见公开仓库的 examples/linear/knapsack_mathopt.py

from optagent import ModelBuilder, Orchestrator

builder = ModelBuilder(metadata={"case": "quickstart_knapsack"})
picks = [builder.int_var(default=0, lb=0, ub=1, name=f"pick_{idx}") for idx in range(3)]

weights = [2, 3, 4]
values = [3, 4, 8]
builder.constraint(builder.sum(*(pick * weight for pick, weight in zip(picks, weights))) <= 5)
builder.maximize(builder.sum(*(pick * value for pick, value in zip(picks, values))))

result = Orchestrator().run(builder.freeze())
print(result.final_solution.status)

运行

git clone https://github.com/Dongbox/optagent-examples.git
cd optagent-examples
python -m pip install -r requirements-dev.txt
PYTHONPATH=. python examples/linear/knapsack_mathopt.py

运行前需要先按团队或发行渠道提供的方式安装 OptAgent 本体。需要精确后端时,再安装对应可选依赖,例如 ortoolshighspy

如果需要先理解 API 形状,请阅读 使用指南建模接口