CoMISo issueshttps://gitlab.vci.rwth-aachen.de:9000/CoMISo/CoMISo/-/issues2020-10-20T10:55:42Zhttps://gitlab.vci.rwth-aachen.de:9000/CoMISo/CoMISo/-/issues/4operator<<(ostream, vector>)2020-10-20T10:55:42ZAndreas Fabrioperator<<(ostream, vector>)With VC++ the examples do not compile and the error message is that there is no output operator for std::vector.
Do the examples compile with g++?
Adding the operator fixes the problem for VC++.With VC++ the examples do not compile and the error message is that there is no output operator for std::vector.
Do the examples compile with g++?
Adding the operator fixes the problem for VC++.https://gitlab.vci.rwth-aachen.de:9000/CoMISo/CoMISo/-/issues/5Consolidate IPOPT solver implementations2020-10-21T12:15:16ZPatric SchmitzConsolidate IPOPT solver implementationsWe have two implementations of the ipopt solver, `IPOPTSolver` and `IPOPTSolverLean`. I would like to get rid of the redundancy and decide for one (merged) version that we will maintain from here on. This is because I want to add the pos...We have two implementations of the ipopt solver, `IPOPTSolver` and `IPOPTSolverLean`. I would like to get rid of the redundancy and decide for one (merged) version that we will maintain from here on. This is because I want to add the possibility to add a custom intermediate_callback functor to the interface and I do not want to add this in several classes redundantly. Also both classes contain some copy'n'paste repeated code already, which I would like to clean up while at it.
There are a few differences I can see with `IPOPTSolverLean`
- uses pimpl idiom for the implementation
- uses DEB_* macros for logging
- wraps access to ipopt options with its own get/setters, and caches the state to pass it on to ipopt later
- moved the check wether the optimization found a solution to the `check_ipopt_status`
Regarding the pimpl implementation, I would advocate against using it in this case. It makes the implementation more complicated for a negligible benefit regarding decoupling and compilation times (for this particular class).
The DEB_* macros for debugging make sense I suppose, although I don't like the use of macros that seems to be the default mechanism for logging in CoMISo (true?) so I guess we should stick with that.
Wrapping access to the IPOPT options via get/setters I guess can be done, however there's a ton of solver options that I have already used, and adding a wrapper for each of them seems to incur a lot of overhead for a questionable benefit. I found it very convenient, using the `IPOPTSolver` to be able to just pass options directly to ipopt without going through the interface.
The last point makes sense of course since it reduces code replication.https://gitlab.vci.rwth-aachen.de:9000/CoMISo/CoMISo/-/issues/7Support long mode of cholmod / SuiteSparse2020-12-04T10:26:00ZMartin HeistermannSupport long mode of cholmod / SuiteSparseDefault mode uses int indices and fails for large problems.Default mode uses int indices and fails for large problems.https://gitlab.vci.rwth-aachen.de:9000/CoMISo/CoMISo/-/issues/8"VERSION" file causes include errors on MacOS2022-07-15T08:43:11ZMartin Heistermann"VERSION" file causes include errors on MacOSThe following combination breaks my build on MacOS:
- setting the CoMISo project root dir as include dir: https://graphics.rwth-aachen.de:9000/CoMISo/CoMISo/-/blob/68e7fb6eb836d1af0211341d32cf965e2b4ec5de/CMakeLists.txt#L73
- the "VERSIO...The following combination breaks my build on MacOS:
- setting the CoMISo project root dir as include dir: https://graphics.rwth-aachen.de:9000/CoMISo/CoMISo/-/blob/68e7fb6eb836d1af0211341d32cf965e2b4ec5de/CMakeLists.txt#L73
- the "VERSION" file in the project root
- `<version>` being a standard library header in C++20, which is included transitively in LLVM's libc++
- MacOS with (default) case-insensitive file system
This leads to `VERSION` being `#include`'d, which clearly won't work.
`VERSION` is used by `vci_get_version()` in `cmake-library/VCI/VCICommon.cmake`
I have multiple suggestions on how to fix this:
- Avoiding use of `vci_get_version` in CMake in favor of just setting the version in the `project()` call, then deleting `VERSION`. If you would merge this change, I'd be up for implementing it.
- Reorganizing the source so that we don't have to add the CoMISo root (or worse, its parent directory!) as include dir. For example moving everything to a `src` dir, or even splitting into `src` and `include/CoMISo` (for public headers). Not sure how to handle `Base/`, this is maybe a task someone with insight into how CoMISo is used at Autodesk could perform betterhttps://gitlab.vci.rwth-aachen.de:9000/CoMISo/CoMISo/-/issues/9Use cmake-library finder for GUROBI inside Comiso2022-07-15T08:43:11ZJan Möbiusmoebius@cs.rwth-aachen.deUse cmake-library finder for GUROBI inside Comisohttps://gitlab.vci.rwth-aachen.de:9000/CoMISo/CoMISo/-/issues/11NPTiming class missing max_feasible_step function2022-07-15T08:43:11ZNicolas Gallego-OrtizNPTiming class missing max_feasible_step functionHere how I solved it in my machine:
% git show -1
commit 6bec5ffbb15746c906acf5758847bc92c01a9f46 (HEAD -> cgg2)
Author: Gallego Ortiz, Nicolas (INF) <ng18p810@campus.unibe.ch>
Date: Tue May 18 16:16:26 2021 +0200
max_feasible_st...Here how I solved it in my machine:
% git show -1
commit 6bec5ffbb15746c906acf5758847bc92c01a9f46 (HEAD -> cgg2)
Author: Gallego Ortiz, Nicolas (INF) <ng18p810@campus.unibe.ch>
Date: Tue May 18 16:16:26 2021 +0200
max_feasible_step function was missing
diff --git a/NSolver/NPTiming.cc b/NSolver/NPTiming.cc
index 109fdb1..0e519ec 100644
--- a/NSolver/NPTiming.cc
+++ b/NSolver/NPTiming.cc
@@ -74,6 +74,10 @@ bool NPTiming::constant_hessian() const
return base_->constant_hessian();
}
+double NPTiming::max_feasible_step(const double *_x, const double *_v)
+{
+ return base_->max_feasible_step(_x, _v);
+}
void NPTiming::start_timing()
{
diff --git a/NSolver/NPTiming.hh b/NSolver/NPTiming.hh
index bf86342..e3e5799 100644
--- a/NSolver/NPTiming.hh
+++ b/NSolver/NPTiming.hh
@@ -54,7 +54,7 @@ public:
// advanced properties
virtual bool constant_gradient() const;
virtual bool constant_hessian() const;
-
+ virtual double max_feasible_step(const double* _x, const double* _v);
void start_timing();David BommesDavid Bommes