目标函数值的零乘数并不能提供最可行的解决方案

时间:2016-01-01 11:55:17

标签: scipy linear-algebra linear-programming pulp

using Pulp来解决一个线性程序(也用scipy获得相同的结果)。我的线性程序表达式有问题,或者我不知道有关单纯形算法如何工作的一些棘手细节。

以下是最小化的目标函数,请注意#app/models/listing.rb class Listing < ActiveRecord::Base enum status: [:draft, :published] #-> defaults to draft belongs_to :user has_many :photos #### validates :name, :user, :photos, :etc, :etc, presence: true, unless: "draft?" #### def publish! self.update status: :published end end 的乘数为x2,因此我不希望0x1除了x2之外还有任何值,因为0没有最大约束,x3能够为最小化提供更多值:

Objective function

线性方程组:

System of linear equations

作为一种解决方案,即使其目标函数的乘数为-1 * x3,我也会得到x2 = 20

Linear program result

如果在目标函数中我设置0,那么它可以正常工作。

1 个答案:

答案 0 :(得分:2)

您发布的解决方案给出了目标= -380。检查x=[20,0,0,20,0,20,20,0],目标函数也是-380,这意味着它也是最优的,因此,你有无限多的解决方案(很容易证明这两点的任何凸组合)是最佳的,请参阅任何线性规划书籍。问题是当PuLP求解器遇到一个最佳极值点时,它就会停止。如果您有兴趣获得所有最佳极值点,我建议您使用Cplex(它不是免费的,但您可能有资格参加IBM学术计划)。此外,您可以在PuLP求解器中为Dual Simlex设置解决方法,使其朝不同方向前进,并且您有可能获得另一个极端点。