L1-Норма минимизация - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь свести к минимуму следующую функцию с помощью линейного программирования. Я не могу включить изображение моей целевой функции. Нажмите на эту Objective Function , чтобы увидеть, что я пытаюсь оптимизировать. Мой вопрос, есть ли какая-либо библиотека или функция в Python, которая может сделать эту оптимизацию для меня, или я должен писать код?

Ответы [ 2 ]

0 голосов
/ 29 октября 2019
import cvxpy as cp
import numpy as np

N=10
M=100

U = np.random.random((M,N))
m = np.random.random(M)
t = cp.Variable(M)
x = cp.Variable(N)

prob = cp.Problem(cp.Minimize(cp.sum(t)), [-t<=U@x-m, U@x-m<=t])
optimal_value = prob.solve()
print("t=",t.value)
print("x=",x.value)
print("val=",optimal_value)
0 голосов
/ 28 октября 2019

Существует метод минимизации для метода оптимизации библиотеки scipy. Я не уверен, как вы будете искать норму L1, но, возможно, это поможет минимизировать.

Каждое слово, указанное в () после сворачивания, является параметром. Параметр "fun" - это функция для функции, в которую вы помещаете L1-норму после того, как нашли ее другим методом.

scipy.optimize.minimize(
fun, x0, args=(), method='BFGS',
jac=None, hess=None, hessp=None, bounds=None, 
constraints=(), tol=None, callback=None, options=None
)
...