栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

线性编程(Simplex LP)PuLP?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

线性编程(Simplex LP)PuLP?

通常,您将创建一个变量字典(

x
在这种情况下)和一个模型变量(
mod
在这种情况下)。要创建目标,您需要
sum
对变量乘以一些标量,然后将该结果添加到中
mod
。你通过再次计算的变量的线性组合,使用构建体的限制
>=
<=
或者
==
,和并称约束
mod
。最后,您将使用
mod.solve()
以获得解决方案。

import pulp# Create variables and modelx = pulp.LpVariable.dicts("x", df.index, lowBound=0)mod = pulp.LpProblem("Budget", pulp.LpMaximize)# Objective functionobjvals = {idx: (1.0/(df['30-day Cost'][idx]/df['Trials'][idx]))*(df['Success'][idx]/float(df['Trials'][idx])) for idx in df.index}mod += sum([x[idx]*objvals[idx] for idx in df.index])# Lower and upper bounds:for idx in df.index:    mod += x[idx] >= df['Cost Min'][idx]    mod += x[idx] <= df['Cost Max'][idx]# Budget summod += sum([x[idx] for idx in df.index]) == 5000.0# Solve modelmod.solve()# Output solutionfor idx in df.index:    print idx, x[idx].value()# 0 2570.0# 1 1350.0# 2 1080.0print 'Objective', pulp.value(mod.objective)# Objective 1798.70495012

数据:

import numpy as npimport pandas as pdidx = [0, 1, 2]d = {'channel': pd.Series(['Channel1', 'Channel2', 'Channel3'], index=idx),     '30-day Cost': pd.Series([1765.21, 2700., 2160.], index=idx),     'Trials': pd.Series([9865, 1500, 1200], index=idx),     'Success': pd.Series([812, 900, 333], index=idx),     'Cost Min': pd.Series([882.61, 1350.00, 1080.00], index=idx),     'Cost Max': pd.Series([2647.82, 4050.00, 3240.00], index=idx)}df = pd.Dataframe(d)df#    30-day Cost  Cost Max  Cost Min  Success  Trials   channel# 0      1765.21   2647.82    882.61      812    9865  Channel1# 1      2700.00   4050.00   1350.00      900    1500  Channel2# 2      2160.00   3240.00   1080.00      333    1200  Channel3


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/625934.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号