Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 设置条件约束_Python_Linear Programming_Pulp - Fatal编程技术网

Python 设置条件约束

Python 设置条件约束,python,linear-programming,pulp,Python,Linear Programming,Pulp,第一次使用纸浆,我试图对我正在处理的生产问题设置条件约束。不幸的是,我在文档中也找不到任何关于如何这样做的例子 目标函数是通过根据每种产品的预测价格减去成本,通知工厂每月生产哪种产品来实现收入最大化(当然这里省略了许多其他约束条件,否则会简单得多) 对于以下数据,我需要设置以下约束: 一家工厂每月只能生产一种产品,尽管它有能力生产多种产品 这就限制了工厂一个月只能生产一种产品。我对纸浆是个新手,但尽管我查阅了文档和S.O.但我找不到一个示例实现 生产数据: 到目前为止我的代码 # omitt

第一次使用纸浆,我试图对我正在处理的生产问题设置条件约束。不幸的是,我在文档中也找不到任何关于如何这样做的例子

目标函数是通过根据每种产品的预测价格减去成本,通知工厂每月生产哪种产品来实现收入最大化(当然这里省略了许多其他约束条件,否则会简单得多)

对于以下数据,我需要设置以下约束:

  • 一家工厂每月只能生产一种产品,尽管它有能力生产多种产品 这就限制了工厂一个月只能生产一种产品。我对纸浆是个新手,但尽管我查阅了文档和S.O.但我找不到一个示例实现

    生产数据:

    到目前为止我的代码

    # omitted data etl logic - it is formatted as per the above images
    
    # Get production info
    plants = LpVariable.dicts('plants',
        ((month, plant, product) for month, plant, product in wp_df.index if month >= 4),
        lowBound = 0,
        cat='Integer')
    
    # Get forecast price info by product
    forecast_prices =  LpVariable.dicts('price_by_prod',
        ((month, contract) for month, contract in fcst_diffs.index if month >= 4),
        lowBound = 0,
        cat='Integer') 
    
    # Prod costs for each month, plant.
    costs = LpVariable.dicts(
        'prod costs',
        ((month, plant) for month, plant in prod_costs_df.index),
        lowBound=0,
        cat='Integer')
    
    # Define problem
    model = LpProblem('Revenue Maximising Production Optimisation',
                      LpMaximize)
    
    # Define objective function
    model += lpSum(
        [plants[m,w,g] * wp_df.loc[(m,w,g), 'production_output'] for m, w, g in wp_df.index]
        + [costs[m, w] * costs_df.loc[(m,w), 'prod_costs_usd'] for m, w in prod_costs_df.index]
    )
    
    我现在省略了一些限制,因为我有很多要设置


    感谢您的帮助。

    介绍一组二进制变量,这些变量由{plant,product,month}索引,用于确定plant
    i
    是否用于在月份
    k
    期间制造产品
    j
    。如果为真,变量将为
    1
    ,否则为
    0


    然后,您需要添加约束,以限制工厂
    i
    k
    月份生产的产品
    j
    数量。通常,这可以通过限制该金额变量为
    的约束来实现。该优化的目的是根据约束(仅1个产品)和预测产品溢价来选择产品,即根据预测价格做出决策?你知道这是否可行吗?非常感谢。是的,那是绝对可能的。我上面建议的是引入二进制变量。这些变量的值将作为优化的一部分进行选择。合并预测只是将其包含在目标函数中的一种情况-根据您拥有的预测类型,您可能还需要决定如何处理预测的不确定性。谢谢Kabdulla-请您举个例子作为代码好吗?例如,如何设置变量dicts和constraints?如果您修改您的问题以包含生成最小玩具示例的i.e.代码,那么我很乐意。@kabulla我已将问题稍作更改并发布在此处:,您愿意提供帮助吗?非常感谢你的耐心