lingo程序疑问

lingo程序疑问,第1张

我想变量的意义你应该很清楚了 c表示第j料厂向第i个工地运输的量 @free是取消变量的非负限制 也就是说改建料厂的地点可以是负坐标的 init是给计算赋初值 计算会从给的初值处开始迭代 如果初值和最优解相差不大会提高计算效率

下面的目标函数是对运量和距离的积求和最小

@for(demand(i):@sum(supply(j):c(i,j))=d(i););

对每个工地 各个料厂向这个工地的运量的和等于需求

@for(supply(i):@sum(demand(j):c(j,i))<=e(i););

对每个料厂 向各个工地运量的和小于存量

最后一句说过了

1. 求解模型(Slove):Ctrl+S

2. 求解结果(Solution):Ctrl+O

3. 查看(Look):Ctrl+L

4. 灵敏性分析(Range,Ctrl+R):为了激活灵敏性分析,运行 LINGO|Options,选择 General Solver Tab, 在 Dual Computations 列表框中,选择 Prices and Ranges 选项。

max=60desks+30tables+20chairs;

8desks+6tables+chairs<=48;

4desks+2tables+15chairs<=20;

2desks+15tables+5chairs<=8;

tables<=5;

求解这个模型,并激活灵敏性分析。这时,查看报告窗口(Reports Window),可以看到结果。

“Global optimal solution found at iteration: 3”表示 3 次迭代后得到全局最优解。

 “Objective value:2800000”表示最优目标值为 280。 “Value”给出最优解中各变量的值:2 个书桌(desks), 0 个餐桌(tables), 8 个椅子(chairs)。所以 desks、chairs 是基变量(非 0),tables 是非基变量(0)。

“Slack or Surplus”给出松驰变量的值:

第 1 行松驰变量 =280(模型第一行表示目标函数,所以第二行对应第一个约束)

第 2 行松驰变量 =24

第 3 行松驰变量 =0

第 4 行松驰变量 =0

第 5 行松驰变量 =5

“Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。其中基变量的reduced cost值应为 0, 对于非基变量 Xj, 相应的 reduced cost值表示当某个变量Xj 增加一个单位时目标函数减少的量( max型问题)。

本例中:变量tables对应的reduced cost值为 5,表示当非基变量tables的值从 0 变为 1 时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值 = 280 - 5 = 275。

“DUAL PRICE”(对偶价格)表示当对应约束有微小变动时, 目标函数的变化率。输出结果中对应于每一个约束有一个对偶价格。 若其数值为 p, 表示对应约束中不等式右端项若增加 1 个单位,目标函数将增加 p 个单位(max 型问题)。显然,如果在最优解处约束正好取等号(也就是“紧约束”,也称为有效约束或起作用约束),对偶价格值才可能不是0。

本例中:第 3、4 行是紧约束,对应的对偶价格值为 10,表示当紧约束

3) 4 DESKS + 2 TABLES + 15 CHAIRS <= 20   变为   3) 4 DESKS + 2 TABLES + 15 CHAIRS <= 21时,目标函数值 = 280 +10 = 290。对第 4 行也类似。

对于非紧约束(如本例中第 2、5 行是非紧约束),DUAL PRICE 的值为 0, 表示对应约束中不等式右端项的微小扰动不影响目标函数。有时, 通过分析 DUAL PRICE, 也可对产生不可行问题的原因有所了解。

灵敏度分析的结果是

目标函数中 DESKS 变量原来的费用系数为 60,允许增加(Allowable Increase)=4、允许减少(Allowable Decrease)=2,说明当它在[60-4,60+20] = [56,80]范围变化时,最优基保持不变。对 TABLES、CHAIRS 变量,可以类似解释。由于此时约束没有变化(只是目标函数中某个费用系数发生变化),所以最优基保持不变的意思也就是最优解不变(当然,由于目标函数中费用系数发生了变化,所以最优值会变化)。

第 2 行约束中右端项(Right Hand Side,简写为 RHS)原来为 48,当它在[48-24,48+∞]= [24,∞]范围变化时,最优基保持不变。第 3、4、5 行可以类似解释。不过由于此时约束发生变化,最优基即使不变,最优解、最优值也会发生变化。

5. 模型通常形式(Generate):Ctrl+G

6. 选项(Options):Ctrl+I    (28页—35页)

(1)Interface(界面)选项卡

(2)General Solver(通用求解器)选项卡

(3)Linear Solver(线性求解器)选项卡

(4)Nonlinear Solver(非线性求解器)选项卡

(5)Integer Pre-Solver(整数预处理求解器)选项卡

(6)Integer Solver(整数求解器)选项卡

(7)Global Solver(全局最优求解器)选项卡

优势:简单的模型表示。方便的数据输入和输出选择。强大的求解器。交互式模型或创建Turn-key应用程序。其特色在于内置建模语言,提供十几个内部函数,可以允许决策变量是整数。

在各个领域本书都配有丰富的案例和求解程序,帮助读者深入理解LINGO软件。同时,本书专门配有一章介绍数学建模中的应用实例,以10个数学建模经典案例为基础,其中9个案例的全部模型都用LINGO编程实现,并在LINGO12版本调试通过。这些案例凝聚了作者多年来积累的编程经验和巧妙构思。

本书在深入浅出地介绍LINGO基本用法和LINGO与外部文件接口的基础上,分两个层次介绍了LINGO软件及其应用:

第一个层次以数学规划、图论与网络优化、多目标规划等LINGO软件常用领域为背景,介绍LINGO软件求解优化模型的常规手段和技巧。

第二个层次以博弈论、存储论、排队论、决策分析、评价方法、最小二乘法等领域为背景,介绍LINGO软件在非优化领域的应用,充分展示LINGO软件的优势和应用扩展。

你要雅各比还是高斯赛德尔消元法?

这是我做数值计算实验高斯消元法的程序 你可以改改 (这个从报告上粘贴的 可能文本有问题 错了再找我)

function x=Guss(A,b)

A=[A,b];

[m,n]=size(A);

for k=1:m

c=A(k:m,k);

c=abs(c);

d=max(c);

e=find(c==d);

e=e+k-1;

l=A(k,:);

A(k,:)=A(e,:);

A(e,:)=l;

A

for z=k+1:m

A(z,k:n)=A(z,k:n)-A(k,k:n)A(z,k)/A(k,k);

end

end

A

x=zeros(m,1);

x(m)=A(m,n)/A(m,m)

for i=m-1:-1:1

x(i)=(A(i,n)-sum(A(i,1:m)x'))/A(i,i);

end

x

下面调用Guss(你自己调用你的矩阵,我只是举例说明下怎么调用)

A=[0101 2304 3555;

-1347 3712 4623;

-2835 1072 5643];

b=[1183 2137 3035]';

X=Guss(A,b)

x=A\b

以上就是关于lingo程序疑问全部的内容,包括:lingo程序疑问、LINGO 菜单、如何使用LINGO软件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10123914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存