有, 我是纸浆新手。我从网上的一些例子中学到了知识。这些例子非常有用,现在我可以通过mtself编写简单的模型。但我仍然觉得很难建立复杂的模型,特别是稀疏矩阵模型。
请您使用稀疏矩阵和conplex约束来发布一些复杂的例子。我想学习如何仅创建必要的变量,而不是简单的变量,例如,y = LpVariable.dicts(" y",(Factorys,Customers),0,1,LpBinary)。
我有另一个问题:如果我只使用y = LpVariable.dicts(" y",(Factorys,Customers),0,1,LpBinary)来定义变量会发生什么,其中大多数变量在模型目标函数和约束中是无用的,我添加了一些约束来明确地将这样无用的变量设置为0?纸浆算法是否能够首先识别这样的无用变量并首先将其删除,然后运行整数规划算法(例如B& B或B& C)以解决尺寸减小的问题?如果这是真的,它看起来"将无用变量设置为0"方法根本不会降低解决方案的速度。我是对的吗?
答案 0 :(得分:0)
这可能会有所帮助
特别是首先生成一组稀疏的工厂和客户。
factories_customers = [(f,c) for f in factories for c in customers
if <insert your condition here>]
然后使用
y = LpVariable.dicts("y", factories_customers ,0,1,LpBinary)
Pulp不会删除“无用的”变量和约束,因此模型构建时间会很长。
然而,解决方案算法(CBC默认包含将解除变量的预解算法)。