您的位置:首页 > 编程语言 > Python开发

用python pulp的线性规划方法计算满足营养所需的最少食物

2017-05-10 14:00 288 查看
1. 问题描述

食物的单位成本

巧克力松糕: $0.50 (每片)

巧克力冰激凌:$0.20 (每份)

可乐: $0.30 (每瓶)

菠萝芝士蛋糕:$0.80 (每片)

每天的食物需求

500 卡路里

6 盎司巧克力

10 盎司糖

8 盎司脂肪

食物营养含量

巧克力松糕:400 卡路里能量,3 盎司巧克力,2 盎司糖,2 盎司脂肪

巧克力冰激凌(每份):200 卡路里能量,2 盎司巧克力,2 盎司糖,4 盎司脂肪

可乐(每瓶):150 卡路里能量,0 盎司巧克力,4 盎司糖,1 盎司脂肪

菠萝芝士蛋糕(1 片):500 卡路里能量,0 盎司巧克力,4 盎司糖,5 盎司脂肪

目标:以最小的成本满足日常营养需要。

2. 建模

食品变量:

x1:巧克力松糕片数

x2:巧克力冰激凌的份数

x3:可乐的瓶数

x4:菠萝芝士蛋糕的片数

目标:0.5*x1 + 0.2*x2 + 0.3*x3 + 0.8*x4 金额最小

3. 准备实现

pip install pulp

4. 实现

import pulp

x1 = pulp.LpVariable("x1", 0, 500)

x2 = pulp.LpVariable("x2", 0, 6)

x3 = pulp.LpVariable("x3", 0, 10)

x4 = pulp.LpVariable("x4", 0, 8)

prob = pulp.LpProblem("myProblem", pulp.LpMinimize)

prob += 0.5*x1 + 0.2*x2 + 0.3*x3 + 0.8*x4

prob += 400*x1 + 200*x2 + 150*x3 + 500*x4 >= 500

prob += 3*x1 + 2*x2 + 0 + 0 >= 6

prob += 2*x1 + 2*x2 + 4*x3 + 4*x4 >= 10

prob += 2*x1 + 4*x2 + 1*x3 + 5*x4 >= 8

status = prob.solve()

pulp.LpStatus[status]

pulp.value(x1)

pulp.value(x2)

pulp.value(x3)

pulp.value(x4)

5. 参考
http://os.chinaunix.net/a2006/1011/1058/000001058294.shtml https://github.com/coin-or/pulp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: