本文实现python版本的有效集算法,有效集算法的原理暂不介绍。
import numpy as np
class Active_set(object):
def __init__(self, H, c, A, b):
self.H = H
self.c = c
self.A = A
self.b = b
self.epsilon = 1e-6
def initial_set(self):
activae_set_rows = [0]
index = np.where(self.A[0] != 0)[0][0]
value = self.A[0][index]
feasible_x = np.zeros(len(self.A[0]))
feasible_x[index] = self.b[0][0]/float(value)
feasible_x = feasible_x.reshape(-1, 1)
return activae_set_rows, feasible_x
return [2, 4], np.array([[2], [0]], dtype=np.float64)
def calculate_delta(self, x):
return np.matmul(self.H, x) + self.c
def find_active_set(self):
activate_set_rows, feasible_x = self.initial_set()
steps = 0
while True:
steps += 1
print("steps is {}".format(steps))
partial_x