y切片と角度qで定義されるN本の線があります。制約は、すべてのN本の線が1点で交差する必要があるということです。最終的に制約を取得するために私が思いつくことができる方程式は次のとおりです。
Y = tan(q(1))X + y(1)
Y = tan(q(2))X + y(2)
...
手作業で、N = 3または4の場合に制約を取得できますが、Nが4より大きい場合に1つの制約を取得するのに問題があります。N= 3または4の場合、Xについて上記の方程式を解くと、次のようになります。 2つの方程式を設定すると、それらを互いに等しく設定できます。N> 4の場合、Xに等しい2つ以上の方程式が得られ、それらを1つの制約に凝縮する方法がわかりません。それらを1つの制約に凝縮できず、動的に作成される(渡されるNに応じて)複数の制約を使用して最適化問題を解決できる場合も、問題ありません。
私が何をしているのかをよりよく理解するために、N=3の制約を取得する方法を示します。次の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)))
Xを解くための2つの方程式があることに注意してください。N>4の場合、2を超えることになります。これは、制約を動的に作成し、MATLABで複数の制約を処理する最適化関数を呼び出すことができれば問題ありません。はるかに1つを見つけていません。