Решите двойную проблему, и это даст вам все теневые цены с помощью еще одного звонка в linprog. Вот пример для стандартной проблемы LP:
c = np.array([400,200,250]) # negative of objective function
b = [1000,300,625] # constraint bounds
A = [[3, 1, 1.5], [0.8, 0.2, 0.3], [1, 1,1]] # constraints
x1_bnds =(0, None) # bounds on x1
x2_bnds = (0,None) # bounds on x2
x3_bnds = (0,None) # bounds on x
result = opt.linprog(-c,A_ub=A, b_ub=b, bounds=(x1_bnds,x2_bnds, x3_bnds))
dual_c = b
dual_b = -1.0 * c
dual_A = -1.0 * np.transpose(A)
result = opt.linprog(dual_c,A_ub=dual_A, b_ub=dual_b, bounds=(x1_bnds,x2_bnds,
x3_bnds))