当前位置: 首页 > news >正文

如何制作公司appseo怎样才能优化网站

如何制作公司app,seo怎样才能优化网站,怎样开发一个app软件,做网站被用作非法用途好像还是要学一下Gurobi如何使用的,不然这代码着实有点抽象了 一、入门操作 一般来说,求解一个数学规划模型的时候,通常会按照如下步骤解决问题: 设置变量---addVar()。 更新变量空间---update()。 设定目标函数---setObjective()。 设定约…

好像还是要学一下Gurobi如何使用的,不然这代码着实有点抽象了

一、入门操作

一般来说,求解一个数学规划模型的时候,通常会按照如下步骤解决问题:
设置变量---addVar()。
更新变量空间---update()。
设定目标函数---setObjective()。
设定约束条件---addConstr()。
执行最优化---optimize()。

创建模型:

import gurobipy
model = gurobipy.Model('LP模型测试1')  # 创建一个模型

(1) 设置决策变量

一次创建一个变量:

x = model.addVar(lb=0.0, ub=gurobipy.GRB.INFINITY, vtype=gurobipy.GRB.CONTINUOUS, name="")
  • lb=0.0:变量的下界,默认为0.0。 
  • ub=gurobipy.GRB.INFINITY:变量的上界,默认为无穷大。 
  • vtype=gurobipy.GRB.CONTINUOUS:变量的类型,默认为连续型号。变为GRB.BINARY则是0-1变量,变为GRB.INTEGER则为整数变量。 
  • name="":变量名,默认为空。 

一次创建多个变量:

x = model.addVars(*indexes, lb=0, ub=gurobipy.GRB.INFINITY, vtype=gurobipy.GRB.CONTINUOUS, name="")

示例: 

x = model.addVars(3, 4, 5, vtype=gurobipy.GRB.BINARY, name="C")

一次性生成3x4x5个变量。x包含了3x4x5个变量,可以通过x[i,j,k]来访问单个的变量。

(2)更新变量空间

model.update()

(3)设定目标函数

单目标优化

model.setObjective(expression,sense=None)
  • expression:表达式,可以是一次或者二次函数的类型。 
  • sense:求解类型,GRB.MINIMIZE则为最小值,GRB.MAXMIZE则为最大值。 
model.setObjective(8 * x1 + 10 * x2 + 7 * x3 + 6 * x4 + 11 * x5 + 9 * x6, gurobipy.GRB.MINIMIZE)

多目标优化代码:

model.setObjectiveN(expression, index, priority=0, weight=1.0, abstol=0, reltol=0, name="")
  • expression:表达式,可以是一次或者二次函数类型。 
  • index:目标函数对应的序号(默认0,1,2,...),以index=0作为目标函数的值,其余值需要另外设置参数。 
  • priority:分层序列法多目标决策的优先级,值越大优先级越高。 
  • weight:线性加权多目标决策权重(在优先级相同的时候发挥作用)。 
  • abstol:分层序列法多目标决策时允许的目标函数值的最大降低量。 
  • reltol:分层序列法多目标决策时允许的目标函数值的最大降低比率。

(4)添加约束条件:

创建一个约束条件

model.addConstr(expression, name="")
  • expression: 布尔表达式,可以是一次或二次函数类型
  • name: 约束式的名称 
model.addConstr(12 * x1 + 9 * x2 + 25 * x3 + 20 * x4 + 17 * x5 + 13 * x6 >= 60, "c0")

创建多个约束条件

model.addConstrs(expressions, name="")

创建一个指示变量约束

model.addGenConstrIndicator(binvar, binval, expression, name="")

指示变量 binvar 的值取 binval 时, 进行约束 expression 

或者 
方法1: 构造指示变量  ,则上述约束转化为: (M是一个很大的数,可以取1000)
方法2:转化为二次约束,但是如果矩阵为非正定矩阵,则无法求解:

(5)执行最优化

model.Params.LogToConsole=True # 显示求解过程
model.Params.MIPGap=0.0001 # 百分比界差
model.Params.TimeLimit=100 # 限制求解时间为 100s
model.Params.Presolve = -1 # 预处理程度, 0关闭,1保守,2激进
model.Params.MIPFocus = 0 # 求解侧重点. 1快速找到可行解, 2证明最有, 3侧重边界提升, 0均衡搜索
model.Params.SolutionLimit = inf # 求解数量, 默认求所有解, 比较出最优的结果, 只需要可行解时可以设置该参数为1
model.Params.NonConvex = 1  # 默认求解器,改为 2 时可以解决非凸二次优化问题
​
model.optimize()

(6)查看模型优化结果

  • 查看函数值以及变量值
# 查看单目标规划模型的目标函数值
print("Optimal Objective Value", model.objVal)  
# 查看多目标规划模型的目标函数值
for i in range(model.NumObj):MODEL.setParam(gurobipy.GRB.Param.ObjNumber, i)print(f"Obj {i+1} = {model.ObjNVal}")  
# 查看变量取值
for var in model.getVars():print(f"{var.varName}: {round(var.X, 3)}")

(7)辅助函数

quicksum()
quicksum相当于sum及其求和符号,效率更高。
写为: 

for i in I:model.addConstr(quicksum(x[i,j] for j in J) <= 5)

此外,它还支持迭代器、生成器协议,也就是说,可以通过下面的代码,实现更为复杂的过滤、求和方法. 

for c in C:model.addConstr(gurobipy.quicksum(x[d,i,j] for d in D for i in range(0, 24) for j in range(i + 1, 25) if i <= c < j) >= R[c])


 

 

 

http://www.wangmingla.cn/news/122380.html

相关文章:

  • 长春商城网站制作湖南seo
  • wordpress 导出pdf文件大小北京seo关键词排名优化软件
  • 帮别人做ppt赚钱的网站企业全网推广公司
  • 如室设计网站河南今日头条新闻
  • 电子科技公司网站网页设计新闻投稿平台有哪些
  • 企业建设网站应该一般多少钱网站友情链接是什么
  • 网站被墙301怎么做有没有自动排名的软件
  • 如何创建属于个人网站百度大数据分析工具
  • 如何向雅虎提交网站网络营销的主要手段和策略
  • 做go分析的网站网络推广免费平台
  • 电商销售渠道有哪些关键词优化推广排名
  • 中国正规官方网站有哪些外贸建站推广公司
  • 中山市城乡和住房建设局网站优化大师是什么
  • 个人搭建网站教程最近疫情最新消息
  • 湖南网站建设价位微信小程序平台官网
  • 公司做网站的价格拉新充场app推广平台
  • 做网站视频的赚钱吗百度大数据分析工具
  • 重庆营销型网站双11各大电商平台销售数据
  • 龙岩做网站设计公司北京官网seo
  • 武汉做网站icp搜索引擎营销简称
  • 中国特色政府网站建设模式百度网盘客服人工电话95188
  • 做IP授权的一般看什么网站百度新闻网站
  • 深圳做生鲜的网站叫什么免费下载app并安装
  • 做盗版电影网站犯法不百度网站推广价格
  • 做网站要学那些安年软文网
  • 网站建设自助建站企业上海网站制作公司
  • 做一个信息发布网站要多少钱优化课程
  • 国外注册的域名国内能用吗如何优化网站快速排名
  • diy网站开发公司seo云优化如何
  • 龙华做网站公司软文范例100例