Git Product home page Git Product logo

fitminimizers's Introduction

fitminimizers

Downhill simplex algorithm including variant with simulated annealing for Delphi / Lazarus.

More info

fitminimizers on GitHub

fitminimizers's People

Contributors

dvmorozov avatar

Stargazers

 avatar

Watchers

 avatar  avatar

fitminimizers's Issues

Thread pool of configurable size

Solution

  1. Goal is to improve performance of "brute force" search with parallel computing. ✔️
  2. The approach should be very similar to implemented with using of TRunner instance and is used inside loop. ✔️
  3. PointCloud should be attribute of "handler", because now different instances of handler should work with different data (rotated by different angles). ✔️
  4. TRunnerPool class should be designed maintaining pool of instances of TRunner class and having GetRunner method, which should wait until one of runners will be free. ✔️
  5. Initial angles of rotation are stored as attributes of TPointCloud because they are just extra attributes of the same entity (no needs to create additional container). ✔️

Related

#3

Develop demo application

Solution

  1. Minimum bounding box in 3D. ✔️
  2. Copy it to the branch 0.9.24 as well. ✔️
  3. Move it into separate folder. ✔️
  4. Add description to the page. ✔️
  5. Format code. ✔️
  6. Move interface implementation into separate file. ✔️ #11
  7. Rebuild and test Fit. ✔️
  8. Add multi-threading example. ✔️
  9. "Handlers" should be freed after finishing computation. ✔️

References

https://en.wikipedia.org/wiki/Minimum_bounding_box_algorithms

Related

#11 #15 #31 #38 #43 #48

Final vector has different direction than original (test) one

Components are the same by module but occupy different places.

Conclusion

Not an issue.
Rotation angles can be different if object has axis of symmetry.
More correct criteria is the direction of rotated unit vector. It is seen from optimization on TestModel.obj that final and initial directions are very close. This happens because test object is aligned along X-axis and minimum box volume is achieved with this orientation. This could not be the case with general object.

Review and update comments

Solution

  1. Make them informative and suitable for automatically generated documentation.
  2. Check comments in LorentzPoint.

Segmentation fault in the single pass demo

LCL creates a few processing threads under Linux even for simplest application. This somehow causes failure when event handler creates separate thread and leaves it running. Under Windows only single thread is created and the issue is not reproduced. The issue is not reproduced when event handler waits for termination of all created threads. As a workaround TRunner.Wait is called. Otherwise probably architecture should be changed.

References

https://wiki.freepascal.org/Multithreaded_Application_Tutorial
http://lazarus-dev.blogspot.com/2013/08/threads-with-lazarus.html

Related

#31

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.