用Python进行线性编程( 二 )


也许与直觉相反的是,增加更多的约束条件有助于求解器更快地找到最优解 。为什么会出现这种情况呢?把求解器想象成一棵树:约束条件帮助它修剪分支,减少搜索空间 。
在我们的案例中,我们可以用来生产单位的资源数量有限 。换句话说,我们不能花费超过我们所拥有的资源:例如,用于招募单位的食物不能高于1200 。木材(800)和黄金(600)的情况也是如此 。
根据我们的表格,单位有以下成本 。

  • 1个剑客 = 60 + 20 。
  • 1弓箭手 = 80 + 10 + 40 。
  • 1个骑士=140 + 100 。
我们可以为每个资源写一个约束条件,如下所示 。
用Python进行线性编程

文章插图
 
在OR-Tools中,我们只需用solver.Add()将约束添加到我们的求解器实例中 。
# Add constraints for each resourcesolver.Add(swordsmen*60 + bowmen*80 + horsemen*140 <= 1200) # Foodsolver.Add(swordsmen*20 + bowmen*10 <= 800) # Woodsolver.Add(bowmen*40 + horsemen*100 <= 600) # GoldIV.目标
现在我们有了我们的变量和约束条件,我们要定义我们的目标(或目标函数) 。
在线性编程中,这个函数必须是线性的(就像约束条件一样),所以形式为


推荐阅读