0

f(x,y,z) = x*y*zいくつかの制約x<=20 + yy < z+2Pulp を使用して、次の単純な関数を最小化したいと思います。これを行う方法を知っている人はいますか?

しようとしたとき、私はいつも得ていました

TypeError: Non-constant expressions cannot be multiplied

どんな助けでも大歓迎です。以下のコードを見つけてください

            from pulp import *

            #pulp.pulpTestAll()
            prob = LpProblem("Profit", LpMinimize)

            # Variables
            x = LpVariable.dicts("x",[0,1,2],0 ,100)

            def fun(x):
                return x[0]*x[1]*x[2]

            # Objective
            opt=fun(x)
            prob += opt

            # Constraints
            prob += x[0]   <= 20
            prob += x[1]   <= x[2]+2

            #print prob
            print prob        
            status=prob.solve()
            print "Status: %s" %LpStatus[status]

            #Solution
            for v in prob.variables():
                print v.name, "=", v.varValue

            print "Optimum =", value(prob.objective)
4

1 に答える 1

0

PuLP は線形プログラムしか解けないと思います。

あなたの場合、3つの変数の間に積があるため、3次(したがって非線形)の目的関数があります。

そのため、PuLP でこのエラーが発生します。

于 2012-08-28T09:30:16.273 に答える