实施内部点

时间:2010-07-29 08:39:46

标签: algorithm

除了博伊德的凸面编程书,

最佳资源是什么:

分析+内点算法的实际实现?

2 个答案:

答案 0 :(得分:2)

如果你有博伊德的书,你就知道CVXOPT。看看里面。如果您对实现细节感兴趣,那么查看实现是非常宝贵的。与大多数复杂的数值算法一样,使用以前编写的代码比编写自己的代码要好得多,但您可能知道这一点。在线编程,SOCP,二次编程,凸面编程等在线提供了许多其他内部点实现。我还使用了OOQP,并对内部进行了一些研究。这似乎很简单。

我也很喜欢Numerical Optimization的第一版。我对下半年的预测校正方法有一个很好的,相当实用的概述。第二版无疑具有相似的品质。

答案 1 :(得分:0)

您可以通过两种方式实现它:

如果你只有一个点,你将获得多边形的面积,然后检查n个三角形的区域与点中的垂直和两个连续点中的另外两个的面积之和是否相等多边形的面积。如果这是真的,那么这一点就在里面,否则就在外面。

如果你有很多点(让我们说M点),你必须找到它是否在里面,你会在多边形内找到一个点,并将多边形分成n个三角形,在该点有一个垂直,另一个多边形中的两个连续点(形成边缘)。您将有n行,在前面选择的点中有一个垂直,在多边形的每个点上都有一个点。你将按顺时针方向对它们进行排序。然后,你将在选择的点中有一条带有垂直的M行,而另一个在M点中。你将它们排序为前N个。然后,你可以在o(N + M)中找到M中的每个点,N中最近的左右线(假设这些线是CenterAx和CenterAy。 ,你必须找到它在三角形CenterAxAy中的点。你可以在o(1)中检查它是否是三角形中的一个CenterAxAy等于面积(CenterAxP)+面积(CenterAyP)+面积(AxAyP) )。

我希望你能理解我在这里所写的内容。