Re: [ojAlgo-user] Behaviour of ExpressionBasedModel since OjAlgo37
Mathematics, linear algebra and optimisation
Brought to you by:
apete
From: Nico P. <Nic...@gm...> - 2016-03-16 12:32:14
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div> <div>Do you mean the object tmpSolver? It's an instance of IterativeMixedASS and seems to inherit toString from the BaseSolver, so it basically returns some matrices:</div> <div> </div> <div><Builder><br/> [AE] = org.ojalgo.matrix.PrimitiveMatrix < 1 x 100 ><br/> [BE] = org.ojalgo.matrix.PrimitiveMatrix < 1 x 1 ><br/> { { 1.0 } }<br/> [Q] = org.ojalgo.matrix.PrimitiveMatrix < 100 x 100 ><br/> [C] = org.ojalgo.matrix.PrimitiveMatrix < 100 x 1 ><br/> [AI] = org.ojalgo.matrix.PrimitiveMatrix < 100 x 100 ><br/> [BI] = org.ojalgo.matrix.PrimitiveMatrix < 100 x 1 ><br/> [X] = org.ojalgo.matrix.PrimitiveMatrix < 100 x 1 ><br/> [SE] = org.ojalgo.matrix.PrimitiveMatrix < 1 x 1 ><br/> { { -2.7197835095194023E-9 } }<br/> [SI] = org.ojalgo.matrix.PrimitiveMatrix < 100 x 1 ><br/> </Builder></div> <div> </div> <div> </div> <div> <div name="quote" style="margin:10px 5px 5px 10px; padding: 10px 0 10px 10px; border-left:2px solid #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"> <div style="margin:0 0 10px 0;"><b>Gesendet:</b> Mittwoch, 16. März 2016 um 13:02 Uhr<br/> <b>Von:</b> "Anders Peterson" <an...@op...><br/> <b>An:</b> oja...@li...<br/> <b>Betreff:</b> Re: [ojAlgo-user] Behaviour of ExpressionBasedModel since OjAlgo37</div> <div name="quoted-content">toString() of the solver, not the model. You have to somehow step into (or modify) ojAlgo’s code. Setting a suitable breakpoint with the debugger in ExpressionsBasedModel's solve(…) method should be enough.<br/> <br/> <br/> > On 16 mars 2016, at 12:45, Nico Potyka <Nic...@gm...> wrote:<br/> ><br/> > Of course I can send you the output of the toString-method. I didn't think it will help much. I attach it below. As I explained, it's not easy to generate a straightforward test case. However, I will try to automatically generate code that creates the optimization problem without the need for the whole library, when I find some time. By the way, I don't expect you to find a solution to the problem without further information, I am just responding to your questions.<br/> ><br/> ><br/> > Status: INFEASIBLE<br/> ><br/> ><br/> ><br/> > Solver:<br/> > ############################################<br/> > 0 <= p0: 0<br/> > 0 <= p1: 0<br/> > 0 <= p2: 0<br/> > 0 <= p3: 0<br/> > 0 <= p4: 0<br/> > 0 <= p5: 0<br/> > 0 <= p6: 0<br/> > 0 <= p7: 0<br/> > 0 <= p8: 0<br/> > 0 <= p9: 0<br/> > 0 <= p10: 0<br/> > 0 <= p11: 0<br/> > 0 <= p12: 0<br/> > 0 <= p13: 0<br/> > 0 <= p14: 0<br/> > 0 <= p15: 0<br/> > 0 <= p16: 0<br/> > 0 <= p17: 0<br/> > 0 <= p18: 0<br/> > 0 <= p19: 0<br/> > 0 <= p20: 0<br/> > 0 <= p21: 0<br/> > 0 <= p22: 0<br/> > 0 <= p23: 0<br/> > 0 <= p24: 0<br/> > 0 <= p25: 0<br/> > 0 <= p26: 0<br/> > 0 <= p27: 0<br/> > 0 <= p28: 0<br/> > 0 <= p29: 0<br/> > 0 <= p30: 0<br/> > 0 <= p31: 0<br/> > 0 <= p32: 0<br/> > 0 <= p33: 0<br/> > 0 <= p34: 0<br/> > 0 <= p35: 0<br/> > 0 <= p36: 0<br/> > 0 <= p37: 0<br/> > 0 <= p38: 0<br/> > 0 <= p39: 0<br/> > 0 <= p40: 0<br/> > 0 <= p41: 0<br/> > 0 <= p42: 0<br/> > 0 <= p43: 0<br/> > 0 <= p44: 0<br/> > 0 <= p45: 0<br/> > 0 <= p46: 0<br/> > 0 <= p47: 0<br/> > 0 <= p48: 0<br/> > 0 <= p49: 0<br/> > 0 <= p50: 0<br/> > 0 <= p51: 0<br/> > 0 <= p52: 0<br/> > 0 <= p53: 0<br/> > 0 <= p54: 0<br/> > 0 <= p55: 0<br/> > 0 <= p56: 0<br/> > 0 <= p57: 0<br/> > 0 <= p58: 0<br/> > 0 <= p59: 0<br/> > 0 <= p60: 0<br/> > 0 <= p61: 0<br/> > 0 <= p62: 0<br/> > 0 <= p63: 0<br/> > 0 <= p64: 0<br/> > 0 <= p65: 0<br/> > 0 <= p66: 0<br/> > 0 <= p67: 0<br/> > 0 <= p68: 0<br/> > 0 <= p69: 0<br/> > 0 <= p70: 0<br/> > 0 <= p71: 0<br/> > 0 <= p72: 0<br/> > 0 <= p73: 0<br/> > 0 <= p74: 0<br/> > 0 <= p75: 0<br/> > 0 <= p76: 0<br/> > 0 <= p77: 0<br/> > 0 <= p78: 0<br/> > 0 <= p79: 0<br/> > 0 <= p80: 0<br/> > 0 <= p81: 0<br/> > 0 <= p82: 0<br/> > 0 <= p83: 0<br/> > 0 <= p84: 0<br/> > 0 <= p85: 0<br/> > 0 <= p86: 0<br/> > 0 <= p87: 0<br/> > 0 <= p88: 0<br/> > 0 <= p89: 0<br/> > 0 <= p90: 0<br/> > 0 <= p91: 0<br/> > 0 <= p92: 0<br/> > 0 <= p93: 0<br/> > 0 <= p94: 0<br/> > 0 <= p95: 0<br/> > 0 <= p96: 0<br/> > 0 <= p97: 0<br/> > 0 <= p98: 0<br/> > 0 <= p99: 0<br/> > 0.000001 <= subset of level 3 constraint 0: 0.0 <= 0.000001<br/> > 0.000001 <= subset of level 3 constraint 1: 0.0 <= 0.000001<br/> > 0 <= subset of level 5 constraint 0: 0.0 <= 0<br/> > 0.700000 <= subset of level 3 constraint 2: 0.0 <= 0.700000<br/> > 0 <= integrityConstraint4: 0.0 <= 0<br/> > 0 <= subset of level 3 constraint 3: 0.0 <= 0<br/> > 0 <= integrityConstraint5: 0.0 <= 0<br/> > 0 <= integrityConstraint2: 0.0 <= 0<br/> > 0 <= integrityConstraint3: 0.0 <= 0<br/> > 0 <= integrityConstraint0: 0.0 <= 0<br/> > 0 <= integrityConstraint1: 0.0 <= 0<br/> > Objective: 0.0 (1.000000)<br/> > 1.000000 <= Normalization: 0.0 <= 1.000000<br/> > 0 <= subset of level 4 constraint 4: 0.0 <= 0<br/> > 0 <= subset of level 4 constraint 5: 0.0 <= 0<br/> > 0 <= subset of level 5 constraint 1: 0.0 <= 0<br/> > 0 <= subset of level 4 constraint 2: 0.0 <= 0<br/> > 0 <= subset of level 5 constraint 2: 0.0 <= 0<br/> > 0 <= subset of level 4 constraint 3: 0.0 <= 0<br/> > 0 <= subset of level 4 constraint 0: 0.0 <= 0<br/> > 0 <= subset of level 4 constraint 1: 0.0 <= 0<br/> > ############################################<br/> ><br/> ><br/> ><br/> > Gesendet: Mittwoch, 16. März 2016 um 11:12 Uhr<br/> > Von: "Anders Peterson" <an...@op...><br/> > An: oja...@li...<br/> > Betreff: Re: [ojAlgo-user] Behaviour of ExpressionBasedModel since OjAlgo37<br/> > The setLinearFactor and setQuadraticFactor methods are deprecated but still do what they’ve always done. You should change your code to use the new alternatives.<br/> ><br/> ><br/> > RE multiply, either you change:<br/> ><br/> > A.multiplyLeft(B) => B.multiply(A)<br/> ><br/> > or<br/> ><br/> > A.multiplyLeft(B) => A.multiplyLeft(B).get()<br/> ><br/> ><br/> ><br/> > RE your results with with v39.7:<br/> ><br/> > Since v37 the solvers have changed internally so I’m not very surprised that “someone” notices a change in behaviour. However all (previously existing) test cases related to convex optimisation pass! Unless you provide we with a test case I can’t do more. Your options are.<br/> ><br/> > 1) stick with v37<br/> > 2) experiment with ways to reformulate your models<br/> > 3) provide me with test cases that demonstrate your problem<br/> ><br/> > BTW I’m very surprised to hear that v39.7 fails to find a feasible solution.<br/> ><br/> > Modify your code to print each solver instance’ toString method and set a break point at when an infeasible solution is returned. That can’t be very hard to do.<br/> ><br/> ><br/> > /Anders<br/> ><br/> ><br/> ><br/> > > On 16 mars 2016, at 10:31, Nico Potyka <Nic...@gm...> wrote:<br/> > ><br/> > > Another thing: I just noticed that the methods setLinearFactor and setQuadraticFactor of Expression are deprecated now. Could the use of these methods cause problems?<br/> > ><br/> > ><br/> > ><br/> > > Gesendet: Mittwoch, 16. März 2016 um 10:27 Uhr<br/> > > Von: "Nico Potyka" <Nic...@gm...><br/> > > An: oja...@li...<br/> > > Betreff: Re: [ojAlgo-user] Behaviour of ExpressionBasedModel since OjAlgo37<br/> > > Just to make sure that there is not another problem: the matrix multiplication interface changed. So i replaced some lines with code like<br/> > ><br/> > > A.multiplyLeft(B)<br/> > ><br/> > > with<br/> > ><br/> > > B.multiply(A).<br/> > ><br/> > > Best wishes<br/> > > Nico<br/> > ><br/> > ><br/> > ><br/> > > Gesendet: Mittwoch, 16. März 2016 um 10:23 Uhr<br/> > > Von: "Nico Potyka" <Nic...@gm...><br/> > > An: oja...@li...<br/> > > Betreff: Re: [ojAlgo-user] Behaviour of ExpressionBasedModel since OjAlgo37<br/> > > Thanks, I tried it. Now the algorithms fails to find a feasible solution. However, the problem is guaranteed to be feasible and the algorithm from version 37 seems to find the correct solutions.<br/> > ><br/> > > Best<br/> > > Nico<br/> > ><br/> > ><br/> > ><br/> > > Gesendet: Dienstag, 15. März 2016 um 23:18 Uhr<br/> > > Von: "Anders Peterson" <an...@op...><br/> > > An: oja...@li...<br/> > > Betreff: Re: [ojAlgo-user] Behaviour of ExpressionBasedModel since OjAlgo37<br/> > > There is a new snapshot build v39.7 available at sourceforge:<br/> > ><br/> > > <a href="https://sourceforge.net/projects/ojalgo/files/ojAlgo/snapshot/" target="_blank">https://sourceforge.net/projects/ojalgo/files/ojAlgo/snapshot/</a><br/> > ><br/> > > Currently all test cases related to convex optimisation pass. Could you try it?<br/> > ><br/> > > /Anders<br/> > ><br/> > ><br/> > > > On 9 mars 2016, at 10:45, Nico Potyka <Nic...@gm...> wrote:<br/> > > ><br/> > > > Sorry, I forgot to turn validation off. After turning validation off, there is no exception and it often says KKT system unsolvable as you already suspected.<br/> > > ><br/> > > ><br/> > > > Gesendet: Mittwoch, 09. März 2016 um 10:39 Uhr<br/> > > > Von: "Nico Potyka" <Nic...@gm...><br/> > > > An: oja...@li...<br/> > > > Betreff: Re: [ojAlgo-user] Behaviour of ExpressionBasedModel since OjAlgo37<br/> > > > Thanks for all the hints. When I activate the debugging mode I actually get an exception:<br/> > > ><br/> > > > Exception in thread "main" java.lang.IllegalArgumentException: Q must be positive semidefinite!<br/> > > ><br/> > > > However, there is no exception without the debugging mode. I actually check the result for optimality with<br/> > > ><br/> > > > Result result = tmpModel.minimise();<br/> > > > if(result.getState() == Optimisation.State.OPTIMAL) {<br/> > > > ...<br/> > > ><br/> > > > So it seems that the solver regards the computed solutions indeed as optimal.<br/> > > ><br/> > > ><br/> > > > I would love to send you a simple test case, but the example is rather complex and I currently don't find time to extract<br/> > > > a straightforward example that shows this behaviour. You can find the project in the SVN repository<br/> > > ><br/> > > > ssh://svn.code.sf.net/p/kreator-ide/code/<br/> > > ><br/> > > > in the folder<br/> > > ><br/> > > > Software/Log4KR<br/> > > ><br/> > > > The test case is in the class<br/> > > ><br/> > > > /Log4KR/sourceExamples/edu/cs/ai/log4KR/structuredLogics/priorityReasoning/PriorityReasoningExamples.java<br/> > > ><br/> > > > The problematic optimization problem is defined in the class<br/> > > ><br/> > > > /Log4KR/src/edu/cs/ai/log4KR/structuredLogics/priorityReasoning/PriorityEntailment2Norm.java<br/> > > ><br/> > > > in the method initialize. The ExpressionBasedModel is initialized in line 87. If you want to try with this example,<br/> > > > I can give you more details. Then you might also want to check out revision 3911, which still contained Ojalgo37<br/> > > > and worked fine. Of course, I don't expect that you do because the example is rather complex. However, I will try to<br/> > > > find some time to extract a straightforward example.<br/> > > ><br/> > > > Best wishes<br/> > > > Nico<br/> > > ><br/> > > ><br/> > > ><br/> > > > Gesendet: Dienstag, 08. März 2016 um 12:59 Uhr<br/> > > > Von: "Anders Peterson" <an...@op...><br/> > > > An: oja...@li...<br/> > > > Betreff: Re: [ojAlgo-user] Behaviour of ExpressionBasedModel since OjAlgo37<br/> > > > When you do<br/> > > ><br/> > > > tmpModel.options.debug(ConvexSolver.class);<br/> > > ><br/> > > > it turns on debugging of that solver AND validation of the model/solver data.<br/> > > ><br/> > > > It’s very common that it actually is possible to solve a model even if validation fails, but then you have to turn validation off.<br/> > > ><br/> > > > tmpModel.options.validate = false;<br/> > > ><br/> > > ><br/> > > > With debugging ON and validation OFF what do you see in the log? Does it often say “KKT system unsolvable!”?<br/> > > ><br/> > > > Are the solutions you get feasible, but not (always) optimal?<br/> > > ><br/> > > ><br/> > > > I believe I found a glitch that could be the cause of your problems, and probably some code changes from a couple of versions back is (partly) the cause. This is not purely a bug - it’s a behaviour change that may affect some models. Even if my current guess/analysis is correct I’m not sure how to restore (your) previous behaviour. If nothing else, when this happens, the solver should not mark the returned solution as OPTIMAL but just FEASIBLE.<br/> > > ><br/> > > ><br/> > > > Still interested in getting some test case from you.<br/> > > ><br/> > > ><br/> > > > /Anders<br/> > > ><br/> > > ><br/> > > ><br/> > > > > On 3 mars 2016, at 14:04, Nico Potyka <Nic...@gm...> wrote:<br/> > > > ><br/> > > > > The problem is that the computed optimum differs significantly from the one computed with version 37. Actually the result computed with version 37 seems to be the correct one. I don't know if the solver's output will be of any help because the final solution is obtained by a sequence of quadratic optimization problems, where the optimum of one problem serves as a bound for the next problem and I am currently not sure at which stage the problem is caused. However, I will try to reconstruct the problem with a simpler example and send it to you.<br/> > > > ><br/> > > > > Best regards<br/> > > > > Nico<br/> > > > ><br/> > > > ><br/> > > > ><br/> > > > > Gesendet: Donnerstag, 03. März 2016 um 11:46 Uhr<br/> > > > > Von: "Anders Peterson" <an...@op...><br/> > > > > An: oja...@li...<br/> > > > > Betreff: Re: [ojAlgo-user] Behaviour of ExpressionBasedModel since OjAlgo37<br/> > > > > A common QP should be ok with v39.0 - I’d very much like to know what problems you have.<br/> > > > ><br/> > > > > Just set a breakpoint anywhere where you have a solver instance, and send me the output of the solver’s toString() method.<br/> > > > ><br/> > > > > If you can construct a test case using ExpressionsBasedModel, that would be better.<br/> > > > ><br/> > > > > /Anders<br/> > > > ><br/> > > > ><br/> > > > ><br/> > > > > > On 2 mars 2016, at 11:46, Nico Potyka <Nic...@gm...> wrote:<br/> > > > > ><br/> > > > > > No, it's a common constrained quadratic programming problem (quadratic objective function and linear inequalities). I will try to onstruct a simple test case that shows the error, but it will take some time.<br/> > > > > ><br/> > > > > > Thanks for the hints on debugging.<br/> > > > > ><br/> > > > > ><br/> > > > > ><br/> > > > > > Gesendet: Dienstag, 01. März 2016 um 23:51 Uhr<br/> > > > > > Von: "Anders Peterson" <an...@op...><br/> > > > > > An: oja...@li...<br/> > > > > > Betreff: Re: [ojAlgo-user] Behaviour of ExpressionBasedModel since OjAlgo37<br/> > > > > > Do you have integer variables?<br/> > > > > ><br/> > > > > > Do you use the v39.0 release one of the v39.X snapshots? (Really should be named v40-SNAPSHOT or something like that.)<br/> > > > > ><br/> > > > > > The new algorithm I mentioned earlier on this list is only in the snapshots, and it’s for QP (convex) problems only. v39.0 should be all improvements and no “experiments”.<br/> > > > > ><br/> > > > > > If you are using v39.0 and believe you get incorrect results I would appreciate it if you put together a test case (the smallest possible). Otherwise I don’t know how to help you.<br/> > > > > ><br/> > > > > > If you are running one of the snapshots and want to switch to the “old” algorithm you have to modify the build() method of the ConvexSolver.Builder class. In it you should replace IterativeMixedASS and IterativePureASS with DirectMixedASS and DirectPureASS respectively. Further I just uploaded a snapshot named v39.5, use that.<br/> > > > > ><br/> > > > > > Are you aware that you can get debug output from the solvers?<br/> > > > > > Do this:<br/> > > > > ><br/> > > > > > model.options.debug(ConvexSolver.class);<br/> > > > > ><br/> > > > > ><br/> > > > > > If you don’t have any other way to construct a test case, you can try this:<br/> > > > > ><br/> > > > > > Running in a debugger; set a breakpoint in the solve(…) method of ExpressionsBasdModel right after the solver has been instantiated. If you simply “select” the local variable tmpSolver the debugger will display its toString() output - it will print the matrices used by the solver. I can construct test cases from that relatively easy.<br/> > > > > ><br/> > > > > ><br/> > > > > > /Anders<br/> > > > > ><br/> > > > > ><br/> > > > > > > On 1 mars 2016, at 17:01, Nico Potyka <Nic...@gm...> wrote:<br/> > > > > > ><br/> > > > > > > Hi everybody,<br/> > > > > > ><br/> > > > > > > I use OjAlgo's ExpressionBasedModel to solve some quadratic programming problems. It worked really well in version 37, but I noted some strange behaviour after switching to version 38.2. The ExpressionBasedModel behaved highly non-deterministically in the sense that the same problem can sometimes be solved optimally, sometimes only approximately and sometimes cannot be solved at all. In fact, even when the solution is supposed to be optimal, the results can differ significantly (like more than 100% deviation). After realizing that these problems were caused by the change of version, I switched to version 39. Now the ExpressionBasedModel behaves completely deterministically, but I still get some weird results. I suppose that these problems are related to the new algorithm in ojAlgo. Is there a way to use the old algorithm?<br/> > > > > > ><br/> > > > > > > I could also send the example if it helps for debugging. However, it is part of a bigger project and depends on several other classes, so it might be too complicated.<br/> > > > > > ><br/> > > > > > > Best<br/> > > > > > > Nico<br/> > > > > > > ------------------------------------------------------------------------------<br/> > > > > > > Site24x7 APM Insight: Get Deep Visibility into Application Performance<br/> > > > > > > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month<br/> > > > > > > Monitor end-to-end web transactions and take corrective actions now<br/> > > > > > > Troubleshoot faster and improve end-user experience. Signup Now!<br/> > > > > > > <a href="http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140_______________________________________________" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140_______________________________________________</a><br/> > > > > > > ojAlgo-user mailing list<br/> > > > > > > ojA...@li...<br/> > > > > > > <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> > > > > ><br/> > > > > ><br/> > > > > > ------------------------------------------------------------------------------<br/> > > > > > Site24x7 APM Insight: Get Deep Visibility into Application Performance<br/> > > > > > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month<br/> > > > > > Monitor end-to-end web transactions and take corrective actions now<br/> > > > > > Troubleshoot faster and improve end-user experience. Signup Now!<br/> > > > > > <a href="http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140</a><br/> > > > > > _______________________________________________<br/> > > > > > ojAlgo-user mailing list<br/> > > > > > ojA...@li...<br/> > > > > > <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> > > > > > ------------------------------------------------------------------------------<br/> > > > > > Site24x7 APM Insight: Get Deep Visibility into Application Performance<br/> > > > > > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month<br/> > > > > > Monitor end-to-end web transactions and take corrective actions now<br/> > > > > > Troubleshoot faster and improve end-user experience. Signup Now!<br/> > > > > > <a href="http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140_______________________________________________" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140_______________________________________________</a><br/> > > > > > ojAlgo-user mailing list<br/> > > > > > ojA...@li...<br/> > > > > > <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> > > > ><br/> > > > ><br/> > > > > ------------------------------------------------------------------------------<br/> > > > > Site24x7 APM Insight: Get Deep Visibility into Application Performance<br/> > > > > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month<br/> > > > > Monitor end-to-end web transactions and take corrective actions now<br/> > > > > Troubleshoot faster and improve end-user experience. Signup Now!<br/> > > > > <a href="http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140</a><br/> > > > > _______________________________________________<br/> > > > > ojAlgo-user mailing list<br/> > > > > ojA...@li...<br/> > > > > <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> > > > > ------------------------------------------------------------------------------<br/> > > > > Site24x7 APM Insight: Get Deep Visibility into Application Performance<br/> > > > > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month<br/> > > > > Monitor end-to-end web transactions and take corrective actions now<br/> > > > > Troubleshoot faster and improve end-user experience. Signup Now!<br/> > > > > <a href="http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140_______________________________________________" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140_______________________________________________</a><br/> > > > > ojAlgo-user mailing list<br/> > > > > ojA...@li...<br/> > > > > <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> > > ><br/> > > ><br/> > > > ------------------------------------------------------------------------------<br/> > > > Transform Data into Opportunity.<br/> > > > Accelerate data analysis in your applications with<br/> > > > Intel Data Analytics Acceleration Library.<br/> > > > Click to learn more.<br/> > > > <a href="http://makebettercode.com/inteldaal-eval" target="_blank">http://makebettercode.com/inteldaal-eval</a><br/> > > > _______________________________________________<br/> > > > ojAlgo-user mailing list<br/> > > > ojA...@li...<br/> > > > <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> > > > ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. <a href="http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140_______________________________________________" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140_______________________________________________</a> ojAlgo-user mailing list ojA...@li... <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> > > > ------------------------------------------------------------------------------<br/> > > > Transform Data into Opportunity.<br/> > > > Accelerate data analysis in your applications with<br/> > > > Intel Data Analytics Acceleration Library.<br/> > > > Click to learn more.<br/> > > > <a href="http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140_______________________________________________" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140_______________________________________________</a><br/> > > > ojAlgo-user mailing list<br/> > > > ojA...@li...<br/> > > > <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> > ><br/> > ><br/> > > ------------------------------------------------------------------------------<br/> > > Transform Data into Opportunity.<br/> > > Accelerate data analysis in your applications with<br/> > > Intel Data Analytics Acceleration Library.<br/> > > Click to learn more.<br/> > > <a href="http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140</a><br/> > > _______________________________________________<br/> > > ojAlgo-user mailing list<br/> > > ojA...@li...<br/> > > <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> > > ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. <a href="http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140_______________________________________________" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140_______________________________________________</a> ojAlgo-user mailing list ojA...@li... <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> > > ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. <a href="http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140_______________________________________________" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140_______________________________________________</a> ojAlgo-user mailing list ojA...@li... <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> > > ------------------------------------------------------------------------------<br/> > > Transform Data into Opportunity.<br/> > > Accelerate data analysis in your applications with<br/> > > Intel Data Analytics Acceleration Library.<br/> > > Click to learn more.<br/> > > <a href="http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140_______________________________________________" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140_______________________________________________</a><br/> > > ojAlgo-user mailing list<br/> > > ojA...@li...<br/> > > <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> ><br/> ><br/> > ------------------------------------------------------------------------------<br/> > Transform Data into Opportunity.<br/> > Accelerate data analysis in your applications with<br/> > Intel Data Analytics Acceleration Library.<br/> > Click to learn more.<br/> > <a href="http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140</a><br/> > _______________________________________________<br/> > ojAlgo-user mailing list<br/> > ojA...@li...<br/> > <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> > ------------------------------------------------------------------------------<br/> > Transform Data into Opportunity.<br/> > Accelerate data analysis in your applications with<br/> > Intel Data Analytics Acceleration Library.<br/> > Click to learn more.<br/> > <a href="http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140_______________________________________________" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140_______________________________________________</a><br/> > ojAlgo-user mailing list<br/> > ojA...@li...<br/> > <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a><br/> <br/> <br/> ------------------------------------------------------------------------------<br/> Transform Data into Opportunity.<br/> Accelerate data analysis in your applications with<br/> Intel Data Analytics Acceleration Library.<br/> Click to learn more.<br/> <a href="http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140" target="_blank">http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140</a><br/> _______________________________________________<br/> ojAlgo-user mailing list<br/> ojA...@li...<br/> <a href="https://lists.sourceforge.net/lists/listinfo/ojalgo-user" target="_blank">https://lists.sourceforge.net/lists/listinfo/ojalgo-user</a></div> </div> </div> </div></div></body></html> |