「수리계획법~선형계획법~」을 참고로 matplotlib와 WolframAlpha로 해보고 싶다.

(오리지널 포스트)
htps : // 이 m/모모 10/이고 ms/824c2fd8아0f432아676f4

(참고) 선형 계획법 초입문
htps : // 이 m / 다 08 / ms / 1 1fb9dc766d1c8fd0

작업 중입니다. 정수에만 대응합니다. 공부중. 쉽게 3D 표시할 수 있습니까?
조언을 받으면 도움이됩니다.
완성형?을 찾고 있습니다. 잘 부탁드립니다.

matplotlib에서 시도하고 싶습니다.




from sympy import *
import numpy as np
import matplotlib.pyplot as plt

var('problem x y')
var('x1 x2')
problem = -5 * x1 - 4 * x2
mymax = 10
x = np.linspace(0, mymax, mymax + 1)
y1 = (30 - 5 * x) / 2
y2 = (14 - x) / 2
y3 = np.zeros_like(x)
y4 = np.minimum(y1, y2)
plt.figure()
plt.plot(x, y1, label="mikannsei")
plt.plot(x, y1, label="5*x1 + 2*x2 <=30")
plt.plot(x, y2, label="1*x1 + 2*x2 <=14")
plt.plot(x, y2, label=str(problem) + " GOKEI")
plt.fill_between(x, y3, y4, where=y4 >= y3, facecolor='yellow', alpha=0.3)
plt.ylim(0, 8.5)
plt.xlim(0, 4.5)
plt.legend(loc=0)
plt.xticks(np.arange(0, mymax + 2, 1))
plt.yticks(np.arange(0, mymax + 2, 1))
plt.gca().set_aspect('equal')
plt.grid()
for i in range(8):
    for j in range(8):
        if 5 * i + 2 * j <= 30 and i + 2 * j <= 14:
            plt.text(i, j, -5 * i - 4 * j)
plt.show()

WolframAlpha에서 해보고 싶습니다.



정수해:
{{x == 0, y == 0}, {x == 0, y == 1}, {x == 0, y == 2}, {x == 0, y == 3}, { x == 0, y == 4}, {x == 0, y == 5}, {x == 0, y == 6}, {x == 0, y == 7}, {x = = 1, y == 0}, {x == 1, y == 1}, {x == 1, y == 2}, {x == 1, y == 3}, {x == 1 , y == 4}, {x == 1, y == 5}, {x == 1, y == 6}, {x == 2, y == 0}, {x == 2, y == 1}, {x == 2, y == 2}, {x == 2, y == 3}, {x == 2, y == 4}, {x == 2, y == 5}, {x == 2, y == 6}, {x == 3, y == 0}, {x == 3, y == 1}, {x == 3, y == 2} , {x == 3, y == 3}, {x == 3, y == 4}, {x == 3, y == 5}, {x == 4, y == 0}, { x == 4, y == 1}, {x == 4, y == 2}, {x == 4, y == 3}, {x == 4, y == 4}, {x = = 4, y == 5}, {x == 5, y == 0}, {x == 5, y == 1}, {x == 5, y == 2}}

정수 솔루션의 수:
38

좋은 웹페이지 즐겨찾기