Python_CVXPY
🔬 线性规划
We consider thefollowing problem
\[    \begin{align*}
        & \underset{x}{\min}~-3x_1-2x_2 \\
        & {\rm s.t.}~3x_1 + 4x_2 \le 7 \\
        & \quad~~2x_1 + x_2 \le 3 \\
        & \quad~~-3x_1 + 2x_2 = 2 \\
        & \quad~~0 \le x_1,x_2 \le 10 \\
    \end{align*}
\]
import numpy as np
import cvxpy as cp
import time
# Seed for reproducibility
np.random.seed(1)
# Define parameters
c = np.array([-3, -2])
A_ub = np.array([[3, 4], [2, 1]])
b_ub = np.array([7, 3])
# Equality constraint
Aeq = np.array([[-3, 2]])
beq = np.array([2])
# Bounds for variables
lb = np.array([0, 0])
ub = np.array([10, 10])
# Define the problem
n = 2
x = cp.Variable(n)
prob = cp.Problem(cp.Minimize(c @ x),
                  [A_ub @ x <= b_ub,
                   Aeq @ x == beq,
                   x >= lb,
                   x <= ub])
# Solve the problem
result = prob.solve()
# Print results
print("Optimal value:", result)
print("Optimal point:", x.value)
Optimal value: -4.0000000001132126
Optimal point: [0.33333333 1.5       ]
🔬 二次规划
We consider the following problem
\[    \min f(x) = \frac{1}{2}x_1^2 + x_2^2 -x_1x_2 -2x_1 -6x_2
    = \frac{1}{2}x^{T}Hx + c^Tx
\]
The constraint condition is
\[    \begin{cases}
        x_1 + x_2 \le 2\\
        -x_1 + 2x_2 \le 2 \\
        2x_1 + x_2 \le 3 \\
        x_1 \ge 0,x_2 \ge 0.
    \end{cases}
\]
Where
\[   H = 
    \begin{bmatrix}
        1 & -1 \\
        -1 & 2
    \end{bmatrix},
    c =
    \begin{bmatrix}
         -2  \\
        -6
    \end{bmatrix},
    x =
    \begin{bmatrix}
        x_1  \\
        x_2
    \end{bmatrix}
\]
H = np.array([[1, -1], [-1, 2]])
c = np.array([-2, -6])
A = np.array([[1, 1], [-1, 2], [2, 1]])
b = np.array([2, 2, 3])
lb = np.array([0, 0])
start_time = time.time()
# Define and solve the CVXPY problem
x = cp.Variable(2)
prob = cp.Problem(cp.Minimize((1/2) * cp.quad_form(x, H) + c @ x),
                  [A @ x <= b,
                   x >= lb])  
result = prob.solve()
end_time = time.time()
# Print the results
print("Optimal value:", result)
print("Optimal point:", x.value)
print("Time:",end_time-start_time)
Optimal value: -8.222222222222223
Optimal point: [0.66666667 1.33333333]
Time: 0.007505178451538086
🔬 返回python HomePage
                    
                
                
            
        
浙公网安备 33010602011771号