You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成满足基数与最大权重约束的投资组合优化初始种群?

带基数与最大权重约束的投资组合初始种群生成(遗传算法)

我正在研究包含基数约束和最大权重约束的投资组合优化问题,需要基于遗传算法生成满足以下条件的初始种群数组:

  • 基数约束:数组中恰好有5个非零元素
  • 最大权重约束:这5个非零元素均小于0.25,且总和为1

初始尝试的问题

最初编写的代码可以满足基数约束,但无法保证最大权重限制——直接生成随机数后归一化会导致部分元素超过0.25:

population_size = 100
cardinality_constraint = 5
# 50是可分配资产向量的长度

initial_pop = np.zeros((population_size, 50))

for i in range(population_size):
    initial_pop[i,:cardinality_constraint] = np.random.rand(cardinality_constraint)
    initial_pop[i] = initial_pop[i] / np.sum(initial_pop[i])
    np.random.shuffle(initial_pop[i])

可行解决方案

通过使用NumPy的dirichlet函数生成符合Dirichlet分布的权重,再筛选出满足每个元素小于0.25的样本,最终得到符合所有约束的初始种群:

initial_population_list = []

while len(initial_population_list) < 100:
    x = np.random.dirichlet(np.ones(5), size = 1)
    if len(x[x > 0.25]) < 1:
        initial_population_list.append(x)

经验证,该方案能同时满足基数约束、最大权重约束以及总和为1的要求。

内容的提问来源于stack exchange,提问作者MrAce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 02:09:09