Pythonで使用できる最適化ライブラリの1つを、(混在した)整数プログラミングよりも使用できます。ゴーグル検索を行い、多くを見つけるでしょう。あなたの問題は凸であるので、cvxpy
はそれらの多くの素晴らしいインターフェースとして使用できます。 |ここで私は、関連するソリューション解決合計と思いついたの(大規模な問題のために、非常に効率的ではないかもしれない)内蔵の整数計画ソルバー
import numpy as np
import cvxpy
np.random.seed(123) # for reproducability
# generate A and y
m, n = 10, 10
A = np.random.randn(m,n)
y = np.random.randn(m)
# declare the integer-valued optimization variable
x = cvxpy.Int(n)
# set up the L2-norm minimization problem
obj = cvxpy.Minimize(cvxpy.norm(A * x - y, 2))
prob = cvxpy.Problem(obj)
# solve the problem using an appropriate solver
sol = prob.solve(solver = 'ECOS_BB')
# the optimal value of x is
print(x.value)
[[-13.]
[ -3.]
[ 3.]
[ 6.]
[ 1.]
[ -5.]
[ -1.]
[ -3.]
[ -2.]
[ -6.]]
@ruakh、ありがとうございました。笑。 – Jacob
これはあなたが探しているものですか? https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.linalg.lstsq.html – wave5459
@sinewaver、lstsqは浮動小数点数を返します。私は最高の整数解を探したいと思っていました。 – Jacob