私は、CVXPY を使用して Python で最小分散最適化問題に取り組んでおり、次の形式で制約を取り入れています。
constraints = [
sum_entries(w) == 1,
w[0:5] >0.05,
w[1] > 0.05,
w[6] == 0,
sum_entries(w[country_mappings['France']]) == 0.39,
w >= 0,positive
w[country_mappings['France']] > 0.12
]
w
という形で
w = Variable(n)
これをより効率的に実行するために、設定を保存するファイルに基づいて、制約のリストを動的に作成したいと考えています。制約リストの読み取りと作成は正常に機能し、
type(constraints)
それが示している
<type 'list'>
しかし、それに含まれる実際のエントリを見ると
[EqConstraint(Expression(AFFINE, UNKNOWN, (1, 1)), Constant(CONSTANT,
POSITIVE, (1, 1))), LeqConstraint(Constant(CONSTANT, POSITIVE, (1,
1)), Expression(AFFINE, UNKNOWN, (5, 1))),
LeqConstraint(Constant(CONSTANT, POSITIVE, (1, 1)),
Expression(AFFINE, UNKNOWN, (1, 1))), EqConstraint(Expression(AFFINE,
UNKNOWN, (1, 1)), Constant(CONSTANT, ZERO, (1, 1))),
EqConstraint(Expression(AFFINE, UNKNOWN, (1, 1)), Constant(CONSTANT,
POSITIVE, (1, 1))), LeqConstraint(Constant(CONSTANT, ZERO, (1, 1)),
Variable(10, 1)), LeqConstraint(Constant(CONSTANT, POSITIVE, (1, 1)),
Expression(AFFINE, UNKNOWN, (3L, 1L)))]
一方、私のものはこの形式です
['sum_entries(w) == 1',
'w[0:5] > 0.05',
'w[1] > 0.05',
'w[6] == 0',
'sum_entries(w[country_mappings['France']]) == 0.39',
'w >= 0',
'w[country_mappings['France']] > 0.12'
]
データの読み込みに使用されるコードは次のとおりです。
def read_in_config(filename):
with open(filename) as f:
content = f.read().splitlines()
return content
これを行う方法を知っている人はいますか?問題は、使用前に CVXPY の変数形式で w を取得することです。