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, ‫אוריאל מליחי‬‎ <orielm...@gmail.com> 
> 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, ‫אוריאל מליחי‬‎ <orielm...@gmail.com> 
> 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 oscar.gu...@gmail.com 
> wrote:
> >>>>
> >>>> Den tors 18 feb. 2021 kl 14:36 skrev Oscar Benjamin <
> oscar.j....@gmail.com>:
> >>>>>
> >>>>> On Thu, 18 Feb 2021 at 11:32, Oscar Gustafsson
> >>>>> <oscar.gu...@gmail.com> 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 sympy+un...@googlegroups.com.
> >>>
> >>> 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 sympy+un...@googlegroups.com.
> > 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 sympy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/50937a32-8764-4380-b941-efb5fb1864ben%40googlegroups.com.

Reply via email to