「수리계획법~선형계획법~」을 참고로 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
Reference
이 문제에 관하여(「수리계획법~선형계획법~」을 참고로 matplotlib와 WolframAlpha로 해보고 싶다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mrrclb48z/items/c706d90a9ef8aabd0005
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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()
정수해:
{{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
Reference
이 문제에 관하여(「수리계획법~선형계획법~」을 참고로 matplotlib와 WolframAlpha로 해보고 싶다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mrrclb48z/items/c706d90a9ef8aabd0005텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)