How to make SCIP use the LAPACK library? - lapack

I have built a MINLP model in Pyomo in Linux system and I used SCIP to solve the model. Then I encountered the problem shown below.
enter image description here
Then SCIP starts optimization and takes a large amount of time. I googled the problem and found that SCIP is only able to use LAPACK through Ipopt. Then I followed the instruction to run make IPOPT=true (I have installed IPOPT). However, build failed.
enter image description here
Then I followed its suggestion to run make IPOPT=true READLINE=false ZLIB=false GMP=false and then new question appeared.
enter image description here
As for this question, I haven’t found any solution. When I run make GMP=true, it suggests me to use GMP=false, and when I run make GMP=false, it suggests me to use GMP=true.
So is there a way to make SCIP use the LAPACK library?

For the GMP=false/true issue, I suspect that the problem is that SoPlex was built with GMP=true and SCIP needs GMP=true as well. So if you want to try to build SCIP with GMP=false then SoPlex should also be built with GMP=false.

I cannot really say from your pictures why linking against Ipopt failed. Check all error messages and whether the symbols that the compiler thinks are missing are actually available in the lib that is linked against.
Use VERBOSE=true to see the actual linker call and check whether it makes sense.
The hints about readline, gmp, or zlib are misleading. Don't deactivate these if you do not actually have problems linking against these libs.
If you want only Lapack but no Ipopt, then there has been a post about this a while ago: lapack library for scip optimization

Related

Problems in OpenModelica v1.19.2 when installing OpenHydraulics v1.0.1 with Modelica Standard Lib v3.2

Greeting Everyone, I am a new one here.
I'm a brand new Modelica user. I'm trying to learn the language with OpenModelica. I'd like to use OpenHydraulics which is in github link in OpenModelica (specifically in the OMEdit Connection Editor).
I downloaded OpenModelica v1.19.2 and Modelica Standard Lib v3.2 to browse and run the library OpenHydraulics v1.0.1. However, when I open the Excavator example and try to Instantiate or Simulate the model I get many errors of the form:
[OpenHydraulics.Basic.VariableRestriction: 51:3-54:64]: Function ReynoldsNumber_m_flow not found in scope VariableRestriction.
Could you help me with this problem?
Thanks in advance.
there are a couple of things you need to take into consideration:
The current version of OpenHydraulics is still the original release from almost 10 years ago.
The library was developed using Dymola which at the time also supported a couple of non-standard Modelica, Dymola-specific constructs that other tools struggle to work with.
The example you are trying to run is the most complex one utilizing almost all of the power of the library and hence has quite a high degree of complexity.
Taking all this together means that OpenModelica is bound to struggle with that example. But all is not lost. If you actually look at the more simple circuit examples (under Circuit) you'll find that they work just fine. And depending on your application area they might already demonstrate a usage that will fit your needs.
I hope this helps.

Custom Hypercall in XEN

I was playing around with XEN kernel and I wanted to implement a custom hypercall on XEN. I added an entry in entry.S, defined a constant in xen.h, declared a prototype in hypercall.h and made a new body too in kernel.c as written in this blog.
I am getting an error saying that function is not implemented when i try to execute the hypercall. Iam using Ubuntu 14.04 LTS and Xen 4.7. Any idea why is the function not being implemented though I have clearly tried doing it.
I've made an example for the Xen 4.13 version in this question: how to add a hypercall in xen 4.13.0
Despite this question is previous to that one the idea is the same and I'm answering here to help someone that might get here before!
Did you try in Privcmd (as of mentioned in that blog)?
I recently try it in Xen 4.6.1 and became runable with no problem. it may be because of wrong invoking method or less of privileged. have you ever solved it?
Regards.

MATLAB Compiler Runtime - how to run it?

