Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7db992a7be |
+23
-13
@@ -108,6 +108,12 @@ IGL_INLINE igl::SolverStatus igl::active_set(
|
|||||||
Matrix<BOOL,Dynamic,1> as_ux = Matrix<BOOL,Dynamic,1>::Constant(n,1,FALSE);
|
Matrix<BOOL,Dynamic,1> as_ux = Matrix<BOOL,Dynamic,1>::Constant(n,1,FALSE);
|
||||||
Matrix<BOOL,Dynamic,1> as_ieq = Matrix<BOOL,Dynamic,1>::Constant(Aieq.rows(),1,FALSE);
|
Matrix<BOOL,Dynamic,1> as_ieq = Matrix<BOOL,Dynamic,1>::Constant(Aieq.rows(),1,FALSE);
|
||||||
|
|
||||||
|
Matrix<BOOL,Dynamic,1> fixed = Matrix<BOOL,Dynamic,1>::Constant(n,1,FALSE);
|
||||||
|
for(int k = 0;k<known.size();k++)
|
||||||
|
{
|
||||||
|
fixed[known(k)] = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
// Keep track of previous Z for comparison
|
// Keep track of previous Z for comparison
|
||||||
DerivedZ old_Z;
|
DerivedZ old_Z;
|
||||||
old_Z = DerivedZ::Constant(
|
old_Z = DerivedZ::Constant(
|
||||||
@@ -128,17 +134,21 @@ IGL_INLINE igl::SolverStatus igl::active_set(
|
|||||||
{
|
{
|
||||||
for(int z = 0;z < n;z++)
|
for(int z = 0;z < n;z++)
|
||||||
{
|
{
|
||||||
if(Z(z) < lx(z))
|
// only check non-fixed values
|
||||||
|
if(!fixed(z))
|
||||||
{
|
{
|
||||||
new_as_lx += (as_lx(z)?0:1);
|
if(Z(z) < lx(z))
|
||||||
//new_as_lx++;
|
{
|
||||||
as_lx(z) = TRUE;
|
new_as_lx += (as_lx(z)?0:1);
|
||||||
}
|
//new_as_lx++;
|
||||||
if(Z(z) > ux(z))
|
as_lx(z) = TRUE;
|
||||||
{
|
}
|
||||||
new_as_ux += (as_ux(z)?0:1);
|
if(Z(z) > ux(z))
|
||||||
//new_as_ux++;
|
{
|
||||||
as_ux(z) = TRUE;
|
new_as_ux += (as_ux(z)?0:1);
|
||||||
|
//new_as_ux++;
|
||||||
|
as_ux(z) = TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(Aieq.rows() > 0)
|
if(Aieq.rows() > 0)
|
||||||
@@ -253,11 +263,11 @@ IGL_INLINE igl::SolverStatus igl::active_set(
|
|||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
{
|
{
|
||||||
// NO DUPES!
|
// NO DUPES!
|
||||||
Matrix<BOOL,Dynamic,1> fixed = Matrix<BOOL,Dynamic,1>::Constant(n,1,FALSE);
|
Matrix<BOOL,Dynamic,1> fixed_i = Matrix<BOOL,Dynamic,1>::Constant(n,1,FALSE);
|
||||||
for(int k = 0;k<known_i.size();k++)
|
for(int k = 0;k<known_i.size();k++)
|
||||||
{
|
{
|
||||||
assert(!fixed[known_i(k)]);
|
assert(!fixed_i[known_i(k)]);
|
||||||
fixed[known_i(k)] = TRUE;
|
fixed_i[known_i(k)] = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user