Python scipy.optimize.linprog:如果我们选择与可行集正交的系数,会发生什么?

Python scipy.optimize.linprog:如果我们选择与可行集正交的系数,会发生什么?,python,optimization,scipy,linear-programming,Python,Optimization,Scipy,Linear Programming,我用它来解一个线性规划。特别是,我有约束x_1+。。。x_n=1,即我的可行集是n维单纯形的子集。现在,我在问自己,当我选择最小化的系数c为c=(1,…,1)时会发生什么。因此,最小化是不相关的,因为=1总是 在这种情况下,scipy.optimize.linprog会给我什么结果 我对它进行了测试,但我无法判断可行集合中的哪个元素是由程序计算的。我猜它是多面体的一个随机顶点,由其他不等式约束产生。有人能证实这一点吗?我想答案是实现定义的。代码保证您得到最佳解决方案,但不是任何特定的解决方案。默

我用它来解一个线性规划。特别是,我有约束x_1+。。。x_n=1,即我的可行集是n维单纯形的子集。现在,我在问自己,当我选择最小化的系数c为c=(1,…,1)时会发生什么。因此,最小化是不相关的,因为=1总是

在这种情况下,scipy.optimize.linprog会给我什么结果


我对它进行了测试,但我无法判断可行集合中的哪个元素是由程序计算的。我猜它是多面体的一个随机顶点,由其他不等式约束产生。有人能证实这一点吗?

我想答案是
实现定义的
。代码保证您得到最佳解决方案,但不是任何特定的解决方案。默认方法是文档中所述的内点算法。内点方法通常甚至不返回顶点,因此它可以是任何最佳点。我尝试了它,得到了
[1/n,…,1/n]
,用于解决
n
变量的问题,但即使在
scipy
版本之间,这也可能有很大差异

如果您选择单纯形类型的算法(添加
method=“revisited simplex”
),您将得到一个基本解,对应于多面体的顶点,在您的例子中对应于单位向量。哪一个又是实现定义的


然而,大多数代码都应该是确定性的,因此对于相同的输入,您应该始终得到相同的解决方案…

“我不知道可行集合中的哪个元素是由程序计算的”您不能只打印最佳解决方案吗?因为任何可行的解决方案都是最优的,所以这就是答案。@ErwinKalvelagen我可以打印出来。但我不知道优化使用了哪个“方向”,也就是说,我不知道结果对应于哪个c(因为它不可能真的是c=(1,…,1),因为最小化是不相关的)。