楼主: winnerfcjl
1017 3

[统计软件与数据分析] 求多个变量的不同取值模拟 [推广有奖]

  • 0关注
  • 0粉丝

初中生

23%

还不是VIP/贵宾

-

威望
0
论坛币
1627 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
243 点
帖子
5
精华
0
在线时间
12 小时
注册时间
2013-10-30
最后登录
2022-6-7

楼主
winnerfcjl 发表于 2020-11-17 09:51:10 |AI写论文
50论坛币
现在有a1-a19,20个变量值,每个变量值都可能取0-100的数,需要求出不同的组合,并计算目标函数z的结果值。或者数据量太大,求Z的最大值也可以;求大家支支招怎么做。
a1-a19都从0-100分别取值,形成不同的组合
x1对应a1,x2对应a2,以此类推,x(i)的值是固定的
y1对应a1,y2对应a2,以此类推,y(i)的值是固定的
如果变量值可以再缩小呢,归类归成10个;变量取值也缩小到不同的,a1取10-50,a2取5-10,缩小范围去计算组合;如果用matlab应该用什么函数或者方法

变量取值0-100x取值y取值目标函数
a10-100取值x1y1z=a1*x1*y1+a2*x2*y2+….a19*x19*y19
a20-100取值x2y2
a30-100取值x3y3
a40-100取值x4y4
a50-100取值x5y5
a60-100取值x6y6
a70-100取值x7y7
a80-100取值x8y8
a90-100取值x9y9
a100-100取值x10y10
a110-100取值x11y11
a120-100取值x12y12
a130-100取值x13y13
a140-100取值x14y14
a150-100取值x15y15
a160-100取值x16y16
a170-100取值x17y17
a180-100取值x18y18
a190-100取值x19y19







关键词:多个变量 目标函数 变量值 怎么做 A50 统计

沙发
rrrr336 发表于 2020-11-18 11:19:57
(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)

个人拙见,参考

藤椅
winnerfcjl 发表于 2020-11-18 11:33:54
rrrr336 发表于 2020-11-18 11:19
(a1到 a19是19个变量,a0 - a19有20个变量)

首先,假设a1 到 a19都是整数,取值0-100,101个数,按100来 ...
感谢回复,主要还是想要a1,a2,a3...a19的各种组合,结合后面的x1,y1去计算,找出哪种组合是最优的

板凳
rrrr336 发表于 2020-11-18 21:48:17
winnerfcjl 发表于 2020-11-18 11:33
感谢回复,主要还是想要a1,a2,a3...a19的各种组合,结合后面的x1,y1去计算,找出哪种组合是最优的
你的组合最优的意思,如果是最大值的话,上面已经用数学方法找出来了。最小值也类似。
最根本的原因是变量 a1-a19是线性且独立的,单调增加或减少,所以很容易算

但是,如果你想要穷举出所有组合,那么这个组合数太大了:
每个变量ai 有100个可能,19个变量,根据排列组合里的乘法原理,共有100的19次方 种组合,即10的38次方。

这个数有多大呢,假设你的计算机指令 1 纳秒运行1个指令,即 10的 (-9)次方 秒/ 指令,即1秒钟能执行10的9次方 条指令, 再假设一个指令就能算出一个值,   
算完的时间为:
(10^38 /  10^9 ) 秒 / 3600  / 24  / 365  =  3.170979198376459e+21  年,
简化一下, 3的21次方   3^21 = 10460353203   大约 104亿年
所以,穷举所有组合 需要超过 100 亿年的时间。是不可能算的。
放弃穷举吧

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
扫码
拉您进交流群
GMT+8, 2026-1-28 08:37