Closed gl-yziquel closed 11 months ago
Yes. It is fairly easy to fix: use #include <boost/bind/bind.hpp>
instead of #include <boost/bind.hpp>
and then write boost::placeholders::_1
instead of the naked _1
However, I'm not fixing this: I see other warnings during the compile, and I'm not ready to single-handedly maintain this. Anyway, more or less everything in MOSES is now in as-moses, which is still maintainable. So MOSES should now be considered deprecated/obsolete.
I'll merge pull reqs, though, if you provide them.
Thanks.
I'll see if I find time to provide such pull requests. Unlikely, but nonetheless possible. Depends.
Hmmmh.... not quite: it seems that my code is reference boost/mpl/bind.hpp. gcc -H
seems to tell me that this is pulled via opencog/util/functional.h
, itself pulled by opencog/util/selection.h
.
I wouldn't be too surprised if this were due to cogutil having evolved over time away from the runtime boost bind to the compile time boost mpl bind.
I've cleaned up many of the problems in pull req #107
However, I suggest focusing on as-moses, as that is the next-gen version of this code base.
Works for me.
I confirm that this fixes the issue.
It's been a few times you told me to switch to asmoses. So I'll address the implicit assumption behind that:
I am interested in moses because I am reading the documentation of various opencog stuff in a historical perspective, much like I do for many other things. I therefore wish to have handy the softwares that are referenced in the old docs of opencog. For instance, I need to understand how the AtomSpace developed from the AtomTable and Combo. So I'll keep working on these old pieces of code for various reasons such as this one.
I'm not asking you to maintain them.
When I'll be able to fix something, I'll try.
But, for the moment, given the complexity of entering into the opencog codebase, I do not consider it dumb or heretical to try to get old code to resurrect if that is what is needed to get some perspective.
If I'd need to compile some SNOBOL4, I'd compile some SNOBOL4.
Well, if you want to ask questions, I can act as a guide. Yes, the codebase is complex; but the general basic principles are not that hard. Let me try an informal summary here, for MOSES.
That's it. If you don't know what "random forest models" are, you should look at that topic.
And so, here we are, in modern times:
As to the future:
I am very interested in splitting up as-moses into 3 or 4 distinct technical pieces, because they are generically useful, outside of the MOSES framework. These are: -- The knob-turning subsystem -- the deme management subsystem -- the reduct subsystem -- The scoring algos, hillclimbing, cross-over etc. code. -- the table I/O code.
Why? I want to work with non-tabular data. I want other things besides reduct. I want different kinds of scoring. And I want to manage collections of demes, outside of the framework of MOSES.
All that is a generic software maintenance issue: modular code, small, maintainable pieces, each subsystem is easier to understand, but-fix, unit-test, enhance. OpenCog is not magically exempt from standard laws of software development.
Anyway .. there we are...
Oh, huh. I lied. I mis-spoke. I just skimmed https://en.wikipedia.org/wiki/Random_forest and ... well, MOSES is not that. There are a lot of similarities between MOSES-style combo trees, for combining inputs, and the "decision trees" used in random forest models. But there are also stark differences. So:
I guess this is an instance of bit rot.