【发布时间】:2012-10-25 08:50:39
【问题描述】:
我有 N 行由 y 截距和角度 q 定义。约束是所有 N 条线必须在一个点相交。我可以想出最终得到约束的方程式如下:
Y = tan(q(1))X + y(1)
Y = tan(q(2))X + y(2)
...
如果 N = 3 或 4,我可以手动获得约束,但如果 N 大于 4,我只能获得一个约束。如果 N = 3 或 4,那么当我求解上述 X 方程时,我得到 2 个方程,然后可以将它们设置为彼此相等。如果 N > 4,我得到超过 2 个等于 X 的方程,我不知道如何将它们压缩为一个约束。如果我不能将它们压缩为一个约束并且能够使用动态创建的多个约束(取决于传入的 N)来解决优化问题,那也很好。
为了更好地理解我在做什么,我将展示如何获得 N = 3 的约束。我从以下三个等式开始:
Y = tan(q(1))X + y(1)
Y = tan(q(2))X + y(2)
Y = tan(q(3))X + y(3)
然后我将它们设置为彼此相等并得到这些方程:
tan(q(1))X + y(1) = tan(q(2))X + y(2)
tan(q(2))X + y(2) = tan(q(3))X + y(3)
然后我求解 X 并得到这个约束:
(y(2) - y(1)) / (tan(q(1)) - tan(q(2))) = (y(3) - y(2)) / (tan(q(2)) - tan(q(3)))
注意我有 2 个方程来求解 X。当 N > 4 时,我最终得到的结果超过 2。如果我能够动态创建约束,然后在 MATLAB 中调用一个优化函数来处理多个限制,但到目前为止还没有找到。
【问题讨论】:
-
你的最终目标是什么?您只是想找到线条,还是线条代表问题中需要优化的其他内容?
-
线条代表其他东西。大局是我知道一个角度是 q 的估计值。因为它是一个估计值,所以没有一条线相交。我需要找到角度 q,以便所有线相交,同时最小化估计角度和优化角度之间的距离。
-
但您可以随意更改
y-intercepts? -
我知道 y 截距。他们将被给予。我的算法应该适用于定义的任何 y 截距。因为用户将它们输入到函数中,函数将根据 y 截距和估计的角度返回优化的角度
-
X 和 Y 是数字、向量还是矩阵?
标签: matlab optimization constraints