一.实验目的。
1.了解ampl软件及简介
2.掌握ampl的基本操作。
3.了解ampl的基本语句。
4.能够熟练使用ampl求解线性规划问题。
二.实验内容和实验结果。
一)有关ampl的基本知识及操作语句。
的简介。ampl是一个运筹学建模平台,可以建立让很多优化器都明白的模型;
ampl可以让数据和模型分离开;
ampl可以用简练的数学表达式减少重复输入公式的数量。
2.运筹学模型关键要素。
1)集合(set):往往是表达式的下标出处,在ampl中的表达方式是set。
2)参数(parameter):是已知的数值,在ampl中的表达方式是param。
3)变量(variable):是需要优化得出的数值,在ampl中的表达方式是var。
4)目标(objective):是需要最大化或最小化的指标,在ampl中的表达方式是minimize或maximize。
5)约束(constrain):是优化需要满足的条件,在ampl中的表达方式是subject to。
建模常用关键词。
in 属于某个集合。
sum 求和。
check 用于数据校验。
integer 定义整数变量。
binary 定义0-1变量。
的文件格式。
mod为模型文件 model
dat为数据文件 data
run为批命令文件 include
运行的常用指令。
model加载模型
data加载数据
solve运行优化
display显示优化结果。
include运行批处理指令(.run文件)
reset重置模型和数据
expand显示填充数据后的模型
read table读入excel或数据库
write table写入excel或数据库
print/printf 输出格式字符到屏幕或者文件。
option solver gurobi
设定优化器为gurobi,可以求解线性规划和混合整数线性设定优化器为gurobi,可以求解线性规划和混合整数线性规划,以及二次型规划。
二)用ampl求解营养搭配问题。
1.求花费最少(不考虑营养均衡问题)
在ampl中双击打开目录,输入表示模型和数据的语句得到如下结果。从中可以看出,购买46.67份空心粉是花费最少的方案,花费88.
2元。但很显然,人体需要各种营养和维生素,不可能每天每顿饭都吃空心粉,所以要改进模型。
2.把数据和模型结合填充在一起,形成完整的模型。方法是使用expand语句。由此我们可以看见,总成本(total cost)由哪些具体的数据相乘。
3.增加一个整数限定,使营养更均衡。
方法:1)在操作界面右侧文件里,在语句“var buy >f_min[j], f_max[j];”中,第一个花括号后面加上integer,并保存模型。如下页图所示:
2)在ampl中部的编程界面中加入转换优化器的语句:“ampl:option solver gurobi;”
注意:在键入新的模型之前要输入语句:“ampl:reset;”,清空之前的操作,以免报错。
由上页的程序看出,考虑整数因素时,成本最低的情况是,购买2份chicken,43 份macaroni & cheese和1份meat loaf,最低总成本为88.44美元。不过很显然,此种解决方法虽然在一定程度上增加了事物的多样性,但是仍有很多事物没有在采购范围内,而且在解决方案中没有主食。
此模型还需优化。
4.可以根据个人喜好和膳食平衡来修改某些食物的最小购买值和最大购买值,以达到模型的优化。下面对事物购买的最大值最小值进行要求。
1)牛肉营养价值高,含有较高的维生素a、c和b1、b2,但单价也比较贵。假设牛肉至少买一份,至多买五份;
2)鸡肉含有的维生素较少,**只比牛肉便宜0.6美元。假设鸡肉至少买两份,至多买三份;
3)鱼肉物美价廉,假设至少买两份至多买四份;
4)火腿也属于肉类方便即食,这里要求至少买一份,最多买五份;
5)芝士通心粉意大利式细面条都属于主食,**相比意大利细面条便宜。这里要求芝士通心粉至少购买三份,至多购买二十五份;
6)肉卷可以不买,但是至多买五个;
7)火鸡也可以不买,但是最多买一只。
具体操作见下页。
更改之后的约束条件如下:
运行结果如下图所示:
由上图运行结果可知,牛肉买一份,鸡肉买三份,鱼肉买一份,火腿买一份,芝士通心粉买二十五份,肉卷买五份,意大利细面条大约买十份,火鸡不买。此种购买方法的成本大约为95美元。
三)实验总结。
由于是初学ampl,在实验刚开始时出现了很多乱码的问题,比如忘记清空数据之后加入reset语句等。在解决营养搭配问题时,由于操作不成熟不熟练尝试了很多次很多种搭配方法。总的来说,ampl确实很容易入门,一些错误在此次实验过后得到了纠正,强化了建模的思维。
运筹学实验报告
山东工商学院。实验报告。课程名称运筹学。实验项目名称 excel规划求解 实验地点商学实验中心205室 实验 实训 日期周二下午 节 班级。姓名。学号。一 实验概述。一 实验目的。实验目的在于掌握应用计算机工具解决运筹学模型优化求解的方法步骤,熟悉运筹学优化软件excel 优化功能的使用,为今后在实...
运筹学实验报告
内容运输问题。班级。学生。学号。指导教师。2016 2017学年第二学期 一 p143页5.5某试验设备厂按合同规定在当年前四个月末分别提供同一型号的干燥箱 台给用户。该厂每个月的生产能力是65台,如果生产的产品当月不能交货,每台每月必须支付维护及存储费0.15万元,已知四个月内每台生产费分别是 9...
运筹学实验报告
西华大学实验报告。开课学院及实验室 交通与汽车学院计算机中心实验时间 年月日。1 实验目的。a 训练建模能力。b 应用excel建模及求解的方法应用 c 通过实验进一步掌握运筹学有关方法原理 求解过程,提高学生分析问题和解决问题能力。2 实验设备 仪器及材料。计算机 excel ilog软件。3 实...