QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2680|回复: 2
打印 上一主题 下一主题

Lingo中如何初始化矩阵的部分量?

[复制链接]
字体大小: 正常 放大
bill8341        

6

主题

3

听众

84

积分

升级  83.16%

  • TA的每日心情
    郁闷
    2017-9-22 15:06
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    新人进步奖

    跳转到指定楼层
    1#
    发表于 2016-3-3 17:15 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    M 是一个二维数组,其值非负

    比如M = 2 1 0
                  0 3 0
                  4 0 0;

    现定义一3维0-1数组T,想将T中部分变量赋值为1
    即M中不为0所对应的位置上的T赋值为1

    比如上面的M,则
    T(1,1,2) = 1;
    T(1,2,1) = 1;
    T(2,2,3) = 1;
    T(3,1,4) = 1;

    写为matlab程序可写成:
    for i = 1 : 3
       for j = 1 : 3
          if M(i,j) > 0
             T(i,j,M(i,j)) = 1;
          end
       end
    end

    谢谢了




    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

    21

    主题

    97

    听众

    3110

    积分

  • TA的每日心情
    奋斗
    2014-3-2 00:26
  • 签到天数: 243 天

    [LV.8]以坛为家I

      如果M是输入的常数矩阵的话,可以这样实现:
    SETS:
    ROW/1..3/;
    COL/1..3/;
    TIME/1..4/;
    MULTI(ROW, COL): M;
    TENSOR(ROW, COL, TIME): T;
    ENDSETS
    DATA:
    M = 2, 1, 0, 0, 3, 0, 4, 0, 0;
    ENDDATA
    CALC:
    @FOR(TENSOR(I, J, K):
         T(I, J, K) = 0;
         
         @IFC(M(I, J) #GT# 0:
              T(I, J, M(I, J)) = 1;
         );
    );
    ENDCALC
    这里面用到了@IFC()段,我不太记得是在哪个版本加入的了。

    输出是这样:
      Feasible solution found.
      Total solver iterations:                             0
      Elapsed runtime seconds:                          0.04

      Model Class:                                     . . .

      Total variables:                      0
      Nonlinear variables:                  0
      Integer variables:                    0

      Total constraints:                    0
      Nonlinear constraints:                0

      Total nonzeros:                       0
      Nonlinear nonzeros:                   0


                                                        Variable           Value
                                                        M( 1, 1)        2.000000
                                                        M( 1, 2)        1.000000
                                                        M( 2, 2)        3.000000
                                                        M( 3, 1)        4.000000
                                                     T( 1, 1, 2)        1.000000
                                                     T( 1, 2, 1)        1.000000
                                                     T( 2, 2, 3)        1.000000
                                                     T( 3, 1, 4)        1.000000

    点评

    bill8341  非常感谢!  详情 回复 发表于 2016-3-4 13:47
    有什么好说的
    回复

    使用道具 举报

    bill8341        

    6

    主题

    3

    听众

    84

    积分

    升级  83.16%

  • TA的每日心情
    郁闷
    2017-9-22 15:06
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    新人进步奖

    wujianjack2 发表于 2016-3-3 18:25
    如果M是输入的常数矩阵的话,可以这样实现:
    SETS:
    ROW/1..3/;

    非常感谢!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2024-4-30 14:18 , Processed in 0.487174 second(s), 66 queries .

    回顶部