(a1到 a19是19个变量,a0 - a19有20个变量)
首先,假设a1 到 a19都是整数,取值0-100,101个数,按100来算,要算出所有组合的z值比较困难,因为共有 10的 38次方 个组合,这个数值太大了。
然而要找到最大值,是比较容易的。用数学的方法来找:
a1到a19 变量是相互独立的,我们先看 a1 * x1 * y1 这一项
a1 的范围是 [0, 100], x1和y1是不变量,所以:
当 x1 * y1 大于零时, a1 * x1 * y1 当 a1= 100 时,取得最大值
当 x1 * y1 小于等于零时, a1 * x1 * y1 当 a1=0 时,取得最大值
其他项 如 a2 * x2 * y2, .... , a19 * x19 * y19 都类似。
所以,z的最大值: 当xi * yi > 0, ai=100; 当 xi * yi <= 0, ai = 0, where i in [0, 19]
Python 代码实现如下:
x1 = [......] # x1的值放在这个列表里,共20个
y1 = [......] # y1的值放在这个列表里,共20个
z = 0
for i in range(20): # 从 0 到 19, 共20项
value = x1[i] * y1[i]
if value > 0:
z += 100 * value
print('Max z is:', z)
个人拙见,参考


雷达卡



京公网安备 11010802022788号







