24小时热门版块排行榜    

查看: 960  |  回复: 7

smartfx

新虫 (初入文坛)

[求助] 用ansys优化解一个小学数学题 已有2人参与

近来看到一个小学数学题,题目如下:
元旦促销活动,每次购物200元至500元都(不含500元)打九五折。每次购物500元以上打九折。李阿婆为办年货去该中心购物三次,如果第一次和第二次合并一起买,比分开买便宜13.5元,如是三次合并一起买 比分开买便宜39.4元。已知第一次货物价格是第三次的20/31,李阿婆第二次购物用了多少钱?
不小心算错了,正好在学习ansys,那么能否用ansys的优化来解题呢?我是这样做的:
!假设第一二三次单独付款分别为x,y,z,
!前三次单独实际付款分别为rx,ry,rz
!前两次合并付款为secondPurch
!前三次合并付款为thirdPurch
x=100
y=100
z=100
*if,x,gt,200,then
    rx=x*0.95
*else
    rx=x
*endif
*if,y,gt,200,then
    ry=y*0.95
*else
    ry=y
*endif
*if,z,gt,200,then
    rz=z*0.95
*else
    rz=z
*endif
*if,x+y,gt,500,then
    secondPurch=(x+y)*0.9
    *elseif,x+y,gt,200,then
       secondPurch=(x+y)*0.95
    *else
       secondPurch=x+y
*endif
*if,x+y+z,gt,500,then
    thirdPurch=(x+y+z)*0.9
    *elseif,x+y+z,gt,200,then
       thirdPurch=(x+y+z)*0.95
    *else
       thirdPurch=x+y+z
*endif   
condition1=abs(x-20/30*z)
condition2=abs(rx+ry-secondPurch-13.5)
condition3=abs(rx+ry+rz-thirdPurch-39.4)
object=x+y+z
/opt
opclr
opanl,purchase,inp
opvar,x,dv,100,200,1
opvar,y,dv,100,160,1
opvar,z,dv,100,300,1
opvar,condition1,sv,0,0.01,0.001
opvar,condition2,sv,0,0.01,0.001
opvar,condition3,sv,0,0.01,0.001
opvar,object,obj,,,1
optype,subp
opsubp,1000

得到:
X                                 156.404757   
Y                                 131.812270   
Z                                 233.964945   
与答案还是有蛮大差距的,那么怎么样才能获得更准确的结果呢?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smartfx

新虫 (初入文坛)

送红花一朵
感激不尽
2楼2015-01-30 12:14:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smartfx

新虫 (初入文坛)

感激不尽
3楼2015-01-30 12:14:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

DGE旅行者

新虫 (小有名气)

ANSYS还能做这个
4楼2015-01-31 08:45:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

peterflyer

木虫之王 (文学泰斗)

peterflyer


【答案】应助回帖

感谢参与,应助指数 +1
我觉得应该这么做:
假设第一二三次单独付款在没有折扣的情况下的金额分别为x,y,z,有了折扣后再分别付款时的金额就会为α*x、β*y、γ*z,其中α、β、γ为折扣系数,即:
x∈[0,200)时α=1.00 ;x∈[200,500)时α=0.95;x∈[500,∞)时α=0.90
y∈[0,200)时β=1.00 ;y∈[200,500)时β=0.95;y∈[500,∞)时β=0.90
z∈[0,200)时γ=1.00 ;z∈[200,500)时γ=0.95;z∈[500,∞)时γ=0.90
同理:
x+y∈[0,200)时δ=1.00 ;x+y∈[200,500)时δ=0.95;x+y∈[500,∞)时δ=0.90
x+y+z∈[0,200)时ε=1.00 ;x+y+z∈[200,500)时ε=0.95;x+y+z∈[500,∞)时ε=0.90
由此根据题中所给出的已知条件可列出如下方程:
α*x+β*y=δ*(α*x+β*y)+13.5                                     (1)
α*x+β*y+γ*z=ε*(α*x+β*y+γ*z)+39.4                        (2)
α*x=20/31*γ*z                                                        (3)
利用计算机的循环功能,将所有情况考虑一遍,即α、β、γ、δ、ε五个数分别取1.00、0.95、0.90,在每种情况下分别求解一次方程组(1)+(2)+(3)。如果解出的解与前面的系数取值相符的话就是解,否则不是解。总共要解3^5=243次上面的三元一次线性方程组。有可能存在的解不止一个,也可能无解,要编程序计算后才知道。
5楼2015-01-31 10:22:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smartfx

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by peterflyer at 2015-01-31 10:22:29
我觉得应该这么做:
假设第一二三次单独付款在没有折扣的情况下的金额分别为x,y,z,有了折扣后再分别付款时的金额就会为α*x、β*y、γ*z,其中α、β、γ为折扣系数,即:
x∈[0,200)时α=1.00 ;x∈[200,500)时 ...

Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim ri As Double
Dim rj As Double
Dim rk As Double
Dim secondPur As Double
Dim thirdPur As Double
Dim flag As Boolean

