我是新的优化和试图解决一个问题,我觉得在伞优化下降。你知道吗
我有一个目标函数需要最大化
def objective(bat1,bat2,bat3,bat4,bat5,bat6,bat7,wk1,wk2,ar1,ar2,ar3,ar4,ar5,bowl1,bowl2,bowl3,bowl4,bowl5,bowl6):
total_score_batsman = bat1*60 + bat2*40 + bat3*36 + bat4*35 + bat5*25 + bat6*22 +bat7*9
total_score_wks = wk1*24 + wk2* 14
total_score_ar = ar1*45 + ar2*24 + ar3*15 + ar4*1
total_score_bowler = bowl1*64 + bowl2*47 + bowl3*16 + bowl4*7 + bowl5*5 + bowl6*4
return total_score_batsman + total_score_wks + total_score_ar + total_score_bowler #needs to be maximized
#budget constraint
def budget(bat1,bat2,bat3,bat4,bat5,bat6,bat7,wk1,wk2,ar1,ar2,ar3,ar4,ar5,bowl1,bowl2,bowl3,bowl4,bowl5,bowl6):
batsman_budget = bat1*10.5 + bat2*8.5 + bat3*10.5 + bat4*8.5 + bat5*9.5 + bat6*9 +bat7*9
wk_budget = wk1*8.5 + wk2*8
ar_budget = ar1*8.5 + ar2*9 + ar3*8.5 + ar4*8
bowler_budget = bowl1*9 + bowl2*8.5 + bowl3*8.5 + bowl4*8.5 + bowl5*9 + bowl6*9
total_budget = batsman_budget + wk_budget + ar_budget + bowler_budget
return total_budget
total_budget <= 100 #constraint
#player_role constraints
bat1 + bat2 + bat3 + bat4 + bat5 + bat6 + bat7 >= 3
bat1 + bat2 + bat3 + bat4 + bat5 + bat6 + bat7 <= 5
wk1 + wk2 = 1
ar1 + ar2 + ar3 + ar4 + ar5 >= 1
ar1 + ar2 + ar3 + ar4 + ar5 <= 3
bowl1 + bowl2 + bowl3 + bowl4 + bowl5 + bowl6 >= 3
bowl1 + bowl2 + bowl3 + bowl4 + bowl5 + bowl6 <= 5
# no of players in a team constraint
bat1 + bat2 + bat3 + bat4 + bat5 + bat6 + bat7 + wk1 + wk2 + ar1 + ar2 + ar3 + ar4 + ar5 + bowl1 + bowl2 + bowl3 + bowl4 + bowl5 + bowl6 = 11
where bat1,bat2,bat3.....bowl5,bowl6 are 0 or 1
它完全是一个线性问题,不需要非线性优化技术。可以有人帮助我解决这些问题,或者python中有没有库可以帮助我解决这些问题?你知道吗
谢谢
你可以使用PuLP
结果:
相关问题 更多 >
编程相关推荐