【发布时间】:2017-12-10 19:06:47
【问题描述】:
我正在尝试使用loco 做一个基本的优化示例。
我有一个成本向量,其索引对应于多个插槽的整数值,并且希望最小化插槽的不同子集的成本总和。
请在下面查看我的尝试,该尝试失败,因为选择的插槽与成本之间没有“联系”。
(def costs [10 10 20 20 30 30 40 40 10 10])
(let [slot-vars (for [i (range 5)] ($in [:slot i] 1 10))
cost-vars (for [i (range 10)] ($in [:cost i] 10 40))]
(solution
(concat
slot-vars
cost-vars
[($distinct (for [i (range 5)] [:slot i]))]
(for [i (range 5)]
($= [:cost i] (get costs i))))
:minimize (apply $+ (for [i (range 5)] [:slot i]))))
【问题讨论】:
-
这听起来像是一个最小化背包问题。你可以做一个最大化,但不能做一个最小化。可能必须直接与 choco 库打交道才能做到这一点。
标签: optimization clojure constraint-programming