1. 08 10月, 2013 1 次提交
  2. 30 8月, 2013 1 次提交
  3. 27 8月, 2013 1 次提交
  4. 30 7月, 2013 1 次提交
    • A
      Minor fixes · 3013ad66
      Alex Leontiev 提交于
      Request to comments on pull request for simplex method. In particular
      *) while(1) is replaced with for(;;)
      *) if(true){...} constructions in tests are replaced with #if 1 ...
       #endif
      3013ad66
  5. 25 7月, 2013 1 次提交
  6. 20 7月, 2013 1 次提交
    • A
      Eliminated all the calls to std::find() · c123974f
      Alex Leontiev 提交于
      This is done by keeping indexToRow vector, that keeps the information,
      opposite to those kept by N and B. That is, while N and B help to
      determine which variable corresponds to given column in column-vector c
      or row in matrix b, indexToRow helps to determine the corresponding
      row/column for a given variable.
      
      At this point, I'm waiting for comments from pull request reviewer and
      not working on any upgrades. Comments are appreciated, as usual.
      c123974f
  7. 19 7月, 2013 2 次提交
    • A
      Simplify printing procedures · 33e7640f
      Alex Leontiev 提交于
      Use opencv's print() procedure in place of my own procedures to output
      matrices and std::vectors.
      
      Interestingly enough, operator<< does not work for matrices, when called
      from my .cpp files in src/ subfolder of the optim module, although it
      works when called from tests and stand-alone programs, compiled with
      opencv. I think, this requires investigation and, maybe, bug report.
      33e7640f
    • A
      Minor fixes · 459c16ca
      Alex Leontiev 提交于
      In request to the comments for the pull request.
      459c16ca
  8. 12 7月, 2013 1 次提交
    • A
      Convenience fixes · 6db2596c
      Alex Leontiev 提交于
      Attempting to fix issues pointed out by Vadim Pisarevsky during the pull
      request review. In particular, the following things are done:
      *) The mechanism of debug info printing is changed and made more
      procedure-style than the previous macro-style
      *) z in solveLP() is now returned as a column-vector
      *) Func parameter of solveLP() is now allowed to be column-vector, in
      which case it is understood to be the transpose of what we need
      *) Func and Constr now can contain floats, not only doubles (in the
      former case the conversion is done via convertTo())
      *)different constructor to allocate space for z in solveLP() is used,
      making the size of z more explicit (this is just a notation change, not
      functional, both constructors are achieving the same goal)
      *) (big) mat.hpp and iostream headers are moved to precomp-headers from
      optim.hpp
      6db2596c
  9. 11 7月, 2013 5 次提交
    • A
      Fixing the warnings · e9b432b1
      Alex Leontiev 提交于
      Fixed all of the warnings.
      e9b432b1
    • A
      Fixed the warnings · 6c9ae110
      Alex Leontiev 提交于
      Fixed the code so to eliminate warnings related to shadowing and unused
      parameters. In some settings, these warnings may be treated as an errors
      and lead to failed build.
      
      Suggested by Nikita Manovich.
      6c9ae110
    • A
      Fix qualifiers on aux functions for solveLP() · fe6a7e93
      Alex Leontiev 提交于
      Change qualifiers on auxiliary functions (for solveLP() procedure) from
      const (that does not have much sense) to static (that makes them
      invisible for outside world and hopefully exacerbates optimization).
      fe6a7e93
    • A
      Preparation for pull request · ba537a95
      Alex Leontiev 提交于
      Additional cleaning for simplex method, removing the parts that are
      currently unused. Removing developer's notes. Trying to reach production
      level.
      ba537a95
    • A
      Cleaning the code of simplex method · a9565011
      Alex Leontiev 提交于
      In particular, the following things are done:
      *) Consistent tabulation of 4 spaces is ensured
      *) New function dprintf() is introduced, so now printing of the debug
      information can be turned on/off via the ALEX_DEBUG macro
      *) Removed solveLP_aux namespace
      *) All auxiliary functions are declared as static
      *) The return codes of solveLP() are encapsulated in enum.
      a9565011
  10. 03 7月, 2013 1 次提交
    • A
      Non-optimized simplex algorithm. · a4a5e98c
      Alex Leontiev 提交于
      This version is supposed to work on all problems (please, let me know if
      this is not so), but is not optimized yet in terms of numerical
      stability and performance. Bland's rule is implemented as well, so
      algorithm is supposed to allow no cycling. Additional check for multiple
      solutions is added (in case of multiple solutions algorithm returns an
      appropriate return code of 1 and returns arbitrary optimal solution).
      Finally, now we have 5 tests.
      
      Before Thursday we have 4 directions that can be tackled in parallel:
      *) Prepare the pull request!
      *) Make the code more clear and readable (refactoring)
      *) Wrap the core solveLP() procedure in OOP-style interface
      *) Test solveLP on non-trivial tests (possibly test against
      http://www.coin-or.org/Clp/)
      a4a5e98c
  11. 28 6月, 2013 1 次提交
    • A
      The first draft of simplex algorithm, simple tests. · ddc0010e
      Alex Leontiev 提交于
      What we have now corresponds to "formal simplex algorithm", described in
      Cormen's "Intro to Algorithms". It will work *only* if the initial
      problem has (0,0,0,...,0) as feasible solution (consequently, it will
      work unpredictably if problem was unfeasible or did not have zero-vector as
      feasible solution). Moreover, it might cycle.
      
      TODO (first priority)
      1. Implement initialize_simplex() procedure, that shall check for
      feasibility and generate initial feasible solution. (in particular, code
      should pass all 4 tests implemented at the moment)
      2. Implement Bland's rule to avoid cycling.
      3. Make the code more clear.
      4. Implement several non-trivial tests (??) and check algorithm against
      them. Debug if necessary.
      
      TODO (second priority)
      1. Concentrate on stability and speed (make difficult tests)
      ddc0010e
  12. 25 6月, 2013 1 次提交
    • A
      Created skeleton for simplex method. · b216c094
      Alex Leontiev 提交于
      Added LPSolver class together with two nested classes: LPFunction and
      LPConstraints. These represent function to be maximized and constraints
      imposed respectively. They are implementations of interfaces Function
      and Constraints respectively (latter ones are nested classes of Solver
      interface, which is generic interface for all optimization algorithms to
      be implemented within this project).
      
      The next step is to implement the simplex algorithm! First, we shall
      implement it for the case of constraints of the form Ax<=b and x>=0.
      Then, we shall extend the sets of problems that can be handled by the
      conversion to the one we've handled already. Finally, we shale
      concentrate on numerical stability and efficiency.
      b216c094
  13. 20 6月, 2013 1 次提交
    • A
      Blank module and first draft of solver API. · f41b8b90
      Alex Leontiev 提交于
      At this point we have a skeleton of a new module (optim) which can
      barely compile properly (unlike previous commit). Besides, there is a
      first draft of solver and lpsolver (linear optimization solver) in this
      commit.
      f41b8b90
  14. 17 6月, 2013 1 次提交