【问题标题】:Linear programming (optimization)线性规划(优化)
【发布时间】:2018-12-07 00:39:46
【问题描述】:

我想问你关于优化线性程序的问题。

我有一个目标函数,约束函数如下,

变量(x1x2x3x4x5x6)是产品的数量,现在产品的数量必须是固定的数字。 这个问题的目标是优化产品的数量。

  1. 目标函数 (c.T * [x1, x2, x3, x4, x5, x6])

    [[c11, c12, c13, c14, c15 c16],
    [c21, c22, c23, c24, c25, c26],
                                          X     [x1, x2, x3, x4, x5, x6]
    [c31, c32, c33, c34, c35, c36],
    [c41, c42, c43, c44, c45, c45]]
    

    我想优化的结果如下:

    c11*x1 + c12*x2 + c13*x3 + c14*x4 + c15*x5 + c16*x6 +
    c21*x1 + c22*x2 + c23*x3 + c24*x4 + c25*x5 + c26*x6 +
    c31*x1 + c32*x2 + c33*x3 + c34*x4 + c35*x5 + c36*x6 +
    c41*x1 + c42*x2 + c43*x3 + c44*x4 + c45*x5 + c46*x6 = optimized value
    
  2. 约束函数

    • 约束_1

      5500000*x1+2500000*x2+825000*x3+5500000*x4+5500000*x5+5500000*x6 <= 800000000
      
    • 约束_2

      x1 <= 10
      x2 <= 10
      x3 <= 10
      x4 <= 10
      x5 <= 10
      x6 <= 10
      

我遇到的问题是“Cs(c1,1 ~ c4,5) 的目标函数”。

如果对象函数是3 * x1 + 2 * x2 + 3 * x3 + 4 * x4 + 5 * x5 + 6 * x6,那么下面的代码会更容易解决:

c = np.array([3, 2, 3, 4, 5, 6])
A = np.array([[5500000, 2500000, 825000, 5500000, 5500000, 5500000], [1,0,0,0,0,0], [0,1,0,0,0,0], [0,0,1,0,0,0], [0,0,0,1,0,0], [0,0,0,0,1,0], [0,0,0,0,0,1]])
b = np.array([800000000, 10, 10, 10, 10, 10, 10])
c = matrix(c, tc='d')
G = matrix(A, tc='d')
h = matrix(b, tc='d')
status, x = glpk.ilp(c, g, h, I=set([0,1,2,3,4,5]))

请帮助解决线性规划问题。

【问题讨论】:

  • 不清楚您想在这里问我们什么问题。
  • 你不是在几个小时前问过同样的问题吗?

标签: python math optimization glpk cvxopt


【解决方案1】:

只有在您安装了纸浆时,以下内容才有效。这是我经常使用的 LP 求解库。如果您没有将 c11 到 c45 定义为整数或浮点数,则以下可能不起作用。您还需要将 c 值初始化为 LP 变量。

from pulp import *

# Let's program know that you want to maximize subject to constraints
prob = LpProblem("LP problem", LpMaximize)

# initialize variables
x1=LpVariable("x1",lowBound=0)
x2=LpVariable("x2",lowBound=0)
x3=LpVariable("x3",lowBound=0)
x4=LpVariable("x4",lowBound=0)
x5=LpVariable("x5",lowBound=0)
x6=LpVariable("x6",lowBound=0)

# objective function must be "added" to prob BEFORE constraints.
prob += c11*x1 + c12*x2 + c13*x3 + c14*x4 + c15*x5 + c16*x6 + c21*x1 + c22*x2 + 
c23*x3 + c24*x4 + c25*x5 + c26*x6 + c31*x1 + c32*x2 + c33*x3 + c34*x4 + c35*x5+ 
c36*x6 + c41*x1 + c42*x2 + c43*x3 + c44*x4 + c45*x5 + c46*x6

# constraints
prob += 5500000*x1+2500000*x2+825000*x3+5500000*x4+5500000*x5+5500000*x6 <= 
800000000
prob += x1 <= 10
prob += x2 <= 10
prob += x3 <= 10
prob += x4 <= 10
prob += x5 <= 10
prob += x6 <= 10

现在运行以下:

status = prob.solve()
LpStatus[status]

最后运行以下命令:

value(x1), value(x2), value(x3), value(x4), value(x5), value(x6) 
value(prob.objective)

如果您遇到任何问题,请告诉我,并发表评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    相关资源
    最近更新 更多