QQ登录

只需要一步,快速开始

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

课表优化MATLAB/TOMLAB实现的疑问

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

5

主题

3

听众

244

积分

升级  72%

  • TA的每日心情
    无聊
    2012-6-20 18:24
  • 签到天数: 1 天

    [LV.1]初来乍到

    新人进步奖

    跳转到指定楼层
    1#
    发表于 2009-7-24 14:45 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    我们老师让我们做一个课表编排问题,题目见http://mcm.saicai.com/bbs/viewthread.php?tid=1799
    我试图用基于MATLAB的一个软件TOMLAB做,因为他有一个例子:见
    tomsym.com/examples/tomsym_collegetimetable.html

    由于我对MATLAB、TOMLAB应用不熟练,我试图先写一个程序尽可能和例子相似。
    我将问题简化,先安排第一类课程,有三个老师,5门课。并且我不考虑教室问题。由于每堂课是以两个课时为一个单位,五门课每周分别上2 2 3 2 2堂课,每个老师教任意的课,他们的每周最大课时数分别是2 2 3,每天可以上4节课(晚上不排课)(以上的“一节课”均指两小节课)
    优化目标:
    1:最好在每天的第2、3节安排课程,第一节、第四节尽可能不安排课
    2:尽可能满足老师们的最大课时数,使他们加班尽可能少。

    程序(TOMLAB实现)
    teacher=[1 2 3];
    lesson=[1 2 3 4 5];
    lesson_times=[2 2 3 2 2];
    slots=4*5;
    t=tomArrayIdx('t',1:3);
    l=tomArrayIdx('l',1:length(lesson));
    s=tomArrayIdx('s',1:20);
    teach=tomArray('teach',[3,5,20]); %create a array of 3*5*20 (teacher*lesson*slots)

    bnds1={0<=teach<=1}; % All variables are binary

    bnds2={sum(sum(teach(t,l,s),s),t)==lesson_times};
    %所有的课程必须全部安排进课表

    bnds3={sum(sum(teach(t,l,s),t),l)<=1};
    % Teacher constraint, one teacher per slot

    bnds={bnds1,bnds2,bnds3};

    not_so_good_slots=tomArrayIdx('l',[1,4,5,8,9,12,13,16,17,20]);
    objective1=sum(vec(teach(l,t,not_so_good_slots)));
    %the goal is to minimize teaching courses in these no so good slots

    max_work=[2 2 3];
    objective2=0;
    for i=1:3
        overwork=sum(sum(teach(i,l,s),s),l)-max_work(i)
        if overwork>0
            objective2=objective2+10*abs(overwork);
        end
    end



    但是,当我输入objective1=sum(vec(teach(l,t,not_so_good_slots)));后,提示:
    Error in ==> tomArray.subsref at 78
            checkIndexes(o);


    我输入
    for i=1:3
        overwork=sum(sum(teach(i,l,s),s),l)-max_work(i)
        if overwork>0
            objective2=objective2+10*abs(overwork);
        end
    end
    后提示
    ??? Function 'gt' is not defined for values of class 'tomArray'.

    Error in ==> gt at 18
      [varargout{1:nargout}] = builtin('gt', varargin{:});

    我检查了好几遍,但是还是不知道哪里出的错,又能帮我的吗?
    或者用MATLAB的语句如何实现
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    hsblaoyao 实名认证       

    0

    主题

    5

    听众

    75

    积分

    升级  73.68%

  • TA的每日心情
    开心
    2015-3-23 07:04
  • 签到天数: 1 天

    [LV.1]初来乍到

    自我介绍
    我是老妖

    新人进步奖

    回复

    使用道具 举报

    wxrfly 实名认证       

    2

    主题

    3

    听众

    27

    积分

    升级  23.16%

    该用户从未签到

    自我介绍
    我是新手,向大家学习数学建模,祝我们分享愉快!
    回复

    使用道具 举报

    15

    主题

    5

    听众

    267

    积分

    升级  83.5%

  • TA的每日心情
    开心
    2012-3-7 11:24
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    自我介绍
    200 字节以内

    不支持自定义 Discuz! 代码

    群组数学建模保研联盟

    群组数学专业考研加油站

    回复

    使用道具 举报

    0

    主题

    0

    听众

    16

    积分

    升级  11.58%

    该用户从未签到

    看不懂……不好意思……╮(╯﹏╰)╭   我也在做这题   想着用MATLAB好还是用LINGO 好
    回复

    使用道具 举报

    zys158am 实名认证       

    0

    主题

    4

    听众

    12

    积分

    升级  7.37%

    该用户从未签到

    回复

    使用道具 举报

    0

    主题

    3

    听众

    13

    积分

    升级  8.42%

    该用户从未签到

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-6-10 19:27 , Processed in 2.097045 second(s), 92 queries .

    回顶部