Great! There seems to have been some kind of git problem so that the changes in the PR are not as intended though...
I left a comment at the PR: https://github.com/sympy/sympy/pull/21673 Let's continue the discussion there. Oscar On Sun, 27 Jun 2021 at 19:49, אוריאל מליחי <[email protected]> wrote: > > ok. > I made a pull request for the linear programing solver and I did not add the > inequalities functions in the commit for now. > The pull request number is #21673 > waiting for your aproval/corrections. > thank you! > > On Sunday, 20 June 2021 at 22:33:16 UTC+3 Oscar wrote: >> >> Okay, that code looks good. It will also need docs and tests. >> >> I suggest first trying to add the smallest part of this to sympy. Then >> other parts can be added one step at a time. >> >> The question is what is the smallest part that is useful on its own. >> Is that the simplex function? >> >> If you open a pull request to add that to sympy then you can get some >> feedback on it and make further changes until it is ready. Once that >> part is merged you will have a better idea how to prepare the other >> parts for inclusion into sympy. >> >> Another question is performance. I expect that in practice the most >> important part of the performance of this method is being able to >> handle large sparse systems of mostly unrelated inequalities so being >> able to separate a system using sparse techniques to reduce the size >> of the problem will make the method much faster in common usage. >> >> Oscar >> >> On Sat, 19 Jun 2021 at 21:31, אוריאל מליחי <[email protected]> wrote: >> > >> > Yes, my code is viewable in here- >> > https://github.com/orielmalihi/Final-Project/blob/main/my%20functions/inequalities%20functions.py >> > >> > On Friday, 18 June 2021 at 00:09:11 UTC+3 Oscar wrote: >> >> >> >> That's great. I suggest not trying to add everything at once. Probably >> >> some changes will need to be made and there are other steps like tests >> >> and so on that would need to be added if there aren't already tests in >> >> the right format. >> >> >> >> Is your code publicly viewable already? For example if you put it in a >> >> github repo/gist then you can send a link here. >> >> >> >> Oscar >> >> >> >> On Thu, 17 Jun 2021 at 20:17, אוריאל מליחי <[email protected]> >> >> wrote: >> >>> >> >>> Hello everyone! >> >>> >> >>> I finally completed implementing these functions. >> >>> >> >>> Quick reminder: >> >>> The main function is called is_implied_by and it gets a set of linear >> >>> inequalities and a target linear inequality and return whether the >> >>> target is implied by the set or not. >> >>> >> >>> Two other functions are find_values_interval and >> >>> simplify_linear_inequalities. >> >>> >> >>> find_values_interval gets a set of linear inequalities and a target >> >>> expression (expr) and returns an interval of [min possible value for >> >>> expr, max possible value for expr]. >> >>> >> >>> simplify_linear_inequalities gets a set of linear inequalities and >> >>> returns a simplified set (redundant inequalities are removed). >> >>> >> >>> Now I would like to know what are the next steps for me to do in order >> >>> to get my implementation into sympy. This is my first time contributing >> >>> so detailed explanation would be really helpful. >> >>> >> >>> >> >>> >> >>> On Thursday, 18 February 2021 at 18:28:38 UTC+2 [email protected] >> >>> wrote: >> >>>> >> >>>> Den tors 18 feb. 2021 kl 14:36 skrev Oscar Benjamin >> >>>> <[email protected]>: >> >>>>> >> >>>>> On Thu, 18 Feb 2021 at 11:32, Oscar Gustafsson >> >>>>> <[email protected]> wrote: >> >>>>> > >> >>>>> > After currently using Mathematica for similar things, I would just >> >>>>> > like to encourage you to provide some nice method to simplify >> >>>>> > constraints of piecewise functions using your simplifier, including >> >>>>> > additional constraints on the range of variables (as SymPy doesn't >> >>>>> > have a way to put ranges on variables). That doesn't really exist in >> >>>>> > Mathematica (Assuming[..., Simplify[piecewise]) doesn't always seems >> >>>>> > to simplify as far as possible). >> >>>>> > >> >>>>> > Something like >> >>>>> > simplify_piecewise_range(piecewisefunction, common_constraints) >> >>>>> > That adds the common_constraints to each region constraint and >> >>>>> > applies your method. (Possibly, optionally, removing the >> >>>>> > common_constraints from the final regions if feasible.) >> >>>>> >> >>>>> I imagined that this would be something that the new assumptions could >> >>>>> handle in refine. Something like: >> >>>>> >> >>>>> p = Piecewise((x, x < 1), (x**2, True)) >> >>>>> p = refine(p, abs(x) < 1) >> >>>>> >> >>>>> The idea would then be that e.g. when you have Integral(f, (x, a, b)) >> >>>>> then the integration routine can do >> >>>>> >> >>>>> f = refine(f, (a < x) & (x < b)) >> >>>> >> >>>> Yes, a different assumption system will also do the trick. But until >> >>>> that is in place, this would be a useful short-cut for a specific use >> >>>> case. >> >>>> >> >>>> >> >>>>> > There is an old PR which may be useful to revive in relation to >> >>>>> > this: https://github.com/sympy/sympy/pull/17443 although sort of >> >>>>> > independent. >> >>>>> > >> >>>>> > It will also be useful to have a function that can replace Min/Max >> >>>>> > expressions with linear inequalities (and possibly back again). >> >>>>> > Right now there is some logic to convert from linear inequalites to >> >>>>> > Min/Max, but not back. As far as I recall. (There may be a PR doing >> >>>>> > the Min/Max to linear as well, but not really sure.) >> >>>>> >> >>>>> Is this what you mean? >> >>>>> >> >>>>> In [1]: Min(x, y).rewrite(Piecewise) >> >>>>> Out[1]: >> >>>>> ⎧x for x ≤ y >> >>>>> ⎨ >> >>>>> ⎩y otherwise >> >>>>> >> >>>>> Perhaps there could be a rewrite(Max) for Piecewise. >> >>>>> >> >>>> I seem to recall that I did something that rewrote/simplified, probably >> >>>> as part of the pattern based logic simplification, >> >>>> And(x <= y, x <= z) >> >>>> to >> >>>> x <= Min(y, z) >> >>>> >> >>>> At some later stage I realized it was sometimes a bad idea (as the >> >>>> logic simplification sometimes worked better without the Min/Max, do >> >>>> not recall exactly) and I sort of regretted introducing that rewrite, >> >>>> but cannot recall if the reverse operation was ever introduced. >> >>>> Piecewise may work though, but I believe that for the linear inequality >> >>>> simplifier it may be better to rewrite x <= Min(y, z) back to And(x <= >> >>>> y, x <= z) . >> >>>> >> >>>> BR Oscar >> >>>> >> >>> -- >> >>> You received this message because you are subscribed to the Google >> >>> Groups "sympy" group. >> >>> To unsubscribe from this group and stop receiving emails from it, send >> >>> an email to [email protected]. >> >>> >> >>> To view this discussion on the web visit >> >>> https://groups.google.com/d/msgid/sympy/07668755-217b-4487-805d-1faefd70191bn%40googlegroups.com. >> > >> > -- >> > You received this message because you are subscribed to the Google Groups >> > "sympy" group. >> > To unsubscribe from this group and stop receiving emails from it, send an >> > email to [email protected]. >> > To view this discussion on the web visit >> > https://groups.google.com/d/msgid/sympy/6ae5a93d-5976-479d-ad87-017a0c82b603n%40googlegroups.com. > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/50937a32-8764-4380-b941-efb5fb1864ben%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAHVvXxRSaQHxVYYe9VknEN2qmzBPgY3E3QP0njeduNKXj57TMA%40mail.gmail.com.
