Google OR-Tools,访问求解器尝试的变量值。变量的动态系数

问题描述 投票:0回答:0

我正在使用谷歌或工具来找到最大收入的支出分配。在下面的示例中,(例如)

mon
tues
是总分配中星期一星期二的支出分配的变量。

简而言之,我可以尝试变量值的动态系数而不是静态系数吗?当我在求解器的函数中访问变量

mon
tues
时,如何获取变量值(求解器尝试)而不是变量名。而不是下面的详细信息。

我想最大化收入,因为收入不是恒定的,它取决于支出。因此,随着支出分配值 (

mon
,
tues
) 的变化,收入也会发生变化。因此,我想获取更新的收入值,而不是与
mon
tues
相关联的静态收入值(或可变系数),这取决于求解器尝试的 mon 和 tues 值。是否可以使用以下 OR-Tools 示例获取值。我尝试访问周一、周二的值,假设当求解器尝试不同的
mon
tue
、循环等值时它们是数字。但是
mon
tues
只是变量,当尝试如下所示时,我得到了尝试错误。

如果我不得不尝试不同的框架/库而不是 OR 工具,请告诉我。

def get_revenue(x):
    return np.random.rand(1)*1000* x
    
def revenue (mon, tues):
    print("Values of Monday, Tuesday are : ", mon, tues)
    mon_revenue = get_revenue(mon)
    tues_revenue = get_revenue(tues)    
    return mon*mon_revenue + tues*tuesday_revenue

solver = pywraplp.Solver('Maximize', pywraplp.Solver.GLOP_LINEAR_PROGRAMMING)
mon =  solver.NumVar(0.2, 0.8, 'monday')
tues =  solver.NumVar(0.2, 0.8, 'Tuesday')
solver.Add(mon + tues == 1)

solver.Maximize(revenue(mon,tues))
status = solver.Solve()
python optimization linear-programming or-tools constraint-programming
© www.soinside.com 2019 - 2024. All rights reserved.