我正在尝试使用scipy.optimize中的linprog来解决这个问题。
沙拉是由以下材料组成的任何组合:(1)番茄,(2)生菜,(3)菠菜,(4)胡萝卜,(5)油。每种沙拉必须包含:(A)至少15克蛋白质,(B)至少2克且至多6克脂肪,(C)至少4克碳水化合物,(D)至多100毫克钠。(E)你不希望你的沙拉中含有超过50%的绿色蔬菜。这些成分的营养成分(每100克)是
的数据
解一个线性规划,使沙拉在营养限制下的热量最少。我想我可能在我的限制下做错了什么,欢迎任何建议。
linprog(c=21, 16, 371, 346, 884],
A_ub=[[0.85, 0.162, 12.78, 8.39, 0],
[0.33, 0.02, 1.58, 1.39, 0],
[4.64, 2.37, 74.69, 80.70, 0],
[9, 8, 7, 508, 0],
[0, 0, 0, 0, 0]] ,
b_ub=[15, 2, 4,100,50],
bounds=[(0, None), (0, None), (0, None), (0, None), (0, None)])
字符串
3条答案
按热度按时间bcs8qyzn1#
因为你有很少的变量和约束,我们可以这样写你的约束:
字符串
(*)然而,正如@AirSquid所写的,你不能用
linprog
传递约束的下限,你必须改变约束的意义来设置上限。型
(E)你不希望你的沙拉中的绿色成分超过50%。
意思是:
型
你必须简化这个表达式来提取系数:
型
现在你可以创建
c
、A_ub
和b_ub
参数了:型
输出量:
型
wfypjpf42#
三件事:
1.你至少有3个错别字在你的
A
矩阵,我看到与给定的信息比较。修复它们。1.在问题中,你被告知约束是“大于或等于”,但是linprog只给你一个
A_ub
和b_ub
来表示小于或等于的约束。怎么办?使用一些代数来将约束转换为linprog
接受的约束。字符串
1.让上面的东西工作,然后尝试50%的绿色约束。写出来 * 代数 *,然后转换成另一行
A
和标量元素b
tez616oj3#
其他答案都是正确的,但.
个字符