lingo入门 您所在的位置:网站首页 求矩阵绝对值例题 lingo入门

lingo入门

2023-07-25 05:35| 来源: 网络整理| 查看: 265

lingo入门-集合和矩阵 例题引入矩阵工厂矩阵的赋值函数循环与求和二维矩阵练习

跟着B站的学习记录:传输门

例题引入

在这里插入图片描述 解法【暴力枚举法】 在这里插入图片描述 在这里插入图片描述

矩阵工厂

测试代码

sets: factory /1..6/ : a,b; plant /1..3/ : x,y; endsets

在这里插入图片描述 在这里插入图片描述 ① factory 和 plant 都是制造矩阵的工厂,但它们是两家不同的工厂。 ② factory 工厂后面的 /1…6/ 说明它专门生产 1 × 6 1\times6 1×6 的矩阵。factory 工厂最后面出现的 a 和 b,都是 1 × 6 1\times6 1×6 的矩阵。 ③ plant 工厂后面的 /1…3/ 说明它专门生产 1 × 3 1\times3 1×3 的矩阵。plant 工厂最后面出现的 x 和 y,都是 1 × 3 1\times3 1×3 的矩阵。 ④ 矩阵工厂的名字 factory 是随便起的,工厂所生产行矩阵的名字 a 和 b 也是随便起的。 ⑤ 以上这四句话,本质是定义了四个行矩阵的大小,矩阵工厂只是中介。 ⑥ 生产完矩阵后,工厂和矩阵之间将脱开联系。 ⑦ Lingo 不是一行一行读代码的,所以用 sets:和 endsets 表示矩阵工厂生产流程的起止。

矩阵的赋值 sets: factory /1..6/ : a,b; plant /1..3/ : c,x; endsetsdata: a = 1, 2, 3, 4, 5, 6; b = 6.0, 5.0, 4.0, 3.0, 2.0, 1.0; c = 10, 20, 30; enddata

以上程序对应以下知识点: ①不是每个矩阵都要赋值,有些矩阵正是我们要求解的变量。 ②需要赋值的矩阵必须赋满,不能给6个元素的矩阵只赋3个数值。 ③Lingo中可以给矩阵赋整数,也可以赋小数,但是不能赋值分数。 ④Lingo不是一行一行读代码的,所以用data:和enddata表示矩阵赋值的起止。

函数循环与求和

在这里插入图片描述

model: sets: gc /1..5/:a,x; endsets data: a = 1, 2, 3, 4, 5; enddata max=s; @for( gc(i):s=a(i)*x(i) ); @sum(gc(i):x(i))=5000; end

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 使用矩阵工厂创建后,整个程序用model和end包起来

二维矩阵 sets: factory /1..6/ : a; plant /1..8/ : d; Cooperation(factory,plant) : c, x; endsets data: c=6,2,6,7,4,2,5,8 4,9,5,3,8,5,8,2 5,2,1,9,7,4,3,3 7,6,7,3,9,2,7,1 2,3,9,5,7,2,6,5 5,5,2,2,8,1,4,3; enddata

以上程序可以得到以下结论: ① Cooperation 大工厂是由 factory 和 plant 两家小工厂合并而办,可生产 6 × 8 6\times8 6×8 的矩阵。 ② a 是 1 × 6 1\times6 1×6 的矩阵,d 是 1 × 8 1\times8 1×8 的矩阵,c 和 x 都是 6 × 8 6\times8 6×8 的矩阵。 ③ 如果将 Cooperation(factory,plant)中的 factory 与 plant 调换位置,则生产 8 × 6 8\times6 8×6 的矩阵。 ④ 工厂合并的名字 Cooperation 是随便起的,矩阵的名字 c 和 x 也是随便起的。

练习

在这里插入图片描述

model: sets: factory /1..6/ : a; plant /1..8/ : d; coo(factory,plant) : c, x; endsets data: a=60,55,51,43,41,52; d=35,37,22,32,41,32,43,38; c=6,2,6,7,4,2,5,8 4,9,5,3,8,5,8,2 5,2,1,9,7,4,3,3 7,6,7,3,9,2,7,1 2,3,9,5,7,2,6,5 5,5,2,2,8,1,4,3; enddata min=@sum(coo(i,j):c(i,j)*x(i,j)); !min=@sum(factory(i):@sum(plant(j):c(i,j)*x(i,j))); @for(factory(i):@sum(plant(j):x(i,j))


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有