【发布时间】:2018-07-30 16:22:44
【问题描述】:
目标:计算两个凸多面体的交集。
我正在使用scipy.spatial.HalfspaceIntersection 来执行此操作。下图显示了生成的交集:
我的问题:确定一个初始可行点。
您看,scipy.spatial.HalfspaceIntersection 的当前 Python 实现需要将 interior_point 作为参数传递。
interior_point : ndarray of floats, shape (ndim,)
清楚地指向由半空间定义的区域内。也称为可行点,可以通过线性规划得到。
现在,我正在手动提供可行点,因为我只是在起草一个原型来试验HalfspaceIntersection。
但是现在我已经到了不想手动指定它的地步。
SciPy 的优化模块scipy.optimize.linprog 实现了两个通用线性规划 (LP) 求解器:simplex 和 interior-point .但是,它们似乎需要成本函数。 [1]
由于我想花费尽可能少的处理时间来计算这个可行点,我想知道如何在没有成本函数的情况下运行任何这些 LP 方法,即只运行到解决方案已达到可行状态。
问题:
scipy.optimize.linprog是计算这个可行内点的正确方法吗?-
如果是,我如何使用 simplex 或 interior-point 没有成本函数?
为什么
scipy.spatial.HalfspaceIntersection要求首先将interior point作为参数传递?据我所知,半空间的交集是消除给定一组不等式的冗余不等式。为什么这需要一个可行点?
【问题讨论】:
-
零是成本函数
-
您似乎对vertex enumeration problem 感兴趣。看看Some Algorithmic Problems in Polytope Theory 的第一页。如果您需要一个精确的顶点,请考虑使用有理数(而不是
floats)。看看this CGAL package。
标签: python numpy scipy computational-geometry linear-programming