Я пытаюсь использовать python (и в настоящее время не могу), чтобы прийти к более эффективному решению, чем Excel Solver для решения проблемы оптимизации.
Matrices
Проблема в форме A B = C -> D, где A B производит C, где абсолютное значение для CD для каждой строки в матрице сведено к минимуму.
У меня есть семь средств, содержащихсяв матрице B все из которых имеют географическую экспозицию в форме
FUND_NAME = np.array([UK,USA,EuroZone, Japan,EM,Apac)]
, как показано ниже
RLS = np.array([0.788743177, 0.168048481,0,0.043208342,0,0])
LIOGLB=np.array([0.084313978,0.578528092,0,0.23641746,0.033709666,0.067030804])
LIONEUR=np.array([0.055032339,0,0,0.944967661,0,0])
STEW_WLDWD=np.array([0.09865472,0.210582713,0.053858632,0.431968002,0.086387178,0.118548755])
EMMK=np.array([0.080150377,0.025212864,0.597285513,0.031832241,0.212440426,0.053078578])
PAC=np.array([0,0.013177633,0.41273195,0,0.510644775,0.063445642])
PICTET=np.array([0.089520913,0.635857603,0,0.218148413,0.023290413,0.033182659])
Из этого мне нужно построитьоптимальное взвешивание семи фондов с использованием матрицы (образно названной A) [x1, x2, x3, x4, x5, x6, x7] с x1 + x2 + ... + x7 = 1 & Также дляi = (1,7) xi нижняя граница = 0 xi верхняя граница = 0,25
Чтобы получить фактические региональные веса ( матрица C ) как можно ближе к приведенному ниже целевому массиву (что соответствует матрице D выше)
Target=np.array([0.2310,0.2576,0.1047,0.1832,0.1103,0.1131])
Я пытался использовать libprog. Но я знаю, что ответ, который я получаю, неправильный.
Funds =np.array([RLS,LIOGLB, LIONEUR,STEW_WLDWD, EMMK,PAC,PICTET])
twentyfive=np.full((1, 7), 0.25)
bounds=[0,0.25]
res = linprog(Target,A_ub=Funds,b_ub=twentyfive,bounds=[bounds])
Может ли кто-нибудь помочь мне перейти от Excel?