Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
A
alpha-mind
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dr.李
alpha-mind
Commits
ac4393d2
Commit
ac4393d2
authored
Dec 18, 2017
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update libs for windows
parent
99c74c07
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
39 additions
and
21 deletions
+39
-21
optimizers.pyx
alphamind/cython/optimizers.pyx
+30
-15
lpoptimizer.hpp
libs/include/windows/pfopt/lpoptimizer.hpp
+4
-3
meanvariance.hpp
libs/include/windows/pfopt/meanvariance.hpp
+4
-2
mvoptimizer.hpp
libs/include/windows/pfopt/mvoptimizer.hpp
+1
-1
pfopt.lib
libs/lib/windows/pfopt.lib
+0
-0
No files found.
alphamind/cython/optimizers.pyx
View file @
ac4393d2
...
@@ -8,14 +8,13 @@ Created on 2017-7-20
...
@@ -8,14 +8,13 @@ Created on 2017-7-20
cimport numpy as cnp
cimport numpy as cnp
import numpy as np
import numpy as np
from libcpp.vector cimport vector
from libcpp cimport nullptr
from libcpp cimport nullptr
cdef extern from "lpoptimizer.hpp" namespace "pfopt":
cdef extern from "lpoptimizer.hpp" namespace "pfopt":
cdef cppclass LpOptimizer:
cdef cppclass LpOptimizer:
LpOptimizer(int, int, double*, double*, double*, double*) except +
LpOptimizer(int, int, double*, double*, double*, double*) except +
vector[double]
xValue()
double*
xValue()
double feval()
double feval()
int status()
int status()
...
@@ -23,18 +22,20 @@ cdef extern from "lpoptimizer.hpp" namespace "pfopt":
...
@@ -23,18 +22,20 @@ cdef extern from "lpoptimizer.hpp" namespace "pfopt":
cdef class LPOptimizer:
cdef class LPOptimizer:
cdef LpOptimizer* cobj
cdef LpOptimizer* cobj
cdef int n
cdef int m
def __cinit__(self,
def __cinit__(self,
cnp.ndarray[double, ndim=2] cons_matrix,
cnp.ndarray[double, ndim=2] cons_matrix,
double[:] lbound,
double[:] lbound,
double[:] ubound,
double[:] ubound,
double[:] objective):
double[:] objective):
cdef int
n = lbound.shape[0]
self.
n = lbound.shape[0]
cdef int
m = cons_matrix.shape[0]
self.
m = cons_matrix.shape[0]
cdef double[:] cons = cons_matrix.flatten(order='C');
cdef double[:] cons = cons_matrix.flatten(order='C');
self.cobj = new LpOptimizer(n,
self.cobj = new LpOptimizer(
self.
n,
m,
self.
m,
&cons[0],
&cons[0],
&lbound[0],
&lbound[0],
&ubound[0],
&ubound[0],
...
@@ -50,7 +51,13 @@ cdef class LPOptimizer:
...
@@ -50,7 +51,13 @@ cdef class LPOptimizer:
return self.cobj.feval()
return self.cobj.feval()
def x_value(self):
def x_value(self):
return np.array(self.cobj.xValue())
cdef cnp.ndarray[double, ndim=1] res = np.zeros(self.n)
cdef double* c_arr = self.cobj.xValue()
for i in range(self.n):
res[i] = c_arr[i]
return res
cdef extern from "mvoptimizer.hpp" namespace "pfopt":
cdef extern from "mvoptimizer.hpp" namespace "pfopt":
...
@@ -65,7 +72,7 @@ cdef extern from "mvoptimizer.hpp" namespace "pfopt":
...
@@ -65,7 +72,7 @@ cdef extern from "mvoptimizer.hpp" namespace "pfopt":
double*,
double*,
double*,
double*,
double) except +
double) except +
vector[double]
xValue()
double*
xValue()
double feval()
double feval()
int status()
int status()
...
@@ -73,6 +80,8 @@ cdef extern from "mvoptimizer.hpp" namespace "pfopt":
...
@@ -73,6 +80,8 @@ cdef extern from "mvoptimizer.hpp" namespace "pfopt":
cdef class QPOptimizer:
cdef class QPOptimizer:
cdef MVOptimizer* cobj
cdef MVOptimizer* cobj
cdef int n
cdef int m
def __cinit__(self,
def __cinit__(self,
double[:] expected_return,
double[:] expected_return,
...
@@ -84,27 +93,27 @@ cdef class QPOptimizer:
...
@@ -84,27 +93,27 @@ cdef class QPOptimizer:
double[:] cubound=None,
double[:] cubound=None,
double risk_aversion=1.0):
double risk_aversion=1.0):
cdef int
n = lbound.shape[0]
self.
n = lbound.shape[0]
cdef int m
self.m = 0
cdef double[:] cov = cov_matrix.flatten(order='C')
cdef double[:] cov = cov_matrix.flatten(order='C')
cdef double[:] cons
cdef double[:] cons
if cons_matrix is not None:
if cons_matrix is not None:
m = cons_matrix.shape[0]
self.
m = cons_matrix.shape[0]
cons = cons_matrix.flatten(order='C');
cons = cons_matrix.flatten(order='C');
self.cobj = new MVOptimizer(n,
self.cobj = new MVOptimizer(
self.
n,
&expected_return[0],
&expected_return[0],
&cov[0],
&cov[0],
&lbound[0],
&lbound[0],
&ubound[0],
&ubound[0],
m,
self.
m,
&cons[0],
&cons[0],
&clbound[0],
&clbound[0],
&cubound[0],
&cubound[0],
risk_aversion)
risk_aversion)
else:
else:
self.cobj = new MVOptimizer(n,
self.cobj = new MVOptimizer(
self.
n,
&expected_return[0],
&expected_return[0],
&cov[0],
&cov[0],
&lbound[0],
&lbound[0],
...
@@ -122,7 +131,13 @@ cdef class QPOptimizer:
...
@@ -122,7 +131,13 @@ cdef class QPOptimizer:
return self.cobj.feval()
return self.cobj.feval()
def x_value(self):
def x_value(self):
return np.array(self.cobj.xValue())
cdef cnp.ndarray[double, ndim=1] res = np.zeros(self.n)
cdef double* c_arr = self.cobj.xValue()
for i in range(self.n):
res[i] = c_arr[i]
return res
def status(self):
def status(self):
return self.cobj.status()
return self.cobj.status()
\ No newline at end of file
libs/include/windows/pfopt/lpoptimizer.hpp
View file @
ac4393d2
...
@@ -2,7 +2,6 @@
...
@@ -2,7 +2,6 @@
#define pfopt_linear_programming_optimizer_hpp
#define pfopt_linear_programming_optimizer_hpp
#include "types.hpp"
#include "types.hpp"
#include <vector>
#include "ClpSimplex.hpp"
#include "ClpSimplex.hpp"
namespace
pfopt
{
namespace
pfopt
{
...
@@ -16,14 +15,16 @@ namespace pfopt {
...
@@ -16,14 +15,16 @@ namespace pfopt {
double
*
upperBound
,
double
*
upperBound
,
double
*
objective
);
double
*
objective
);
std
::
vector
<
double
>
xValue
()
const
{
return
sol_
;
}
~
LpOptimizer
()
{
delete
[]
sol_
;}
double
*
xValue
()
const
{
return
sol_
;
}
double
feval
()
const
;
double
feval
()
const
;
int
status
()
const
{
return
model_
.
status
();
}
int
status
()
const
{
return
model_
.
status
();
}
private
:
private
:
ClpSimplex
model_
;
ClpSimplex
model_
;
size_t
numberOfProb_
;
size_t
numberOfProb_
;
std
::
vector
<
double
>
sol_
;
double
*
sol_
;
};
};
}
}
...
...
libs/include/windows/pfopt/meanvariance.hpp
View file @
ac4393d2
...
@@ -22,6 +22,8 @@ namespace pfopt {
...
@@ -22,6 +22,8 @@ namespace pfopt {
double
*
varMatrix
,
double
*
varMatrix
,
double
riskAversion
=
1.
);
double
riskAversion
=
1.
);
virtual
~
MeanVariance
()
{
delete
[]
x_
;}
bool
setBoundedConstraint
(
const
double
*
lb
,
const
double
*
ub
);
bool
setBoundedConstraint
(
const
double
*
lb
,
const
double
*
ub
);
bool
setLinearConstrains
(
int
numCons
,
const
double
*
consMatrix
,
const
double
*
clb
,
const
double
*
cub
);
bool
setLinearConstrains
(
int
numCons
,
const
double
*
consMatrix
,
const
double
*
clb
,
const
double
*
cub
);
...
@@ -54,7 +56,7 @@ namespace pfopt {
...
@@ -54,7 +56,7 @@ namespace pfopt {
IpoptCalculatedQuantities
*
ip_cq
);
IpoptCalculatedQuantities
*
ip_cq
);
double
feval
()
const
{
return
feval_
;
}
double
feval
()
const
{
return
feval_
;
}
std
::
vector
<
double
>
xValue
()
const
{
return
x_
;
}
double
*
xValue
()
const
{
return
x_
;
}
private
:
private
:
VectorXd
expectReturn_
;
VectorXd
expectReturn_
;
...
@@ -68,7 +70,7 @@ namespace pfopt {
...
@@ -68,7 +70,7 @@ namespace pfopt {
const
double
*
ub_
;
const
double
*
ub_
;
VectorXd
grad_f_
;
VectorXd
grad_f_
;
double
feval_
;
double
feval_
;
std
::
vector
<
double
>
x_
;
double
*
x_
;
std
::
vector
<
Index
>
iRow_
;
std
::
vector
<
Index
>
iRow_
;
std
::
vector
<
Index
>
jCol_
;
std
::
vector
<
Index
>
jCol_
;
std
::
vector
<
double
>
g_grad_values_
;
std
::
vector
<
double
>
g_grad_values_
;
...
...
libs/include/windows/pfopt/mvoptimizer.hpp
View file @
ac4393d2
...
@@ -18,7 +18,7 @@ namespace pfopt {
...
@@ -18,7 +18,7 @@ namespace pfopt {
double
*
cub
=
nullptr
,
double
*
cub
=
nullptr
,
double
riskAversion
=
1.
);
double
riskAversion
=
1.
);
std
::
vector
<
double
>
xValue
()
const
{
return
mvImpl_
->
xValue
();
}
double
*
xValue
()
const
{
return
mvImpl_
->
xValue
();
}
double
feval
()
const
{
return
mvImpl_
->
feval
();
}
double
feval
()
const
{
return
mvImpl_
->
feval
();
}
...
...
libs/lib/windows/pfopt.lib
View file @
ac4393d2
No preview for this file type
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment