import numpy as np
from scipy.optimize import minimize

a = np.array([100, 200, 300])
b = np.array([[1, 0, 0],
              [1, 0, 1],
              [0, 1, 1],
              [1, 1, 1]])
c = np.array([150, 300, 500, 650])

def f(x, b, c):
    return np.abs(c - np.sum(x*b, axis=1)).sum()

x0 = a
print(minimize(f, x0, args=(b,c), method='Nelder-Mead'))