【问题标题】:Optimizing function in python [closed]python中的优化功能[关闭]
【发布时间】:2017-02-14 05:14:58
【问题描述】:

该函数将 4 个输入作为 x,y,w,z 并且我想优化具有约束为 x + y + w + z = 1 的函数,并且所有 4 都应该小于 1。我应该如何处理这个任务?

【问题讨论】:

  • 定义约束并编写一些代码?如前所述,无论如何,您的优化都有无限数量的解决方案。请参阅How to ask
  • 所有 4 都应该小于 1 - 如果它们都小于 1,他们如何给出 1 作为结果?
  • @RomanPerekhrest 0.25 + 0.25 + 0.25 + 0.25
  • @roganjosh,我想可以从 OP 那里得到确认
  • @RomanPerekhrest 这就是我对这个问题的解释。每个参数都应该小于 1。但是答案的数量是无限的。如果您允许用户输入所有 4 个变量,他们要么满足约束条件,要么不满足约束条件。如果你想要一台电脑来解决它,没有一个合乎逻辑的答案。

标签: python function optimization constraints


【解决方案1】:

如果我理解正确,以下解决方案应该符合您的初始要求:

def checkAllForOne(x,y,w,z):
    args = [x,y,w,z]
    return all(i < 1 for i in args) and sum(args) == 1

print(checkAllForOne(0.2, 0.25, 0.25, 0.3))  # True
print(checkAllForOne(0.0, 0.25, 0.25, 0.3))  # False
print(checkAllForOne(0.5, 0.4, 0.1, 0))      # True

使用的函数:
all() - 检查每个参数是否小于1
sum() - 检查参数的总和

【讨论】:

    猜你喜欢
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2011-11-02
    • 2011-06-06
    相关资源
    最近更新 更多