flag = False
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""

    For i = 1 To 500 Step 1
        TextBox4.Text = i
        For j = 1 To 500 Step 1
            TextBox5.Text = j
            For k = 1 To 500 Step 1
            TextBox6.Text = k
            
            If k > 500 Then
                rk = 0.9 * k
            Else
                If k > 200 Then
                    rk = 0.95 * k
                Else
                    rk = k
                    
                End If
            End If
            
            If i > 500 Then
                ri = 0.9 * i
            Else
                If i > 200 Then
                    ri = 0.95 * i
                Else
                    ri = i
                End If
            End If
            
            If j > 500 Then
                rj = 0.9 * j
            Else
                If j > 200 Then
                    rj = 0.95 * j
                Else
                    rj = j
                End If
            End If
            
            If i + j > 500 Then
                secondPur = (ri + rj) * 0.9
            Else
                If i + j > 200 Then
                    secondPur = (i + j) * 0.95
                Else
                    secondPur = i + j
                End If
            End If
            
            If i + j + k > 500 Then
                thirdPur = (i + j + k) * 0.9
            Else
                If i + j + k > 200 Then
                    thirdPur = (i + rj + k) * 0.95
                Else
                    thirdPur = i + j + k
                End If
            End If
            
             If Abs(k * 20 / 31 - i) < 0.0001 And Abs(ri + rj - secondPur - 13.5) < 0.0001 And Abs(ri + rj + rk - thirdPur - 39.4) < 0.0001 Then
                flag = True
                TextBox1.Text = ri
                TextBox2.Text = rj
                TextBox3.Text = rk
                Exit Sub
                           
            End If
            
            Next k
           Next j
        Next i
                    
End Sub
我有用vba试过,这个是用excel的vba算的,不过因为正好答案是整数,所以有结果。我用ansys试了好多次,不同的初始值都会造成不同的结果。所以我用ansys的这个算法可能有问题。直接列方程是能求到答案的。因为三次一起付才节省39.4元,所以每次付款不会超多500,不需要243次
6楼2015-01-31 12:20:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sotf

银虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
用ANSYS整的?能干这个?不是搞数值模拟的软件吗?
不留遗憾!
7楼2015-01-31 12:53:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

smartfx

新虫 (初入文坛)

引用回帖:
7楼: Originally posted by sotf at 2015-01-31 12:53:09
用ANSYS整的?能干这个?不是搞数值模拟的软件吗?

可能不是很合适,不过这段时间在学习,刚好碰到这个题目,试试了。有个用ansys优化搞下面这个问题的算例:ab两地相距()公里,每公里消耗汽油量与速度平方成正比,每小时司机工资(),求最优速度,让成本最小。具体的系数忘了。
8楼2015-01-31 19:16:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 smartfx 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 329求调剂 +3 想上学吖吖 2026-03-19 3/150 2026-03-19 23:25 by fmesaito
[考研] 复试调剂 +4 z1z2z3879 2026-03-14 6/300 2026-03-19 17:18 by fei626-918
[考研] 【考研调剂】化学专业 281分,一志愿四川大学,诚心求调剂 +5 吃吃吃才有意义 2026-03-19 5/250 2026-03-19 16:18 by 30660438
[考研] 一志愿天津大学化学工艺专业(081702)315分求调剂 +11 yangfz 2026-03-17 11/550 2026-03-19 15:06 by houyaoxu
[考研] 一志愿985,本科211,0817化学工程与技术319求调剂 +10 Liwangman 2026-03-15 10/500 2026-03-19 10:25 by 无际的草原
[考研] 274求调剂 +6 S.H1 2026-03-18 6/300 2026-03-19 09:34 by 花店相见
[考研] 材料专硕英一数二306 +5 z1z2z3879 2026-03-18 5/250 2026-03-19 07:43 by BruceLiu320
[考研] 085600材料与化工 +5 安全上岸! 2026-03-16 5/250 2026-03-18 15:33 by cmz0325
[考研] 08工科 320总分 求调剂 +5 梨花珞晚风 2026-03-17 5/250 2026-03-18 14:49 by haxia
[考研] 302求调剂 +10 呼呼呼。。。。 2026-03-17 10/500 2026-03-18 12:45 by Linda Hu
[考研] 278求调剂 +5 烟火先于春 2026-03-17 5/250 2026-03-18 08:43 by 星空星月
[考研] 326求调剂 +5 上岸的小葡 2026-03-15 6/300 2026-03-17 17:26 by ruiyingmiao
[考研] 考研化学学硕调剂,一志愿985 +4 张vvvv 2026-03-15 6/300 2026-03-17 17:15 by ruiyingmiao
[考研] 308求调剂 +4 是Lupa啊 2026-03-16 4/200 2026-03-17 17:12 by ruiyingmiao
[考研] 085601求调剂 +4 Du.11 2026-03-16 4/200 2026-03-17 17:08 by ruiyingmiao
[考研] 一志愿苏州大学材料工程(085601)专硕有科研经历三项国奖两个实用型专利一项省级立项 +6 大火山小火山 2026-03-16 8/400 2026-03-17 15:05 by 无懈可击111
[考研] 294求调剂 +3 Zys010410@ 2026-03-13 4/200 2026-03-15 10:59 by zhq0425
[考研] 328求调剂 +3 5201314Lsy! 2026-03-13 6/300 2026-03-14 15:31 by hyswxzs
[考研] 266求调剂 +4 学员97LZgn 2026-03-13 4/200 2026-03-14 08:37 by zhukairuo
[考研] 304求调剂 +7 7712b 2026-03-13 7/350 2026-03-13 21:42 by peike
信息提示
请填处理意见