Hey Jeff, Reginald et al. I was really rushed to finish this implementation by today, so I have eventually generated the data file on the fly, called glpsol and parsed its results. Not an optimal solution I know, but for this time it works. I sincerely thank you for the time you spent helping me, and I would be interested as soon as I have time to implement an easy C++ interface to the library. It's not much work and since I am sure that I will use it again in the future, there would already be a first user. Keep in touch, thanks again Alessandro
On Jan 15, 2013, at 5:32 AM, Reginald Beardsley <[email protected]> wrote: > All I was pointing out is how to generate the syntactic sugar (e.g. "param P > :=" ) for the data section in the context of an example I made up. It had > nothing to do with Alessandro's problem. > > BTW I just noticed there's another section on scripting with MathProg which > does things rather differently. It might be good to move the two together > and structure by environment and task e.g. parameter scanning, batch > execution, etc. > > FWIW I tend to be very incremental in developing problem logic and often have > a dozen or more scripts and programs called from a driver script. This makes > it easier to inspect the steps along the way. > > It's very awkward to examine a large array in a debugger. Much better to > dump it as a binary or ASCII file and look at that. This is particularly > important if you're pulling data from a large database which has data > corruption issues to be dealt with. In the data I deal with I expect 1-2% bad > data, so it saves time to dump the data in a viewable format at key steps in > the process for review before proceeding to the next step. It costs computer > resources, but with big memories and multiple cores it's not really a > problem. I just start the jobs and go do something else for a while. The > goal is to save my time. I can scan several thousand plots very quickly > looking for problem data. > > I should note that I developed this style on projects that take 100's of GB > of data from multiple sources and require 9-12 months to complete. For them > I might write 40-50 scripts and small programs in addition to using any > number of existing programs. It's hard enough done in many small steps. > Doing it in a single large program would probably be unsuccessful with a > brickwall deadline. I'd certainly be unwilling to try anything that large > with a hard deadline. I tend to use it a lot because I never know where > projects will head, but it's not needed for small well defined tasks. It's > also not well suited to repetitive work as there are too many moving parts to > keep track of. So a repeat of the same work will lead to an emphasis on > consolidating things into fewer steps. > > Have Fun! > Reg > > --- On Mon, 1/14/13, Dmitry Nadezhin <[email protected]> wrote: > >> From: Dmitry Nadezhin <[email protected]> >> Subject: Re: [Help-glpk] Problem with absolute value >> To: "Alessandro Saccoia" <[email protected]> >> Cc: "Reginald Beardsley" <[email protected]>, "glpk" <[email protected]> >> Date: Monday, January 14, 2013, 9:09 PM >> Hi Alessandro, >> >> Reginald suggeted that GLPK formulation of your problem has >> 8 columns >> instead of 4: >> S0, S1, S2, S3, Z0, Z1, Z2, Z3 , >> He expressed this in his script, but you can do the same >> thing in API. >> >> -Dima >> >> >> On Tue, Jan 15, 2013 at 4:50 AM, Alessandro Saccoia >> <[email protected]> >> wrote: >>> Hi Reginald, >>> thank you for pointing me to that script. I took a >> look, and if I will run out of time I will definitely use >> it. The program is really cpu intensive and the alignment >> part is an intermediate result, so I will still try to use >> the library. dumping formatted data to disk and running >> another program would mean to wrap everything in a script >> and break my original program into two parts. still it's an >> option... thanks for your help, >>> alessandro >>> >>> On Jan 14, 2013, at 2:34 PM, Reginald Beardsley <[email protected]> >> wrote: >>> >>>> Alessandro, >>>> >>>> If you look here: >>>> >>>> http://en.wikibooks.org/wiki/GLPK/Unix_Batch_Execution >>>> >>>> at script tst2a, you'll see an example of >> generating MathProg data files in a *nix command line >> environment which should be pretty much all you need. >> It's much less work than writing a custom program using the >> library calls. It also makes modifying the model much >> easier. >>>> >>>> If you need to pull the data out of something messy >> send me a sample. awk is really good for tasks such as >> merging data from several sources or parsing complex >> formats. >>>> >>>> Have Fun! >>>> Reg >>>> >>>> --- On Mon, 1/14/13, Alessandro Saccoia <[email protected]> >> wrote: >>>> >>>>> From: Alessandro Saccoia <[email protected]> >>>>> Subject: Re: [Help-glpk] Problem with absolute >> value >>>>> To: "Jeffrey Kantor" <[email protected]> >>>>> Cc: "[email protected]" >> <[email protected]> >>>>> Date: Monday, January 14, 2013, 6:17 AM >>>>> Hi Jeff, >>>>> that works wonders! Now I would just like to >> find a way to >>>>> use the library instead of the executable, and >> insert all >>>>> this information programmatically. In the glpk >> docs it seems >>>>> that it's up to me to introduce all the >> variables and create >>>>> the A matrix, but from another answer I got in >> pvt it looks >>>>> like I can use this syntax and have the library >> do the >>>>> necessary calculations. >>>>> If I can't avoid reading the model from file, I >> would at >>>>> least like to be able to provide the data at >> runtime. Thanks >>>>> for your time! >>>>> Alessandro >>>>> >>>>> On Jan 14, 2013, at 1:04 PM, Jeffrey Kantor >> <[email protected]> >>>>> wrote: >>>>> >>>>>> Hi Alessandro, >>>>>> >>>>>> I don't exactly the geometry, but here's a >> MathProg >>>>> model for your problem. If you want to try this >> out, cut and >>>>> paste it into the web page at >>>>> http://www3.nd.edu/~jeff/mathprog/mathprog.html >>>>>> >>>>>> Jeff >>>>>> >>>>>> >>>>>> set N := 0..3; >>>>>> param q{N}; >>>>>> param r{N}; >>>>>> >>>>>> param a := 0.95; >>>>>> param b := 1.05; >>>>>> >>>>>> var z{N} >= 0; >>>>>> var s{N}; >>>>>> >>>>>> s.t. c1 {n in 0..3}: z[n] >= r[n] - >> s[n]; >>>>>> s.t. c2 {n in 0..3}: z[n] >= s[n] - >> r[n]; >>>>>> s.t. c3 {n in 0..2}: s[n+1] - s[n] >= >>>>> a*(q[n+1]-q[n]); >>>>>> s.t. c4 {n in 0..2}: s[n+1] - s[n] <= >>>>> b*(q[n+1]-q[n]); >>>>>> >>>>>> minimize obj: sum{n in N} z[n]; >>>>>> solve; >>>>>> >>>>>> data; >>>>>> >>>>>> param q := >>>>>> 0 3 >>>>>> 1 5 >>>>>> 2 8 >>>>>> 3 12 >> ; >>>>>> >>>>>> param r := >>>>>> 0 2 >>>>>> 1 5 >>>>>> 2 7 >>>>>> 3 11 >> ; >>>>>> >>>>>> end; >>>> >>>> >>>> _______________________________________________ >>>> Help-glpk mailing list >>>> [email protected] >>>> https://lists.gnu.org/mailman/listinfo/help-glpk >>> >>> >>> _______________________________________________ >>> Help-glpk mailing list >>> [email protected] >>> https://lists.gnu.org/mailman/listinfo/help-glpk >> > > _______________________________________________ > Help-glpk mailing list > [email protected] > https://lists.gnu.org/mailman/listinfo/help-glpk _______________________________________________ Help-glpk mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-glpk
