可以用Minizinc表达SimCity(BuildIt)经济的子集吗?

时间:2018-12-20 11:35:35

标签: solver minizinc

我想写一个求解器来安排SimCity buildit中的生产。因为我是Minizinc的初学者(通常是求解器- blush ),所以我不确定我想尝试的东西是否完全有意义。

  • 在SimCity中,首先需要生产资源(铁,木材,种子,塑料等),然后才能使用它们来生产产品(锤子,钉子,木板)。
  • 资源和产品可以组合在一起以创建其他产品(例如,椅子可能需要木头,锤子和钉子)。
  • 资源可以并行生产(每个工厂都有5个插槽,可以生产任何种类的资源,但没有排队)。
  • 在与主题相关的商店(例如家具,工具等)中顺序创建产品(长度有限-生产队列)。
  • 资源和产品的存储是共享和有限的。

我想了解的是,是否有可能在Minizinc中创建一个计划者,以便为要生产的物品清单制定最快的时间表,或者我是否最好立即开始进行显式编码?

1 个答案:

答案 0 :(得分:2)

使用MiniZinc可以解决这类问题,尽管我还没有听说有人可以解决此特定问题。您的问题似乎与 jobshop问题密切相关。此问题可能提供了一个良好的基准,并且可以使用多种模型来解决此问题。您可以在MiniZinc基准测试资料库中找到许多示例模型(质量不同):https://github.com/MiniZinc/minizinc-benchmarks

正如Patrick Trentin指出的那样,您必须牢记使用MiniZinc解决的各种问题的复杂性。通常,解决这些问题的时间可能成倍增长,甚至更糟。为了找到解决难题的方法,已经考虑了建模问题的方式以及求解器使用的技术(以及要使用的求解器)来解决问题。如果您只是开始使用MiniZinc,我建议您参加MiniZinc Coursera课程,这将使您立即开始使用:https://www.coursera.org/learn/basic-modeling