Я использую scipy.optimize.nnls
для вычисления неотрицательного наименьшего квадрата с коэффициентом, равным 1. Я всегда получаю одно и то же решение, когда выполняю вычисления.Это код, который я использую:
#! /usr/bin/env python3
import numpy as np
import scipy.optimize as soptimize
if __name__ == '__main__':
C = np.array([[112.771820, 174.429720, 312.175750, 97.348620],
[112.857010, 174.208300, 312.185270, 93.467580],
[114.897210, 175.661850, 314.275100, 99.015480]
]);
d = np.array([[112.7718, 174.4297, 312.1758, 97.3486],
[112.7718, 174.4297, 312.1758, 97.3486]]);
for line in d:
ret , _= soptimize.nnls(C.T, line)
print(ret)
И каждый раз, когда я получаю:
[9.99992794e-01 7.27824399e-06 0.00000000e+00]
[9.99992794e-01 7.27824399e-06 0.00000000e+00]
Мне нужно вычислить несколько решений с диапазоном допусков, и выбрать решение, которое подходит лучше всего, мойнеобходимо.Кто-нибудь знает, как получить разные решения для одной и той же матрицы ввода?