Notas para contenedor de docker:
Comando de docker para ejecución de la nota de forma local:
nota: cambiar <ruta a mi directorio>
por la ruta de directorio que se desea mapear a /datos
dentro del contenedor de docker.
docker run --rm -v <ruta a mi directorio>:/datos --name jupyterlab_numerical -p 8888:8888 -d palmoreck/jupyterlab_numerical:1.1.0
password para jupyterlab: qwerty
Detener el contenedor de docker:
docker stop jupyterlab_numerical
Documentación de la imagen de docker palmoreck/jupyterlab_numerical:1.1.0
en liga.
In [1]:
!pip3 install --user -q cvxpy
In [1]:
import os
In [2]:
cur_directory = os.getcwd()
In [3]:
dir_alg_python = '/algoritmos/Python'
In [4]:
os.chdir(cur_directory + dir_alg_python)
In [5]:
import math
import numpy as np
from utils import compute_error
from algorithms_for_cieco import path_following_method_feasible_init_point
In [6]:
fo = lambda x: x[0]**2 + x[1]**2 + x[2]**2 + x[3]**2-2*x[0]-3*x[3]
In [7]:
const = {0: lambda x: -x[0],
1: lambda x: -x[1],
2: lambda x: -x[2],
3: lambda x: -x[3]
}
In [8]:
A= np.array([[2,1,1,4],
[1,1,2,1]])
In [9]:
b=np.array([7,6])
In [10]:
x_ast=np.array([1.1232876712328763,0.6506849315068493,
1.8287671232876714,0.5684931506849317])
In [11]:
x_0 = np.array([8.082191780821915e-01,
8.767123287671235e-01,
1.821917808219178e+00,
6.712328767123281e-01])
In [12]:
x_0
Out[12]:
In [13]:
p_ast=fo(x_ast)
In [14]:
p_ast
Out[14]:
In [15]:
tol_outer_iter = 1e-6
tol=1e-8
tol_backtracking=1e-12
maxiter=30
mu=10
In [16]:
[x,iter_barrier,t] = path_following_method_feasible_init_point(fo, A, const,
x_0, tol,
tol_backtracking, x_ast, p_ast, maxiter,
mu, tol_outer_iter = tol_outer_iter
)
In [17]:
[x,iter_barrier,t]
Out[17]:
In [18]:
compute_error(x_ast,x)
Out[18]:
In [19]:
import cvxpy as cp
In [20]:
x1 = cp.Variable()
x2 = cp.Variable()
x3 = cp.Variable()
x4 = cp.Variable()
In [21]:
# Create two constraints.
constraints = [2*x1+x2+x3+4*x4-7 == 0,x1+x2+2*x3+x4-6 == 0,x1>=0,x2>=0,x3>=0,x4>=0]
# Form objective.
obj = cp.Minimize(x1**2+x2**2+x3**2+x4**2-2*x1-3*x4)
In [22]:
# Form and solve problem.
prob = cp.Problem(obj, constraints)
prob.solve() # Returns the optimal value.
Out[22]:
In [23]:
print("status:", prob.status)
print("optimal value", prob.value)
print("optimal var", x1.value, x2.value, x3.value,x4.value)
In [24]:
fo = lambda x: 2*x[0] + 5*x[1]
In [25]:
const = {0: lambda x: 6-x[0]-x[1],
1: lambda x: -18+x[0]+2*x[1],
2: lambda x: -x[0],
3: lambda x: -x[1]
}
In [26]:
A=np.array([0,0],dtype=float)
b = 0
In [27]:
x_ast = np.array([6,0], dtype=float)
In [28]:
x_0 = np.array([4,4], dtype=float)
In [29]:
p_ast=fo(x_ast)
In [30]:
p_ast
Out[30]:
In [31]:
tol_outer_iter = 1e-3
tol=1e-8
tol_backtracking=1e-12
maxiter=30
mu=10
In [32]:
[x,iter_barrier,t] = path_following_method_feasible_init_point(fo, A, const,
x_0, tol,
tol_backtracking, x_ast, p_ast, maxiter,
mu, tol_outer_iter=tol_outer_iter
)
In [33]:
[x,iter_barrier,t]
Out[33]:
In [34]:
compute_error(x_ast,x)
Out[34]:
In [35]:
x1 = cp.Variable()
x2 = cp.Variable()
In [36]:
# Create two constraints.
constraints = [6-x1-x2 <= 0,-18+x1+2*x2<=0,x1>=0,x2>=0]
# Form objective.
obj = cp.Minimize(2*x1+5*x2)
In [37]:
# Form and solve problem.
prob = cp.Problem(obj, constraints)
prob.solve() # Returns the optimal value.
Out[37]:
In [38]:
print("status:", prob.status)
print("optimal value", prob.value)
print("optimal var", x1.value, x2.value)
Referencias: