Die CVXPY-Dokumentation finden Sie unter cvxpy.org.
Wir bauen eine CVXPY-Community auf Discord auf. Beteiligen Sie sich am Gespräch! Für Probleme und längere Diskussionen nutzen Sie Github Issues und Github Discussions.
Inhalt
CVXPY ist eine in Python eingebettete Modellierungssprache für konvexe Optimierungsprobleme. Es ermöglicht Ihnen, Ihr Problem auf natürliche Weise auszudrücken, die der Mathematik folgt, und nicht in der restriktiven Standardform, die von Lösern gefordert wird.
Der folgende Code löst beispielsweise ein Problem der kleinsten Quadrate, bei dem die Variable durch Unter- und Obergrenzen eingeschränkt ist:
import cvxpy as cp
import numpy
# Problem data.
m = 30
n = 20
numpy . random . seed ( 1 )
A = numpy . random . randn ( m , n )
b = numpy . random . randn ( m )
# Construct the problem.
x = cp . Variable ( n )
objective = cp . Minimize ( cp . sum_squares ( A @ x - b ))
constraints = [ 0 <= x , x <= 1 ]
prob = cp . Problem ( objective , constraints )
# The optimal objective is returned by prob.solve().
result = prob . solve ()
# The optimal value for x is stored in x.value.
print ( x . value )
# The optimal Lagrange multiplier for a constraint
# is stored in constraint.dual_value.
print ( constraints [ 0 ]. dual_value )
Mit CVXPY können Sie modellieren
CVXPY ist kein Löser. Es basiert auf den Open-Source-Lösern Clarabel, SCS und OSQP. Weitere Solver sind verfügbar, müssen jedoch separat installiert werden.
CVXPY begann als Forschungsprojekt der Stanford University. Es wird mittlerweile von vielen Menschen in vielen Institutionen und Ländern entwickelt.
CVXPY ist auf PyPI verfügbar und kann mit installiert werden
pip install cvxpy
CVXPY kann auch mit Conda installiert werden
conda install -c conda-forge cvxpy
CVXPY hat die folgenden Abhängigkeiten:
Detaillierte Anweisungen finden Sie in der Installationsanleitung.
Um mit CVXPY zu beginnen, sehen Sie sich Folgendes an:
Wir empfehlen Ihnen, Probleme über den Github-Tracker zu melden. Wir freuen uns über alle Arten von Problemen, insbesondere solche im Zusammenhang mit Korrektheit, Dokumentation, Leistung und Funktionswünschen.
Für grundlegende Nutzungsfragen (z. B. „Warum ist mein Problem kein DCP?“) verwenden Sie bitte stattdessen StackOverflow.
Die CVXPY-Community besteht aus Forschern, Datenwissenschaftlern, Softwareentwicklern und Studenten aus der ganzen Welt. Wir heißen Sie herzlich willkommen, sich uns anzuschließen!
Bitte seien Sie in Ihrer Kommunikation mit der CVXPY-Community respektvoll und stellen Sie sicher, dass Sie sich an unseren Verhaltenskodex halten.
Wir freuen uns über alle Beiträge. Sie müssen kein Experte für konvexe Optimierung sein, um zu helfen.
Sie sollten CVXPY zunächst von der Quelle installieren. Hier sind einige einfache Möglichkeiten, sofort mit dem Beitragen zu beginnen:
Wenn Sie unserer Bibliothek ein neues Beispiel hinzufügen oder eine neue Funktion implementieren möchten, nehmen Sie bitte zuerst Kontakt mit uns auf, um sicherzustellen, dass Ihre Prioritäten mit unseren übereinstimmen.
Beiträge sollten als Pull-Requests eingereicht werden. Ein Mitglied des CVXPY-Entwicklungsteams wird die Pull-Anfrage prüfen und Sie durch den Beitragsprozess führen.
Bevor Sie mit der Arbeit an Ihrem Beitrag beginnen, lesen Sie bitte den Beitragsleitfaden.
CVXPY ist ein Gemeinschaftsprojekt, das auf den Beiträgen vieler Forscher und Ingenieure basiert.
CVXPY wird von Steven Diamond, Akshay Agrawal, Riley Murray, Philipp Schiele, Bartolomeo Stellato und Parth Nobel entwickelt und gepflegt, wobei viele andere maßgeblich dazu beitragen. Zu einer nicht erschöpfenden Liste von Personen, die CVXPY im Laufe der Jahre geprägt haben, gehören Stephen Boyd, Eric Chu, Robin Verschueren, Jaehyun Park, Enzo Busseti, AJ Friend, Judson Wilson, Chris Dembia und William Zhang.
Weitere Informationen zum Team und unseren Prozessen finden Sie in unserem Governance-Dokument.
Wenn Sie CVXPY für wissenschaftliche Arbeiten nutzen, empfehlen wir Ihnen, unsere Arbeiten zu zitieren. Wenn Sie CVXPY in der Industrie nutzen, würden wir uns freuen, auch von Ihnen zu hören, auf Discord oder per E-Mail.