Comments (3)
I think there is a lot of value in getting D's optimization routines in line with what is available in other languages. I am a fan of NLopt, but I don't think I have the knowledge to get it working in D.
from scid.
Sorry for not replying to this earlier!
It would indeed be very nice to have optimisation routines in SciD. And if there are several, it certainly makes sense for them to have the same API, so they are interchangeable. (I'm not sure to what extent that is possible, though. The API for a genetic algorithm is likely to be very different from that for a conjugate gradient algorithm, for example. But it may be possible to define some broad classes of algorithms.)
I'm not sold on the idea of using interface
s and class
es like you do, though, because it makes the user pay the price of polymorphic types (indirect function calls, heap allocation, etc.) when polymorphism isn't actually used for anything. I'm a much bigger fan of Phobos-style static interfaces (cf. ranges, containers, RNGs, the upcoming allocators, etc.), which provide max power and performance with no limitations. (If you need polymorphism, it is always possible to create wrappers à la std.range.interfaces
.)
from scid.
Nelson-Mead simplex is here, but license (requiring copyright notice display) may be a problem:
https://github.com/Laeeth/d_simplex.git
It works for me, but it's by no means rigorously tested.
It's hard to design an API from top down unless you already are intimately familiar with the nitty gritty of what each will require. It might be worth creating an experimental branch and starting to write implementations there, refine them, and then refactor out later.
Of course you can start by deciding to replicate everything another project does. But it would be a shame to let a grand goal detract from filling in functionality step by step. I am sure many people must have decent implementations squirreled away so if you start to show momentum maybe others will contribute.
from scid.
Related Issues (20)
- scid deb packages HOT 23
- Build script should allow choice of compiler HOT 11
- build.d able to build as sharedlib with ldc 2
- build.d able to build as sharedlib with ldc 2
- Add examples
- [LDC][OS X] lapack linking error
- [Travis] master state is not represented HOT 2
- [LDC][DUB] test failed HOT 3
- readme is outdated HOT 2
- modern D array indexing/slicing HOT 7
- installation / usage issues HOT 8
- scid.nonlinear.findRoot() fails when user function does not take buffer HOT 1
- Change licence to MPL 2.0 HOT 1
- Remove `scid.core.memory`, use new allocators package in Phobos instead HOT 1
- building docs makes complaints HOT 1
- There is probably a case for the lapack bindings to exist independently of this package HOT 4
- Allow for inverting a complex matrix HOT 1
- Extend MatrixView API with overloaded operators
- Publish new release for DMD's CI HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from scid.