Searching extreme points of polyhedron Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Prime factorization of a numberStrange performance differenceCase study with a biological populations: a list of lists of listsShakespeare and dictionariesPoints and segments solutionFaster way to loop through array of points and find if within polygonsEfficiently determine every factor of a given natural number2D Perlin noise generaton needs PerfomancePython 3 text adventure gameEfficiently determining maximum allowed euclidean distance between lists of colors

3D Masyu - A Die

How to ask rejected full-time candidates to apply to teach individual courses?

Where and when has Thucydides been studied?

Statistical analysis applied to methods coming out of Machine Learning

How to make triangles with rounded sides and corners? (squircle with 3 sides)

How to make an animal which can only breed for a certain number of generations?

What was the last profitable war?

Why are current probes so expensive?

As a dual citizen, my US passport will expire one day after traveling to the US. Will this work?

By what mechanism was the 2017 UK General Election called?

Why did Bronn offer to be Tyrion Lannister's champion in trial by combat?

Is this Half dragon Quaggoth Balanced

Determine whether an integer is a palindrome

Is there a verb for listening stealthily?

latest version of QGIS fails to edit attribute table of GeoJSON file

The test team as an enemy of development? And how can this be avoided?

.bashrc alias for a command with fixed second parameter

Did pre-Columbian Americans know the spherical shape of the Earth?

Is the time—manner—place ordering of adverbials an oversimplification?

How do Java 8 default methods hеlp with lambdas?

systemd and copy (/bin/cp): no such file or directory

What did Turing mean when saying that "machines cannot give rise to surprises" is due to a fallacy?

Why BitLocker does not use RSA

First paper to introduce the "principal-agent problem"



Searching extreme points of polyhedron



Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Prime factorization of a numberStrange performance differenceCase study with a biological populations: a list of lists of listsShakespeare and dictionariesPoints and segments solutionFaster way to loop through array of points and find if within polygonsEfficiently determine every factor of a given natural number2D Perlin noise generaton needs PerfomancePython 3 text adventure gameEfficiently determining maximum allowed euclidean distance between lists of colors



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








0












$begingroup$


In my Uni, my scientific professor asked me to make some researches about the extreme points of polyhedrals. And I did them. I found that there is still no code in public for searching extreme points for polyhedral with n dimensions (n - x's), but polyhedrons are everywhere (CV, game theories, etc.). I wrote a function for this task and made a python library (also there are matrix and array combination maker functions).



All I want is to make this code more optimal and compatible for all python versions (I have some troubles that some times happen when I install it by "pip install lin", but other times no). I want to make the life of people easier and make it more comfortable.



I am asking for you to test this function on your computer and write if you have any bugs, fails or thoughts on how to make it better. I am open to constructive criticism and non-constructive too (it will help to understand if somebody needs it or that is just a waste of time).



All the examples, instructions and code on my github: https://github.com/r4ndompuff/polyhedral_set



Code:



import numpy as np
import itertools as it
import math
import re

def permutation(m,n):
return math.factorial(n)/(math.factorial(n-m)*math.factorial(m))

def matrix_combinations(matr,n):
timed = list(map(list, it.combinations(matr, n)))
for i in range(n):
timed[i][i][i] = np.asscalar(timed[i][i][i])
all = np.array(list(timed))
return all

def array_combinations(arr,n):
timed = list(map(list, it.combinations(arr, n)))
for i in range(n):
timed[i][i] = np.asscalar(timed[i][i])
all = np.array(list(timed))
return all

def check_extreme(matr, arr, x, sym_comb, m):
sym_comb = sym_comb.replace(']', '')
sym_comb = sym_comb.replace('[', '')
sym_comb = re.split("[ ,]", sym_comb)
for i in range(m):
td_answer = sum(matr[i]*x)
if sym_comb[i] == '>':
if td_answer <= arr[i]:
return 0
elif sym_comb[i] == '>=':
if td_answer < arr[i]:
return 0
elif sym_comb[i] == '<':
if td_answer >= arr[i]:
return 0
elif sym_comb[i] == '<=':
if td_answer > arr[i]:
return 0
elif sym_comb[i] == '=':
if td_answer != arr[i]:
return 0
elif sym_comb[i] == '!=':
if td_answer == arr[i]:
return 0
else:
return 0
return 1

def extreme_points(m,n,A,b,sym_comb):
# Input
A = np.array(A).reshape(m,n)
b = np.array(b).reshape(m,1)
# Proccess
ans_comb = np.zeros((1,n))
arr_comb = array_combinations(b,n)
matr_comb = matrix_combinations(A,n)
for i in range(int(permutation(n,m))):
if np.linalg.det(matr_comb[i]) != 0:
x = np.linalg.solve(matr_comb[i],arr_comb[i])
ans_comb = np.vstack([ans_comb,x])
ans_comb = np.delete(ans_comb, (0), axis=0)
j = 0
for i in range(len(ans_comb)):
if check_extreme(A, b, ans_comb[j], sym_comb, m):
ans_comb = ans_comb
j = j + 1
else:
ans_comb = np.delete(ans_comb, (j), axis=0)
# Output
return ans_comb


And I am uploading some more tests. https://imgur.com/mjweDyy









share







New contributor




Andrey Lovyagin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$


















    0












    $begingroup$


    In my Uni, my scientific professor asked me to make some researches about the extreme points of polyhedrals. And I did them. I found that there is still no code in public for searching extreme points for polyhedral with n dimensions (n - x's), but polyhedrons are everywhere (CV, game theories, etc.). I wrote a function for this task and made a python library (also there are matrix and array combination maker functions).



    All I want is to make this code more optimal and compatible for all python versions (I have some troubles that some times happen when I install it by "pip install lin", but other times no). I want to make the life of people easier and make it more comfortable.



    I am asking for you to test this function on your computer and write if you have any bugs, fails or thoughts on how to make it better. I am open to constructive criticism and non-constructive too (it will help to understand if somebody needs it or that is just a waste of time).



    All the examples, instructions and code on my github: https://github.com/r4ndompuff/polyhedral_set



    Code:



    import numpy as np
    import itertools as it
    import math
    import re

    def permutation(m,n):
    return math.factorial(n)/(math.factorial(n-m)*math.factorial(m))

    def matrix_combinations(matr,n):
    timed = list(map(list, it.combinations(matr, n)))
    for i in range(n):
    timed[i][i][i] = np.asscalar(timed[i][i][i])
    all = np.array(list(timed))
    return all

    def array_combinations(arr,n):
    timed = list(map(list, it.combinations(arr, n)))
    for i in range(n):
    timed[i][i] = np.asscalar(timed[i][i])
    all = np.array(list(timed))
    return all

    def check_extreme(matr, arr, x, sym_comb, m):
    sym_comb = sym_comb.replace(']', '')
    sym_comb = sym_comb.replace('[', '')
    sym_comb = re.split("[ ,]", sym_comb)
    for i in range(m):
    td_answer = sum(matr[i]*x)
    if sym_comb[i] == '>':
    if td_answer <= arr[i]:
    return 0
    elif sym_comb[i] == '>=':
    if td_answer < arr[i]:
    return 0
    elif sym_comb[i] == '<':
    if td_answer >= arr[i]:
    return 0
    elif sym_comb[i] == '<=':
    if td_answer > arr[i]:
    return 0
    elif sym_comb[i] == '=':
    if td_answer != arr[i]:
    return 0
    elif sym_comb[i] == '!=':
    if td_answer == arr[i]:
    return 0
    else:
    return 0
    return 1

    def extreme_points(m,n,A,b,sym_comb):
    # Input
    A = np.array(A).reshape(m,n)
    b = np.array(b).reshape(m,1)
    # Proccess
    ans_comb = np.zeros((1,n))
    arr_comb = array_combinations(b,n)
    matr_comb = matrix_combinations(A,n)
    for i in range(int(permutation(n,m))):
    if np.linalg.det(matr_comb[i]) != 0:
    x = np.linalg.solve(matr_comb[i],arr_comb[i])
    ans_comb = np.vstack([ans_comb,x])
    ans_comb = np.delete(ans_comb, (0), axis=0)
    j = 0
    for i in range(len(ans_comb)):
    if check_extreme(A, b, ans_comb[j], sym_comb, m):
    ans_comb = ans_comb
    j = j + 1
    else:
    ans_comb = np.delete(ans_comb, (j), axis=0)
    # Output
    return ans_comb


    And I am uploading some more tests. https://imgur.com/mjweDyy









    share







    New contributor




    Andrey Lovyagin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.







    $endgroup$














      0












      0








      0





      $begingroup$


      In my Uni, my scientific professor asked me to make some researches about the extreme points of polyhedrals. And I did them. I found that there is still no code in public for searching extreme points for polyhedral with n dimensions (n - x's), but polyhedrons are everywhere (CV, game theories, etc.). I wrote a function for this task and made a python library (also there are matrix and array combination maker functions).



      All I want is to make this code more optimal and compatible for all python versions (I have some troubles that some times happen when I install it by "pip install lin", but other times no). I want to make the life of people easier and make it more comfortable.



      I am asking for you to test this function on your computer and write if you have any bugs, fails or thoughts on how to make it better. I am open to constructive criticism and non-constructive too (it will help to understand if somebody needs it or that is just a waste of time).



      All the examples, instructions and code on my github: https://github.com/r4ndompuff/polyhedral_set



      Code:



      import numpy as np
      import itertools as it
      import math
      import re

      def permutation(m,n):
      return math.factorial(n)/(math.factorial(n-m)*math.factorial(m))

      def matrix_combinations(matr,n):
      timed = list(map(list, it.combinations(matr, n)))
      for i in range(n):
      timed[i][i][i] = np.asscalar(timed[i][i][i])
      all = np.array(list(timed))
      return all

      def array_combinations(arr,n):
      timed = list(map(list, it.combinations(arr, n)))
      for i in range(n):
      timed[i][i] = np.asscalar(timed[i][i])
      all = np.array(list(timed))
      return all

      def check_extreme(matr, arr, x, sym_comb, m):
      sym_comb = sym_comb.replace(']', '')
      sym_comb = sym_comb.replace('[', '')
      sym_comb = re.split("[ ,]", sym_comb)
      for i in range(m):
      td_answer = sum(matr[i]*x)
      if sym_comb[i] == '>':
      if td_answer <= arr[i]:
      return 0
      elif sym_comb[i] == '>=':
      if td_answer < arr[i]:
      return 0
      elif sym_comb[i] == '<':
      if td_answer >= arr[i]:
      return 0
      elif sym_comb[i] == '<=':
      if td_answer > arr[i]:
      return 0
      elif sym_comb[i] == '=':
      if td_answer != arr[i]:
      return 0
      elif sym_comb[i] == '!=':
      if td_answer == arr[i]:
      return 0
      else:
      return 0
      return 1

      def extreme_points(m,n,A,b,sym_comb):
      # Input
      A = np.array(A).reshape(m,n)
      b = np.array(b).reshape(m,1)
      # Proccess
      ans_comb = np.zeros((1,n))
      arr_comb = array_combinations(b,n)
      matr_comb = matrix_combinations(A,n)
      for i in range(int(permutation(n,m))):
      if np.linalg.det(matr_comb[i]) != 0:
      x = np.linalg.solve(matr_comb[i],arr_comb[i])
      ans_comb = np.vstack([ans_comb,x])
      ans_comb = np.delete(ans_comb, (0), axis=0)
      j = 0
      for i in range(len(ans_comb)):
      if check_extreme(A, b, ans_comb[j], sym_comb, m):
      ans_comb = ans_comb
      j = j + 1
      else:
      ans_comb = np.delete(ans_comb, (j), axis=0)
      # Output
      return ans_comb


      And I am uploading some more tests. https://imgur.com/mjweDyy









      share







      New contributor




      Andrey Lovyagin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.







      $endgroup$




      In my Uni, my scientific professor asked me to make some researches about the extreme points of polyhedrals. And I did them. I found that there is still no code in public for searching extreme points for polyhedral with n dimensions (n - x's), but polyhedrons are everywhere (CV, game theories, etc.). I wrote a function for this task and made a python library (also there are matrix and array combination maker functions).



      All I want is to make this code more optimal and compatible for all python versions (I have some troubles that some times happen when I install it by "pip install lin", but other times no). I want to make the life of people easier and make it more comfortable.



      I am asking for you to test this function on your computer and write if you have any bugs, fails or thoughts on how to make it better. I am open to constructive criticism and non-constructive too (it will help to understand if somebody needs it or that is just a waste of time).



      All the examples, instructions and code on my github: https://github.com/r4ndompuff/polyhedral_set



      Code:



      import numpy as np
      import itertools as it
      import math
      import re

      def permutation(m,n):
      return math.factorial(n)/(math.factorial(n-m)*math.factorial(m))

      def matrix_combinations(matr,n):
      timed = list(map(list, it.combinations(matr, n)))
      for i in range(n):
      timed[i][i][i] = np.asscalar(timed[i][i][i])
      all = np.array(list(timed))
      return all

      def array_combinations(arr,n):
      timed = list(map(list, it.combinations(arr, n)))
      for i in range(n):
      timed[i][i] = np.asscalar(timed[i][i])
      all = np.array(list(timed))
      return all

      def check_extreme(matr, arr, x, sym_comb, m):
      sym_comb = sym_comb.replace(']', '')
      sym_comb = sym_comb.replace('[', '')
      sym_comb = re.split("[ ,]", sym_comb)
      for i in range(m):
      td_answer = sum(matr[i]*x)
      if sym_comb[i] == '>':
      if td_answer <= arr[i]:
      return 0
      elif sym_comb[i] == '>=':
      if td_answer < arr[i]:
      return 0
      elif sym_comb[i] == '<':
      if td_answer >= arr[i]:
      return 0
      elif sym_comb[i] == '<=':
      if td_answer > arr[i]:
      return 0
      elif sym_comb[i] == '=':
      if td_answer != arr[i]:
      return 0
      elif sym_comb[i] == '!=':
      if td_answer == arr[i]:
      return 0
      else:
      return 0
      return 1

      def extreme_points(m,n,A,b,sym_comb):
      # Input
      A = np.array(A).reshape(m,n)
      b = np.array(b).reshape(m,1)
      # Proccess
      ans_comb = np.zeros((1,n))
      arr_comb = array_combinations(b,n)
      matr_comb = matrix_combinations(A,n)
      for i in range(int(permutation(n,m))):
      if np.linalg.det(matr_comb[i]) != 0:
      x = np.linalg.solve(matr_comb[i],arr_comb[i])
      ans_comb = np.vstack([ans_comb,x])
      ans_comb = np.delete(ans_comb, (0), axis=0)
      j = 0
      for i in range(len(ans_comb)):
      if check_extreme(A, b, ans_comb[j], sym_comb, m):
      ans_comb = ans_comb
      j = j + 1
      else:
      ans_comb = np.delete(ans_comb, (j), axis=0)
      # Output
      return ans_comb


      And I am uploading some more tests. https://imgur.com/mjweDyy







      python algorithm





      share







      New contributor




      Andrey Lovyagin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.










      share







      New contributor




      Andrey Lovyagin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.








      share



      share






      New contributor




      Andrey Lovyagin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 1 min ago









      Andrey LovyaginAndrey Lovyagin

      1




      1




      New contributor




      Andrey Lovyagin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Andrey Lovyagin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Andrey Lovyagin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.




















          0






          active

          oldest

          votes












          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "196"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );






          Andrey Lovyagin is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f217855%2fsearching-extreme-points-of-polyhedron%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          Andrey Lovyagin is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          Andrey Lovyagin is a new contributor. Be nice, and check out our Code of Conduct.












          Andrey Lovyagin is a new contributor. Be nice, and check out our Code of Conduct.











          Andrey Lovyagin is a new contributor. Be nice, and check out our Code of Conduct.














          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f217855%2fsearching-extreme-points-of-polyhedron%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

          格濟夫卡 參考資料 导航菜单51°3′40″N 34°2′21″E / 51.06111°N 34.03917°E / 51.06111; 34.03917ГезівкаПогода в селі 编辑或修订