python - scipy 的线性约束问题。人口的所有要素都被拒绝
问题描述
我正在使用 scipy 差分进化。我必须设置以下线性约束。0<x1+x2+x3+x4<=1。x2+x3=1。我设置了以下矩阵 A=[0 1 1 0] B=[1]。线性约束 = 线性约束(A,B,B,真)。我还将下限和上限设置为 0 和 1。然而,在每次迭代过程中,目标函数的输出是 InF,而差分进化没有调用目标函数
谁能提出什么问题?我的 Scipy 版本是 1.5.4 和 python 3.7。
感谢提前..
解决方案
您需要将约束设置为:
from scipy.optimize import LinearConstraint
A = np.array([[1.0, 1.0, 1.0, 1.0],
[0.0, 1.0, 1.0, 0.0]])
lc = LinearConstraint(A, [0, 1], [1, 1])
关键字将keep_feasible
被忽略。为了使约束可行,每个参数的边界必须包含一个可行区域。例如,如果x2
andx3
是正数,则x1
or之一x4
必须能够访问负值。
在受约束的最小化中,仅当试验解决方案不可行时才评估目标函数。
如果满足以下条件,则接受试用解决方案:
Trial is accepted if:
* it satisfies all constraints and provides a lower or equal objective
function value, while both the compared solutions are feasible
- or -
* it is feasible while the original solution is infeasible,
- or -
* it is infeasible, but provides a lower or equal constraint violation
for all constraint functions.
推荐阅读
- prerender - Stenciljs 添加2页后,预渲染卡住了
- c# - 手动删除迁移并在 ef core 中以相同名称再次添加后出现重复属性错误
- r - 如何将参考线添加到使用 plot.rlmerMod 生成的正态 QQ 与随机效应图?
- sql-server - 是否可以组合视图和存储过程中的列?
- xcode - 当用户关闭主应用程序窗口时,没有菜单项可以重新打开它,Xcode,MacOs 应用程序
- ios - 无法从 UITest 中的 CollectionView 元素访问单元格
- scala - 创建一个 Trait 只是为了指定一个合同而不是从多态的角度使用它是否可以?
- python - 如何在 python 中使用 asyncio 和 wget 下载多个文件?
- java - 从 Arraylist 中获取数据并输入到 LinkedHashMap 的 put 方法中
- codenameone - 正则表达式一次只在代号一中找到一个结果