Browse Source

remove broken full problem version

Alec Jacobson 4 years ago
parent
commit
41591d2a49
1 changed files with 2 additions and 89 deletions
  1. 2 89
      include/igl/quadprog.cpp

+ 2 - 89
include/igl/quadprog.cpp

@@ -1,84 +1,8 @@
 #include "quadprog.h"
 #include "min_quad_with_fixed.h"
-//#include <igl/matlab_format.h>
-//#include <igl/eigen_format.h>
+#include <igl/matlab_format.h>
 #include <iostream>
 
-template <typename Scalar, int n, int ni>
-IGL_INLINE Eigen::Matrix<Scalar,n,1> igl::quadprog(
-  const Eigen::Matrix<Scalar,n,n> & H,
-  const Eigen::Matrix<Scalar,n,1> & f,
-  const Eigen::Matrix<Scalar,ni,n> & Ai,
-  const Eigen::Matrix<Scalar,ni,1> & lbi,
-  const Eigen::Matrix<Scalar,ni,1> & ubi,
-  const Eigen::Matrix<Scalar,n,1> & lb,
-  const Eigen::Matrix<Scalar,n,1> & ub)
-{
-  const auto dyn_n = n == Eigen::Dynamic ? H.rows() : n;
-  const auto dyn_ni = ni == Eigen::Dynamic ? Ai.rows() : ni;
-  // min_x ½ xᵀ H x + xᵀ f   
-  // subject to lbi ≤ Ai x ≤ ubi, lb≤x≤ub
-  //
-  // min_x,xi ½ xᵀ H x + xᵀ f
-  // subject to Ai x - xi = 0, lbi≤xi≤ubi, lb≤x≤ub 
-  //
-  // min_z ½ zᵀ [H 0;0 0] z + zᵀ [f;0]
-  // subject to [Ai -I] z = 0, [lb;lbi]≤z≤[ub;ubi]
-  const int nn = n == Eigen::Dynamic ? Eigen::Dynamic : n+ni;
-  const auto dyn_nn = nn == Eigen::Dynamic ? dyn_n+dyn_ni : nn;
-  const auto make_HH = [&]()
-  {
-    Eigen::Matrix<Scalar,nn,nn> HH =
-      Eigen::Matrix<Scalar,nn,nn>::Zero(dyn_nn,dyn_nn);
-    HH.topLeftCorner(dyn_n,dyn_n) = H;
-    return HH;
-  };
-  const Eigen::Matrix<Scalar,nn,nn> HH = make_HH();
-  const auto make_ff = [&]()
-  {
-    Eigen::Matrix<Scalar,nn,1> ff = Eigen::Matrix<Scalar,nn,1>::Zero(dyn_nn,1);
-    ff.head(dyn_n) = f;
-    return ff;
-  };
-  const Eigen::Matrix<Scalar,nn,1> ff = make_ff();
-  const auto make_lblb = [&]()
-  {
-    Eigen::Matrix<Scalar,nn,1> lblb =
-      Eigen::Matrix<Scalar,nn,1>::Zero(dyn_nn,1);
-    lblb.head(dyn_n) = lb;
-    lblb.tail(dyn_ni) = lbi;
-    return lblb;
-  };
-  const Eigen::Matrix<Scalar,nn,1> lblb = make_lblb();
-  const auto make_ubub = [&]()
-  {
-    Eigen::Matrix<Scalar,nn,1> ubub =
-      Eigen::Matrix<Scalar,nn,1>::Zero(dyn_nn,1);
-    ubub.head(dyn_n) = ub;
-    ubub.tail(dyn_ni) = ubi;
-    return ubub;
-  };
-  const Eigen::Matrix<Scalar,nn,1> ubub = make_ubub();
-  const auto make_AA = [&]()
-  {
-    Eigen::Matrix<Scalar,ni,nn> AA =
-      Eigen::Matrix<Scalar,ni,nn>::Zero(dyn_ni,dyn_nn);
-    AA.leftCols(dyn_n) = Ai;
-    AA.rightCols(dyn_ni) =
-      -Eigen::Matrix<Scalar,ni,ni>::Identity(dyn_ni,dyn_ni);
-    return AA;
-  };
-  const Eigen::Matrix<Scalar,ni,nn> AA = make_AA();
-  const Eigen::Matrix<Scalar,ni,1> bb = 
-   Eigen::Matrix<Scalar,ni,1>::Zero(dyn_ni,1);
-  // This ends make a system that looks like [H 0 Aᵀ;0 0 -I;A I 0] which is rank
-  // deficient.
-  const Eigen::Matrix<Scalar,nn,1> xx = 
-    igl::quadprog(HH,ff,AA,bb,lblb,ubub);
-  return xx.head(dyn_n);
-}
-
-
 template <typename Scalar, int n, int m>
 IGL_INLINE Eigen::Matrix<Scalar,n,1> igl::quadprog(
   const Eigen::Matrix<Scalar,n,n> & H,
@@ -88,12 +12,6 @@ IGL_INLINE Eigen::Matrix<Scalar,n,1> igl::quadprog(
   const Eigen::Matrix<Scalar,n,1> & lb,
   const Eigen::Matrix<Scalar,n,1> & ub)
 {
-  //std::cout<<igl::matlab_format(H,"H")<<std::endl;
-  //std::cout<<igl::matlab_format(f,"f")<<std::endl;
-  //std::cout<<igl::matlab_format(A,"A")<<std::endl;
-  //std::cout<<igl::matlab_format(b,"b")<<std::endl;
-  //std::cout<<igl::matlab_format(lb,"lb")<<std::endl;
-  //std::cout<<igl::matlab_format(ub,"ub")<<std::endl;
   typedef Eigen::Matrix<Scalar,n,1> VectorSn;
   typedef Eigen::Array<bool,n,1>    Arraybn;
   assert( (lb.array() < ub.array() ).all() );
@@ -161,6 +79,7 @@ IGL_INLINE Eigen::Matrix<Scalar,n,1> igl::quadprog(
       k(i) = false;
     }else /*if(best_add < 0 && best_remove < 0)*/
     {
+      std::cout<<igl::matlab_format(x,"x")<<std::endl;
       return x;
     }
   }
@@ -191,12 +110,6 @@ IGL_INLINE Eigen::Matrix<Scalar,n,1> igl::quadprog(
 
 #ifdef IGL_STATIC_LIBRARY
 // Explicit template instantiation
-// generated by autoexplicit.sh
-template Eigen::Matrix<double, -1, 1, ((Eigen::StorageOptions)0) | ((((-1) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((-1) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), -1, 1> igl::quadprog<double, -1, -1>(Eigen::Matrix<double, -1, -1, ((Eigen::StorageOptions)0) | ((((-1) == (1)) && ((-1) != (1))) ? ((Eigen::StorageOptions)1) : ((((-1) == (1)) && ((-1) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), -1, -1> const&, Eigen::Matrix<double, -1, 1, ((Eigen::StorageOptions)0) | ((((-1) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((-1) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), -1, 1> const&, Eigen::Matrix<double, -1, -1, ((Eigen::StorageOptions)0) | ((((-1) == (1)) && ((-1) != (1))) ? ((Eigen::StorageOptions)1) : ((((-1) == (1)) && ((-1) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), -1, -1> const&, Eigen::Matrix<double, -1, 1, ((Eigen::StorageOptions)0) | ((((-1) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((-1) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), -1, 1> const&, Eigen::Matrix<double, -1, 1, ((Eigen::StorageOptions)0) | ((((-1) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((-1) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), -1, 1> const&, Eigen::Matrix<double, -1, 1, ((Eigen::StorageOptions)0) | ((((-1) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((-1) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), -1, 1> const&, Eigen::Matrix<double, -1, 1, ((Eigen::StorageOptions)0) | ((((-1) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((-1) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), -1, 1> const&);
-// generated by autoexplicit.sh
-template Eigen::Matrix<double, 6, 1, ((Eigen::StorageOptions)0) | ((((6) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((6) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 6, 1> igl::quadprog<double, 6, 2>(Eigen::Matrix<double, 6, 6, ((Eigen::StorageOptions)0) | ((((6) == (1)) && ((6) != (1))) ? ((Eigen::StorageOptions)1) : ((((6) == (1)) && ((6) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 6, 6> const&, Eigen::Matrix<double, 6, 1, ((Eigen::StorageOptions)0) | ((((6) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((6) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 6, 1> const&, Eigen::Matrix<double, 2, 6, ((Eigen::StorageOptions)0) | ((((2) == (1)) && ((6) != (1))) ? ((Eigen::StorageOptions)1) : ((((6) == (1)) && ((2) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 2, 6> const&, Eigen::Matrix<double, 2, 1, ((Eigen::StorageOptions)0) | ((((2) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((2) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 2, 1> const&, Eigen::Matrix<double, 2, 1, ((Eigen::StorageOptions)0) | ((((2) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((2) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 2, 1> const&, Eigen::Matrix<double, 6, 1, ((Eigen::StorageOptions)0) | ((((6) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((6) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 6, 1> const&, Eigen::Matrix<double, 6, 1, ((Eigen::StorageOptions)0) | ((((6) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((6) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 6, 1> const&);
-// generated by autoexplicit.sh
 template Eigen::Matrix<double, 2, 1, ((Eigen::StorageOptions)0) | ((((2) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((2) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 2, 1> igl::quadprog<double, 2>(Eigen::Matrix<double, 2, 2, ((Eigen::StorageOptions)0) | ((((2) == (1)) && ((2) != (1))) ? ((Eigen::StorageOptions)1) : ((((2) == (1)) && ((2) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 2, 2> const&, Eigen::Matrix<double, 2, 1, ((Eigen::StorageOptions)0) | ((((2) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((2) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 2, 1> const&, Eigen::Matrix<double, 2, 1, ((Eigen::StorageOptions)0) | ((((2) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((2) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 2, 1> const&, Eigen::Matrix<double, 2, 1, ((Eigen::StorageOptions)0) | ((((2) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((2) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 2, 1> const&);
-// generated by autoexplicit.sh
 template Eigen::Matrix<double, 3, 1, ((Eigen::StorageOptions)0) | ((((3) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((3) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 3, 1> igl::quadprog<double, 3>(Eigen::Matrix<double, 3, 3, ((Eigen::StorageOptions)0) | ((((3) == (1)) && ((3) != (1))) ? ((Eigen::StorageOptions)1) : ((((3) == (1)) && ((3) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 3, 3> const&, Eigen::Matrix<double, 3, 1, ((Eigen::StorageOptions)0) | ((((3) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((3) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 3, 1> const&, Eigen::Matrix<double, 3, 1, ((Eigen::StorageOptions)0) | ((((3) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((3) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 3, 1> const&, Eigen::Matrix<double, 3, 1, ((Eigen::StorageOptions)0) | ((((3) == (1)) && ((1) != (1))) ? ((Eigen::StorageOptions)1) : ((((1) == (1)) && ((3) != (1))) ? ((Eigen::StorageOptions)0) : ((Eigen::StorageOptions)0))), 3, 1> const&);
 #endif