Comments (9)
A sparsity pattern is a vector of pairs. So when one inits a sparsity pattern with the syntax {{}}
, what happens is that a vector of one value-initialized pair is created: [[0,0]]
(because {}
is value initialisation, and value initialisation for C++ integrals is equivalent to zero initialisation).
I don't see how we could detect such an occurrence (unless somehow repeated [[0,0]]
patterns are invalid? Can't ever remember the details of the sparsity stuff...). Seems to me an unfortunate consequence of equating C++11's initialisation rules with vector-like initialisation (a-la python lists).
from pagmo2.
One possible way to prevent that syntax from working would be to use, instead of std::pair
, a custom coded class which prohibits that type of initialization (but otherwise behaves exactly like std::pair
).
from pagmo2.
Could we not check in here upon construction of a problem? https://github.com/esa/pagmo2/blob/master/include/pagmo/problem.hpp#L1215 ?
from pagmo2.
Ah ok, now I get your point a [0,0] is created
from pagmo2.
The error is still well phrased when raised, but I was thinking to the possibility of detecting it in check_hessians_sparsity(hs);
Now I understand why its impossible without changing drastically the representation of the sparisty ...
from pagmo2.
Here's a demo of what I mean:
(try changing sparsity_pattern1
to sparsity_pattern2
in the main function)
from pagmo2.
Yeps. Nice solution, but I am not sure we want to override the std::pair .... there may be hidden consequences? Like that we have to implement a more complex my_pair class? Also we would need to have the python exp for my_pair ... Is it worth?
from pagmo2.
Personally I don't think it's worth it. It's an unfortunate syntactic quirk, but I'd rather warn about it in the tutorial or something like that.
from pagmo2.
Closing this for the time being, as we established it's not a bug and nobody wants to embark in re-implementing std::pair
with the desired behaviour.
from pagmo2.
Related Issues (20)
- [BUG] mhaco asserts if initial population does not verify constraints
- MinGW installation problem HOT 1
- how to run pagmo2 in parallel cluster? HOT 1
- [BUG] redundant code in moead.cpp HOT 2
- [BUG] Could NOT find pagmo_IPOPT (missing: PAGMO_IPOPT_INCLUDE_DIR) HOT 1
- [BUG] No 2.19.0 tag HOT 2
- [BUG] moead_gen is not documented HOT 2
- [FEATURE] PAGMO_VERSION HOT 2
- Scaling of design variables and
- How to optimize with algorithms::ipopt? HOT 2
- [BUG] Maximize function with Ipopt: incorrect population returned HOT 2
- [BUG] Compilation problem with IPOPT HOT 7
- Question: Use of Hessian with Ipopt
- pagmo-devel 2.19 build 3 not found by meson build system HOT 5
- Passing arguments in a user defined problem HOT 6
- Uninitialized variables may be used in cec2014 problem
- MPI Island class for cluster computing HOT 1
- Avoid multiple definitions of mathematical constants
- No "NaN/infinity" verification in sbx crossover implementation AND no bounds verification for NSGA-II's initial population
- Add NSGA-III implementation
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 pagmo2.