I'm supposed to install the MATLAB compiler runtime for class purposes in one of my subjects at University. I have installed it and followed the guide - and this is my silly question: How do I run it? I mean, shouldn't there be some sort of icon or file I need to click to run the actual program?
It shows up on my list of installed programs (under controlpanel -> programs and features), and I have checked the folders where i installed it, but there doesn't seem to be any file or anything I can use to actually run it.
Maybe I misunderstood the purpose of MCR, but any help would be greatly appreciated.
Also, note that I am still new to anything computer-related that is more advanced than basic HTML and opening zipped files.
This question was already correctly answered in the comments by #seb, but to make sure it does not remain open I will post the answer here:
You need to write Matlab code and generate a .dll (or executable
maybe). Then this .dll can be run on a PC that has either Matlab or
MCR installed. But you don't click and start MCR.
And in addition to that I have added a description of how I see the MCR:
Think of the MCR as a bundle of complicated functions. When you compile a program you will just have the references to those functions in your program. Most of the content will actually be drawn from the MCR when your program is run.
That being said, if you actually want students to work with matlab (not just with programs pre built by the teacher) you will actually need to install Matlab, and not the MCR.

Integrating Matlab with C++

I need to localize facial landmarks as a part of my research project and planning to use Supervised Descent Method (SDM) for that. Both the C++ and Matlab versions are available at the following site and when I contacted them they said C++ version is not going to be available until they secure it. So, I had no other option and had to opt for Matlab version.
http://www.humansensing.cs.cmu.edu/intraface/download_functions_matlab.html
The problem is that My project is in C++ and OpenCV. I wonder whether there is a way to access Matlab version of SDM in Visual C++ . I mean, is there an integration mechanism available for that ?
And, the next issue is when executing the "Facial Feature Detection" code available at the above site I get the following error.
I executed it as given below.
[detected_points] = xx_track_detect(Model,[],image,[],options);
and, it says "undefined function or variable named 'model' "
anyone have a solution to this ?
It seems like you need to use Matlab engine to be able to execute Matlab commands from C++. The engine interface allows you to do just so.
Regarding the model variable - it is probably a representation of the learned model for facial landmarks, it should be supplied with the packge or you need to tune it by yourself. Without additional information I suggest you contact the publishers of the package for more information.

What's the different between these opencv libs that have the very similar name ? Which should I put into project libraries?

I am on Linux(Ubuntu) with OpenCV 2.4 installed. I am try to use Eclipse to create an opencv project. When I build the project, I got collect2: ld returned 1 exit status error which I guess is caused by missing libs. Then I put libraries in this project, but I find every lib has three very similar brothers, like:
libopencv_highgui.so
libopencv_highgui.so.2.4
libopencv_highgui.so.2.4.0
So, which one should I add to project libraries? And what's the different between them?
Best Regards.
libopencv_highgui.so and libopencv_highgui.so.2.4 are probably symbolic links to libopencv_highgui.so.2.4.0.
Libraries frequently do this so that software that needs to link against specific versions can while keeping the generic library also exposed.
This is mainly useful when a program to be linked against a major or minor version of a library. Consider if a legacy application needed to link against version 1.2 of libopencv_highgui. The program couldn't link against libopencv_highgui.so because that's not guaranteed to be the correct version. However, the program could link against libopencv_highgui.so.1.2. libopencv_highgui.so.1.2 may be a symbolic link to libopencv_highgui.so.1.2.3, but that would be ok since the third number usually means a minor bug fix that won't break compatibility.
So this brings up which file you should link against. This really depends. Unless you need to depend on some bug or quirk of a specific minor revision, I would definitely avoid linking against the 2.4.0 one. That ties your program specifically to version 2.4.0. When 2.4.1 gets released (or trickles down your distro's package manager), it probably won't break your program.
If you link against libopencv_highgui.so and then 2.5 is installed as the main lib (and then libopencv_highgui.so links to libopencv_highgui.so.2.5.0), there is a chance that your program will not link correctly since the second number does sometimes mean compatibility changes.
So in short, if it's a personal project, just link to whatever you want. libopencv_highgui.so is probably safe if it's personal. If it's going to be distributed, figure out what versions of the library your code will link properly against and then use the vaguest one possible. For example, if your code works with 2.2, 2.3 and 2.4, you should go ahead and link to libopencv_highgui.so. If it only works specifically with 2.4.0, you should link with libopencv_highgui.so.2.4.0. If it will work with any sub revision of 2.4, you should go with libopencv_highgui.so.2.4.
Basically you have to make a choice about what you think will link properly on the most people's setups.
I think I make some mistake here. What I need is these libraries, But when I add them into project libraries. YOU SHOULD USE THESE NAMES, for the library I mentioned in the question, we should add opencv_highgui in to eclipse libraries dependency but libopencv_highgui.so.2.4. For the future use, I write these stuff here.