-
Notifications
You must be signed in to change notification settings - Fork 116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problem on windows platform with full paths in interfaces of Cbc, CbcSolve, Clp #32
Comments
Comment by mserg created at 2007-10-14 14:18:10 Dear colleague, This problem is model-independent. You can use any model, for example "hello.mps" from cbc-collection problems. See the follow log: I have found other problems in user's interface. The fatal error happens when the "pret" parameter is setting: This application has requested the Runtime to terminate it in an unusual way. The suspected initial value is displayed when change "sec" parameter: -1 can be assigned to parameters "log" and "slog". What is this mean? There is no help... To parameter "passC" can be negative. What is this mean? The strange value is displayed when the "cutoff" parameter change. The branch and cut algorithm is ignores "cutoff" changes... I set 1e55, but B&C use 1e50. See the follow log (the example "p0033.mps" was taken from cbc-collection): Maybe my English is too bad, but the "inc??" says "plus increment" against "cutoff??" "minus increment"... Seems too strange... I can't understand the help of "PrimalP" without drinking bottle of vodka... Which options is workable? Why the "primal exact" help is equivalent "dual steepest" help? -----Original Message----- #32: Problem on windows platform with full paths in interfaces of Cbc, CbcSolve, What Version of Cbc are you using? -- |
Comment by ladanyi created at 2008-04-11 13:18:56 fixed it in trunk. Will soon make a new stable and release out of it. |
Comment by ladanyi created at 2008-04-11 13:18:56 Resolution: fixed |
Comment by marotig created at 2008-11-25 13:26:46 The problem with full paths appears in the windows version of Cbc-2.2.2: calling Regards, |
Comment by marotig created at 2008-11-25 13:26:46 Resolution changed from fixed to |
Comment by marotig created at 2008-11-25 13:26:46 Changing status from closed to reopened. |
Comment by marotig created at 2009-06-19 15:24:46 The absolute paths are still broken in Cbc-2.3.0 (on Windows). It looks like I am the only one who encounters this problem... Regards, |
Hi, I still have issues with absolute paths on windows, but only for the mipstart file: Reading .mps files and specifying the solution file works fine with absolute paths. I'm on 2.10.3 |
Hello @joakimkejser, I have the same problem. Did you somehow overcome such issue? |
@joakimkejser @gastald88 |
@rahulbanerjee26 thank you very much for the answer |
This is a partial workaround to coin-or/Cbc#32
I just hit this as well. The problematic code: Lines 9445 to 9459 in 3dcedb2
needs an additional check for something like else if (field.length() >= 2 && field[1] == ':' &&
(field[0] >= 'a' && field[0] <= 'z' || field[0] >= 'A' && field[0] <= 'Z')) {
fieldName = field
} |
Sorry that this has been outstanding for so long. This and many other related things are cleaned up in the Since I hope to merge the Incidentally, in the if (field[0] == '/' || field[0] == '\\' || fileName.find(':') != std::string::npos) { But now I realize that since ':' is legal in Linux filenames, I guess this is technically not quite correct. Thanks for alerting me to this! |
Is there a reason to not use the standard library functions for this type of basic functionality? https://en.cppreference.com/w/cpp/filesystem/absolute The same functions exist in boost: https://www.boost.org/doc/libs/1_58_0/libs/filesystem/doc/reference.html#Operational-functions Or the gnulib function canonicalize: https://www.gnu.org/software/gnulib/MODULES.html#module=canonicalize (There are lots of very useful functions in gnulib implemented in the most portable way possible). |
Partly, the answer is that, while it is clear there's a lot of stuff that could be improved by using modern C++, it's just a lot of work and there's nobody to do it. Pull requests are always welcome (but please check the In Cbc and Clp currently, there are quite a few different places where filename processing occurs, so the first natural step is to move all of this processing back into CoinUtils so that fixes don't need to be propogated out in dozens of places. This is one of the things being done in the As for your suggestions, |
Just out of curiosity, may I ask the reasons for both decisions? The C++17 filesystem library is supported since a few years by all major compilers: https://en.cppreference.com/w/cpp/compiler_support Boost is a library that is widely used. Yes, it is another dependency, but one that should not be too hard to install. Of course, I'm not asking anyone to do it, but I'm wondering if the project would accept it if someone decided to spend the effort (or sponsor the work) to do it and what would be the rationale to decline. |
That is a nice reference that I will definitely study a bit. One issue arising over time has been not breaking the build with older compilers, which we would still like to support for a variety of reasons. For example, building Python extensions used to require older versions of the Visual Studio compiler. It's possible this situation has improved, but it's been a moving target over time and with developer bandwidth so limited, the path of least resistance to ensure portability for the widest range of users is not to bring in things like C++17. I think there's also something to be said for uniformity. Right now, we still have quite a bit of even C-style string handling, which would require a big effort to factor out. Having older C-style string handling in some places and modern C++17 in others doesn't seem ideal. Some of the string-handling is being improved in the So I guess the short answer is a (severe) lack of bandwidth to even consider whether starting to incorporate C++17 into the code base would break anything important. Cbc is embedded in so many different places that have their own build requirements, I would be hesitant to even start down the road at this point.
It's been a while but Boost used to be a pretty heavy install on Windows and a bit difficult to work with in certain build configurations. We need to support builds in conda, Msys, Visual Studio, Julia, R, etc. Sounds like something that would require some work to make seamless across all builds. It might be easy enough to detect whether Boost is present, but there's no point is supporting it as an optional dependency, since we would then need a fallback. This again mostly goes back to the severe lack of developer bandwidth and just a huge range of build environments that we're currently managing to support. Adding Boost as a dependency seems likely to upset the apple cart. |
Issue created by migration from Trac.
Original creator: mserg
Original creation time: 2007-09-21 11:07:39
Assignee: somebody
Version:
Example:
...
Result - Finished objective 25562 after 14 nodes and 3613 iterations - took 31.6
57 seconds
Coin:solu c:\result.txt
Unable to open file .\c:\result.txt
Coin:
I use version 1.1.1 ...
The text was updated successfully, but these errors were encountered: