FAQ.doxygen File Reference

Detailed Description

1 Is CuikSuite completely bug-free?


At this time we are not aware of any bug but CuikSuite has more than 60.000 lines of code. It is almost for sure than several bugs are hiding somewhere.

2 Is CuikSuite completely numerically safe?


The numerical stability of CuikSuite heavely depend on that of the simplex routine. Initially we used the glpk simplex implementation which is fast and numericaly quite robuts, however, recently we moved to the CLP simplex implementation since, although it is a bit slower than glpk it is much more robust. However, CLP can still fail for extremely ill conditioned problems, specially when the boxes are very small and complex linear relaxations are still used to bound the functions (i.e., when the LR2TM_Q and LR2TM_S parameters are very small, or even 0). The different hyperplanes generated in a linear relaxation of a given function on a small box are almost coincident. In those cases, it is preferrable to use simple linear relaxations derived from Taylor expansions. The parameters LR2TM_Q and LR2TM_S set the threshold to switch from traditional linear relaxations to simple ones for quadratic (parabolas, circles, spheres) and saddle equations.

As a general rule:

  • Avoid too small LR2TM_Q and LR2TM_S values. Something around SIGMA should be OK.
  • Avoid too high RHO values. Something around 0.5 should be OK. High values of RHO forces the box reduction to iterate over and over on boxes and in the limit some numerical issues could appear.

3 CuikSuite does not find all the solutions of my problem

This is very unlikely, but not impossible. CuikSuite is designed and implemented to deliver save approximations to the solutions sets. Therefore, it is more likely to deliver boxes that are close to be solutions but not actual solutions than to lose solution points.

The less save aspects of the CuikSuite implementation is the simplification process. When replacing a variable $x$ by $y+b$, tiny rounding issues appear in the coefficients of the equations. Some work-arounds are implemented to cope this these issues, but in extreme cases they are not enough. If you think your problem is one of those extreme cases try to reduce the simplification level, that is, set parameter SIMPLIFICATION_LEVEL to a lower value. The default value is 2. Set it to 1 or even to 0 to get slower but safer solution processes. On the other hand, if you like to live in the wild side, set this parameter to 3 to get lower execution times.

4 In your paper X you say problem Y can be solved in Z seconds but I dowloaded CuikSuite and I got different results.

CuikSuite is continously evolving. Improvements in the numerical stability result, in general, in larger execution times. Improvements in the formulations result, in general, in smaller execution times. These are the two main factors that have influence in the results.

5 I executed cuik several times on the same problem and I get slighly different results

There is a random component in cuik when selecting the split range and the split point in this range.

What is the syntax of the world files?

We have a leaflet describing this syntax.

At this point the leaflet is incomplete so maybe it is better to learn it from the examples.

6 What is the syntax of the cuik files?

We have a leafet describing this syntax. However, the syntax is simple enoug to learn it from the examples.

Remember that you have to use cuikequations to generate cuik files from the world files.

7 Cuik is not that quick.

Cuik is quite efficient compared with other solvers based on interval Newton methods or Bernstein-based polytopes. However, if you address complex problem you should not expect short execution times.

By the way, cuik stands for "Complete Universal Inverse Kinematics", to emphasize that the system can solve the input-output problem (inverse kinematics) on an arbitrary linkage (universal), and find all of its solutions (complete). The recent versions of the CuikSuite can do much more than solving inverse kinematic problems.

8 What kind of support do you offer for the CuikSuite?

Almost none. We are working on extending the capabilities of the solver and on applying CuikSuite to different problems and, therefore, we can only provide the most basic support for external users.

9 I have found a bug in the code, could you please fix it for me?

No. However we will be very gratefull if you tell us about it. Ideally you can fix the bug and send us the patch so that other users can benefit from your contribution.

10 What is the development cost of the CuikSuite?

As estimated by David A. Wheeler's SLOCCount and without taking into account the cost of developing the examples:

  • Total Physical Source Lines of Code (SLOC) = 60,540
  • Development Effort Estimate, Person-Years (Person-Months) = 14.87 (178.38)
    (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
  • Total Estimated Cost to Develop = $ 2,008,104
    (average salary = $56,286/year, overhead = 2.40).

Definition in file FAQ.doxygen.