add task structure
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import numpy as np
|
||||
from typing import Optional
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class State(Enum):
|
||||
SOLVED = 0
|
||||
UNSOLVED = 1
|
||||
UNAPPLICABLE = 2
|
||||
|
||||
|
||||
class Result:
|
||||
solved: State
|
||||
objective_function_value: Optional[np.float64]
|
||||
solution: Optional[np.array[np.float64]]
|
||||
|
||||
def __init__(self,
|
||||
solved: State,
|
||||
objective_function_value: Optional[np.array[np.float64]] = None,
|
||||
solution: np.float64 = None):
|
||||
self.solved = solved
|
||||
self.objective_function_value = objective_function_value
|
||||
self.solution = solution
|
||||
|
||||
|
||||
def interior_point(
|
||||
C: np.array[np.float64],
|
||||
A: np.array[np.float64],
|
||||
x_0: np.array[np.float64],
|
||||
b: np.array[np.float64],
|
||||
eps: np.float64 = 0.01,
|
||||
alpha: np.float64 = 0.5,
|
||||
maximizing: bool = True) -> Result:
|
||||
if (not np.all(np.dot(A, x_0) >= b) or np.any(x_0 == 0)):
|
||||
return Result(State.UNAPPLICABLE)
|
||||
if (not maximizing):
|
||||
C = -C
|
||||
x = x_0
|
||||
solved = False
|
||||
while not solved:
|
||||
# TODO Algorithm steps (refer to numpy.linalg for matrix stuff)
|
||||
pass
|
||||
|
||||
# return value (include check for minimization)
|
||||
return Result(State.SOLVED, ...)
|
||||
|
||||
|
||||
# TODO 5 tests (from assignment 1) and comparison with simplex and alpha = 0.9
|
||||
def TEST_CASE_GENERAL():
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user