echarts甘特图的实现问题

由于项目需要使用甘特图展现设备的运行和、停机记录和故障记录,每条数据都有开始时间和结束时间。选择了很多JS图表组件,amchart、highchart、echarts等,最终决定使用echarts,数据量大时加载速度也很理想。问题来了,由于echarts没有专门的甘特图,我们使用了堆积图展示数据,但是如果数据里出现2条以上相同开始时间和结束时间的数据时,就会出现依次向后堆积的情况,同时会印象X轴(时间轴)的显示,出现时间刻度错位的现象。想了很多办法没有解决。

请教使用ECHARTS的高手关注一下,是不是我使用的图形不对,有什么解决办法吗?或者哪位有不错的甘特图展现组件,推荐一下,谢谢!

图片说明

1个回答

qq_28588927
qq_28588927 回复磊落奇伟: 你好,请问您用echarts解决这个问题了么?我也是同样实现您所说的功能呢~麻烦回复一下
3 年多之前 回复
kcpnevergiveup
我是搬运工 同样有这个需求,请问解决了吗
3 年多之前 回复
heavenleetj
磊落奇伟 有echarts的解决办法吗?
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Dev的SchedulerControl控件,做甘特图的问题
Dev的SchedulerControl控件,做甘特图的问题,怎么让它宽一点,或者增加滚动条![图片说明](https://img-ask.csdn.net/upload/201707/28/1501237958_237263.png)
Android甘特图相关问题,求助
数据已经给出,怎么由给出的数据在Android上画出画出甘特图,基本思路是什么?有什么可用的第三方。谢谢各位了
vue+element+dhtmlxGant(甘特图)
在使用dhtmlxGant(甘特图)时,响应太慢,甚至没有响应,按F12就会显示出来,不按F12就算等多久,都不会显示出来。请问有大佬遇到同样问题吗?都是怎么解决的呢? ----------------------------------更新线-------------------------------------- 结合了楼下瘦子先生的回答,我发现好像确实是通过F12调整了窗口的大小才会显示出甘特图,于是我做了下面的尝试,有了新的发现。 _**下面这种情况不直接显示,需改变窗口大小才能显示。**_ ![图片说明](https://img-ask.csdn.net/upload/201909/18/1568772536_784028.png) **_下面这种情况显示,不需改变窗口大小,直接显示出来。_** ![图片说明](https://img-ask.csdn.net/upload/201909/18/1568772425_855765.png) ----------------------------------更新线-------------------------------------- 问题已经解决了,纯属偶然,也不知道深层原理道理的什么,先贴出解决办法吧。 ![图片说明](https://img-ask.csdn.net/upload/201909/18/1568776372_24601.png) 没错,就是换了个位置。感谢各位的回答,我不会结帖怎么办。。。 ## 下面是一个朋友在评论区的疑问,希望大佬能够为他解答!问题来自Jader! _ **我在使用gantt的时候,有时候会出现样式不对的情况,在什么都不改变的情况下,重新引入dhtmlxgantt.css文件,样式会正常。然后想加一个6.2的zoom缩放,但是不知道这个怎么在vue项目里使用**_
dhtmlxgantt甘特图初始化数据tasks之后,如何清空和刷新?
有谁知道dhtmlxgantt甘特图用parse加载数据之后,如何清空和刷新吗?我现在要做一个甘特图查询,根据填写的内容来查询甘特图的任务,但是不知道如何清空tasks数据和刷新,一直都是那么多数据?
dhtmlxgantt甘特图中如何显示序号?
请问有谁知道dhtmlxgantt甘特图中如何显示序号吗?是自己做序号还是甘特图自带序号的?
速度单调调度算法甘特图怎么画
如图,这个甘特图是如何画出来的,为什么a2没有打断c1,为什么会有空余,按照什么来看先调度谁以及是否剥夺![图片](https://img-ask.csdn.net/upload/201612/01/1480576360_908516.jpg)
DEV甘特图控件/日程管理控件问题
![图片说明](https://img-ask.csdn.net/upload/201709/22/1506079245_530700.png) 如图所示,红色部分鼠标移上去怎么设置至两个控件可以拖动大小,有没有什么属性或者方法,一个拖动,另一个跟着变大小。
react怎么开发甘特图?
公司要开发一个工程中心,所以要求在后台管理系统中添加一个甘特图,添加三级子事件那种,我在网上也找到了不少开发甘特图的插件:https://linux.ctolib.com/guiqui-react-timeline-gantt.html#articleHeader7 ,现在项目里使用的就是这个,但是这个插件无法添加子事件,更别说三级子事件了,下面是我代码,和展示效果,和上面网站几乎是一样的,不过它会在你修改事件标题后报错,导致无法移动,所以我在up事件中做了if判断,禁用了修改标题,求求好心大佬,指点一下,有没有好用的甘特图插件!!!!![图片说明](https://img-ask.csdn.net/upload/201905/30/1559201804_606389.png) ``` /** * Created by GYL on 2018/8/24 */ import React, { Component } from 'react'; import TimeLine from "react-gantt-timeline"; import "./styles.css"; class Gantetu extends Component { constructor(props) { super(props); let d1 = new Date(); let d2 = new Date(); d2.setDate(d2.getDate() + 2); let d3 = new Date(); d3.setDate(d3.getDate() + 3); let d4 = new Date(); d4.setDate(d4.getDate() + 4); console.log('d1:',d1,'d2:',d2,'d3:',d3,'d4:',d4) let data = [ { id: 1, start: d1, end: d2, name: "Demo Task 1" }, { id: 2, start: d3, end: d4, name: "Demo Task 2", color: "orange" }, ]; this.state = { data: data, links: [] }; } genID() { function S4() { return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); } return ( S4() + S4() + "-" + S4() + "-4" + S4().substr(0, 3) + "-" + S4() + "-" + S4() + S4() + S4() ).toLowerCase(); } createLink(start, end) { console.log(start, end,'createLink') return { id: this.genID(), start: start.task.id, startPosition: start.position, end: end.task.id, endPosition: end.position }; } onUpdateTask = (item, props) => { console.log('onUpdateTask',item, props) if(!props.start) { return } item.start = props.start; item.end = props.end; this.setState({ data: [...this.state.data] }); }; onCreateLink = item => { console.log('onCreateLink',item,this.createLink(item.start, item.end)) let newLink = this.createLink(item.start, item.end); this.setState({ links: [...this.state.links, newLink] }); }; render() { let width = document.body.clientWidth; const height = document.body.clientHeight; let containerHeight = '76vh'; let tableHeight = 310; if (width > 1367) { tableHeight = 380; containerHeight = '83vh'; } return ( <div className="app-container"> <h1>Getting Started Demo</h1> {/* DayWidth<input type="range" min="30" max="500" value={this.state.daysWidth} onChange={this.handleDayWidth} step="1"/> Item Height<input type="range" min="30" max="500" value={this.state.itemheight} onChange={this.handleItemHeight} step="1"/> */} <div className="time-line-container"> <TimeLine data={this.state.data} links={this.state.links} onUpdateTask={this.onUpdateTask} onCreateLink={this.onCreateLink} /> </div> </div> ); } } export default Gantetu; ``` ``` ```
jquery gantt editor甘特图,json数据中的start和end参数,页面中显示的日期和传输的完全不一致
jquery gantt editor,json数据中的start和end参数,均调整为13位的时间戳。页面中显示的日期和传输的完全不一致, 原因是duration,甘特图会根据开始时间(start)和持续时间(duration)来计算结束日期,计算的结果不包含周六日, 如何让结束日期显示为后台传输的值,而不是显示开始时间和持续时间的计算结果??? 急!!!
求动态甘特图
小弟最近在项目中要用到甘特图,我用的是struts1.2,就是想从数据库查询出来的值生成甘特图,在网上看了不少没太明白,其中JFreeChart做的 都是自己写的固定数据,我把它改成查出来的值,总出异常,说参数异常 Task t=new Task(taskName, date(1, Calendar.SEPTEMBER, 2008), date(2, Calendar.NOVEMBER, 2009));向这种形式就可以,但我改成 Task t=new Task(taskName, date(day, month, year), date(day1, month1, year1)); 其中给的参数taskName就是任务名,其余的都是int型的 函数如下 private static Date date(final int day,final int month,final int year) { Calendar calendar = Calendar.getInstance(); calendar.set(year, month, day); Date result = calendar.getTime(); return result; } 哪位大侠能给点提示,不胜感激,有实例最好,急等,由于小弟没有多少分只能给这点分了 [b]问题补充:[/b] 首先 谢谢你的回答 !~ 这是我的代码 还有异常 你在帮忙看看 package com.sample.web.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * start */ import java.awt.Color; import java.util.Calendar; import java.util.Date; import java.util.List; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartRenderingInfo; import org.jfree.chart.JFreeChart; import org.jfree.chart.entity.StandardEntityCollection; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.renderer.category.CategoryItemRenderer; import org.jfree.chart.servlet.ServletUtilities; import org.jfree.data.category.IntervalCategoryDataset; import org.jfree.data.gantt.Task; import org.jfree.data.gantt.TaskSeries; import org.jfree.data.gantt.TaskSeriesCollection; /** * end */ import com.base.web.action.BaseAction; import com.edgdo.Constants; import com.edgdo.service.ProjectService; import com.edgdo.vo.TaskVO; import com.sample.web.form.ExamReportForm; public class ExamReportAction extends BaseAction{ List list=null; protected final ActionForward process(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ExamReportForm actForm = (ExamReportForm)form; String forward ="init"; if(actForm.isEventInitial()){ Object object=this.getService(Constants.PROJECT_SERVICE, request); ProjectService projectService=(ProjectService) object; list=projectService.getCheckProject(actForm.getProjectId()); IntervalCategoryDataset dataset = createSampleDataset(); JFreeChart chart = ChartFactory.createGanttChart( "Gantt Chart Demo", // chart title "Task", // domain axis label "Date", // range axis label dataset, // data true, // include legend true, // tooltips false // urls ); CategoryPlot plot = (CategoryPlot) chart.getPlot(); // plot.getDomainAxis().setMaxCategoryLabelWidthRatio(10.0f); CategoryItemRenderer renderer = plot.getRenderer(); renderer.setSeriesPaint(0, Color.blue); ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection()); //If the last parameter is null, the chart is a "one time"-chart and will be deleted after the first serving. //If the last parameter is a session object, the chart remains until session time out. String filename = ServletUtilities.saveChartAsPNG(chart, 400 ,300, info,request.getSession()); actForm.setGraphURL(this.getDefaultReportGraphURL(request)+filename); } return mapping.findForward(forward); } /** * Creates a sample dataset for a Gantt chart, using sub-tasks. In general, you won't * hard-code the dataset in this way - it's done here so that the demo is self-contained. * * @return The dataset. */ private IntervalCategoryDataset createSampleDataset() { TaskSeries s1 = new TaskSeries("hello"); for(int i=0;i<list.size();i++){ TaskVO taskVO=(TaskVO) list.get(i); String taskName=taskVO.getCTASKNAME(); String []s=taskVO.getCBEGTIMESTR().split("-"); int year=Integer.parseInt(s[0]); int month=Integer.parseInt(s[1]); int day=Integer.parseInt(s[2]); String []ss=taskVO.getCENDTIMESTR().split("-"); int year1=Integer.parseInt(ss[0]); int month1=Integer.parseInt(ss[1]); int day1=Integer.parseInt(ss[2]); Task t=new Task(taskName, date(day,month, year), date(day1,month1, year1)); t.setPercentComplete(1.00); s1.add(t); } TaskSeriesCollection collection = new TaskSeriesCollection(); collection.add(s1); return collection; } /** * Utility method for creating <code>Date</code> objects. * * @param day the date. * @param month the month. * @param year the year. * * @return a date. */ private static Date date(final int day,final int month,final int year) { Calendar calendar = Calendar.getInstance(); calendar.set(year, month, day); Date result = calendar.getTime(); return result; } } 异常如下 [ERROR] 2009-04-23 14:37:43,515 method:org.apache.jsp.WEB_002dINF.jsp.GlobalError_jsp._jspService(GlobalError_jsp.java:66) Error Occured: Requires start <= end. java.lang.IllegalArgumentException: Requires start <= end. at org.jfree.data.time.SimpleTimePeriod.<init>(SimpleTimePeriod.java:78) at org.jfree.data.time.SimpleTimePeriod.<init>(SimpleTimePeriod.java:91) at org.jfree.data.gantt.Task.<init>(Task.java:102) at com.sample.web.action.ExamReportAction.createSampleDataset(ExamReportAction.java:92) at com.sample.web.action.ExamReportAction.process(ExamReportAction.java:46) at com.base.web.action.BaseAction.execute(BaseAction.java:339) at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113) at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96) at org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54) at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304) at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at com.base.web.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:619) [b]问题补充:[/b] 恩 这个问题确实解决了 居然是参数给反了 哎。。 那我还有个问题 就是我想控制一下甘特图的格式 在哪里设置啊 例如加个边框什么的 [b]问题补充:[/b] 好的 我试试 谢谢你这么热心解决 以后有不懂的在来问你 :idea:
project 2013与project server 的关系?
我是一个project的初学者,现在能应用project制造甘特图,但是还不了解project与project server与project web access之间的关系,如何建立公司的客户端等,对这一套系统的认识非常模糊。请高手指教,如果建立project web access ,他们之间的关系是怎样的。
DEV 的SchedulerControl控件问题
用这个控件做日程,双击进度开始编辑的界面,我想让其中几个控件不可编辑, 属性改为ReadOnly=true或者Enable=false都行,求大神指导!!!![图片说明](https://img-ask.csdn.net/upload/201709/16/1505551647_447753.png)
求助大神,这个matlab程序如何修改才能正确运行?
function [Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P) %-------------------------------------------------------------------------- %  JSPGA.m %  流水线型车间作业调度遗传算法 %  GreenSim团队原创作品,转载请注明 %  Email:greensim@163.com %  GreenSim团队主页:http://blog.sina.com.cn/greensim %  欢迎访问GreenSim——算法仿真团队→http://blog.sina.com.cn/greensim %-------------------------------------------------------------------------- %  输入参数列表 %  M       遗传进化迭代次数 %  N       种群规模(取偶数) %  Pm      变异概率 %  T       m×n的矩阵,存储m个工件n个工序的加工时间 %  P       1×n的向量,n个工序中,每一个工序所具有的机床数目 %  输出参数列表 %  Zp      最优的Makespan值 %  Y1p     最优方案中,各工件各工序的开始时刻,可根据它绘出甘特图 %  Y2p     最优方案中,各工件各工序的结束时刻,可根据它绘出甘特图 %  Y3p     最优方案中,各工件各工序使用的机器编号 %  Xp      最优决策变量的值,决策变量是一个实数编码的m×n矩阵 %  LC1     收敛曲线1,各代最优个体适应值的记录 %  LC2     收敛曲线2,各代群体平均适应值的记录 %  最后,程序还将绘出三副图片:两条收敛曲线图和甘特图(各工件的调度时序图) %第一步:变量初始化 [m,n]=size(T);%m是总工件数,n是总工序数 Xp=zeros(m,n);%最优决策变量 LC1=zeros(1,M);%收敛曲线1 LC2=zeros(1,N);%收敛曲线2 %第二步:随机产生初始种群 farm=cell(1,N);%采用细胞结构存储种群 for k=1:N X=zeros(m,n); for j=1:n for i=1:m X(i,j)=1+(P(j)-eps)*rand; end end farm{k}=X; end counter=0;%设置迭代计数器 while counter<M%停止条件为达到最大迭代次数 %第三步:交叉 newfarm=cell(1,N);%交叉产生的新种群存在其中 Ser=randperm(N); for i=1:2:(N-1) A=farm{Ser(i)};%父代个体 Manner=unidrnd(2);%随机选择交叉方式 if Manner==1 cp=unidrnd(m-1);%随机选择交叉点 %双亲双子单点交叉 a=[A(1:cp,:);B((cp+1):m,:)];%子代个体 b=[B(1:cp,:);A((cp+1):m,:)]; else cp=unidrnd(n-1);%随机选择交叉点 b=[B(:,1:cp),A(:,(cp+1):n)]; end newfarm{i}=a;%交叉后的子代存入newfarm newfarm{i+1}=b; end %新旧种群合并 FARM=[farm,newfarm]; %第四步:选择复制 FITNESS=zeros(1,2*N); fitness=zeros(1,N); plotif=0; for i=1:(2*N) X=FARM{i}; Z=COST(X,T,P,plotif);%调用计算费用的子函数 FITNESS(i)=Z; end %选择复制采取两两随机配对竞争的方式,具有保留最优个体的能力 Ser=randperm(2*N); for i=1:N f2=FITNESS(Ser(2*i)); if f1<=f2 farm{i}=FARM{Ser(2*i-1)}; fitness(i)=FITNESS(Ser(2*i-1)); else farm{i}=FARM{Ser(2*i)}; end end %记录最佳个体和收敛曲线 minfitness=min(fitness); meanfitness=mean(fitness); LC1(counter+1)=minfitness;%收敛曲线1,各代最优个体适应值的记录 LC2(counter+1)=meanfitness;%收敛曲线2,各代群体平均适应值的记录 pos=find(fitness==minfitness); Xp=farm{pos(1)}; %第五步:变异 for i=1:N if Pm>rand;%变异概率为Pm X=farm{i}; I=unidrnd(m); J=unidrnd(n); X(I,J)=1+(P(J)-eps)*rand; farm{i}=X; end end farm{pos(1)}=Xp; counter=counter+1; end %输出结果并绘图 figure(1); plotif=1; X=Xp; [Zp,Y1p,Y2p,Y3p]=COST(X,T,P,plotif); figure(2); plot(LC1); figure(3); plot(LC2); function [Zp,Y1p,Y2p,Y3p]=COST(X,T,P,plotif) %  JSPGA的内联子函数,用于求调度方案的Makespan值 %  输入参数列表 %  X       调度方案的编码矩阵,是一个实数编码的m×n矩阵 %  T       m×n的矩阵,存储m个工件n个工序的加工时间 %  P       1×n的向量,n个工序中,每一个工序所具有的机床数目 %  plotif  是否绘甘特图的控制参数 %  输出参数列表 %  Zp      最优的Makespan值 %  Y1p     最优方案中,各工件各工序的开始时刻 %  Y2p     最优方案中,各工件各工序的结束时刻 %  Y3p     最优方案中,各工件各工序使用的机器编号 %第一步:变量初始化 [m,n]=size(X); Y1p=zeros(m,n); Y2p=zeros(m,n); Y3p=zeros(m,n); %第二步:计算第一道工序的安排 Q1=zeros(m,1); Q2=zeros(m,1); R=X(:,1);%取出第一道工序 Q3=floor(R);%向下取整即得到各工件在第一道工序使用的机器的编号 %下面计算各工件第一道工序的开始时刻和结束时刻 for i=1:P(1)%取出机器编号 pos=find(Q3==i);%取出使用编号为i的机器为其加工的工件的编号 lenpos=length(pos); if lenpos>=1 Q1(pos(1))=0; if lenpos>=2 for j=2:lenpos Q1(pos(j))=Q2(pos(j-1)); Q2(pos(j))=Q2(pos(j-1))+T(pos(j),1); end end end end Y1p(:,1)=Q1; Y3p(:,1)=Q3; %第三步:计算剩余工序的安排 for k=2:n R=X(:,k);%取出第k道工序 Q3=floor(R);%向下取整即得到各工件在第k道工序使用的机器的编号 %下面计算各工件第k道工序的开始时刻和结束时刻 for i=1:P(k)%取出机器编号 pos=find(Q3==i);%取出使用编号为i的机器为其加工的工件的编号 lenpos=length(pos); if lenpos>=1 EndTime=Y2p(pos,k-1);%取出这些机器在上一个工序中的结束时刻 POS=zeros(1,lenpos);%上一个工序完成时间由早到晚的排序 for jj=1:lenpos POS(jj)=ppp(1); EndTime(ppp(1))=Inf; end %根据上一个工序完成时刻的早晚,计算各工件第k道工序的开始时刻和结束时刻 Q1(pos(POS(1)))=Y2p(pos(POS(1)),k-1); Q2(pos(POS(1)))=Q1(pos(POS(1)))+T(pos(POS(1)),k);%前一个工件的结束时刻 if lenpos>=2 for j=2:lenpos Q1(pos(POS(j)))=Y2p(pos(POS(j)),k-1);%预定的开始时刻为上一个工序的结束时刻 if Q1(pos(POS(j)))<Q2(pos(POS(j-1)))%如果比前面的工件的结束时刻还早 Q1(pos(POS(j)))=Q2(pos(POS(j-1))); end end end end end Y1p(:,k)=Q1; Y2p(:,k)=Q2; Y3p(:,k)=Q3; end %第四步:计算最优的Makespan值 Y2m=Y2p(:,n); Zp=max(Y2m); %第五步:绘甘特图 if plotif for i=1:m for j=1:n mPoint1=Y1p(i,j); mPoint2=Y2p(i,j); mText=m+1-i; PlotRec(mPoint1,mPoint2,mText); Word=num2str(Y3p(i,j)); %text(0.5*mPoint1+0.5*mPoint2,mText-0.5,Word); hold on x1=mPoint1;y1=mText-1; x2=mPoint2;y2=mText-1; x4=mPoint1;y4=mText; %fill([x1,x2,x3,x4],[y1,y2,y3,y4],'r'); fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,0.5,1]); text(0.5*mPoint1+0.5*mPoint2,mText-0.5,Word); end end end function PlotRec(mPoint1,mPoint2,mText) %  此函数画出小矩形 %  输入: %  mPoint1    输入点1,较小,横坐标 %  mPoint2    输入点2,较大,横坐标 %  mText      输入的文本,序号,纵坐标 vPoint = zeros(4,2) ; vPoint(1,:) = [mPoint1,mText-1]; vPoint(2,:) = [mPoint2,mText-1]; vPoint(3,:) = [mPoint1,mText]; vPoint(4,:) = [mPoint2,mText]; plot([vPoint(1,1),vPoint(2,1)],[vPoint(1,2),vPoint(2,2)]); hold on ; plot([vPoint(1,1),vPoint(3,1)],[vPoint(1,2),vPoint(3,2)]); plot([vPoint(2,1),vPoint(4,1)],[vPoint(2,2),vPoint(4,2)]); plot([vPoint(3,1),vPoint(4,1)],[vPoint(3,2),vPoint(4,2)]);
DEV的schedulerControl问题
制作日程控件,双击进度打开编辑,我想要其中几个控件不可编辑, 属性改为ReadOnly=true或者Enable=false,求大神指导!!!![图片说明](https://img-ask.csdn.net/upload/201709/16/1505551922_999587.png)
Flex多函数同时被调用时,执行顺序?
比如有三个函数: function f1():void{ //do something f2(); f3(); } function f2():void{//do something} function f3():void{//do something} 如果f2运行过长,f2还没有运行完f3就开始运行。 这是怎么回事? 有高人知道怎么解决吗。 (我试过在f2运行后,间隔x秒再执行f3,但是这样写总感觉有点不妥。。。哈哈) [b]问题补充:[/b] 说一下我的实际设计内容吧,呵呵。 我的f2相当于调用了一个递归函数处理一个数据集合Array, f3根据f2处理后的Array数据动态创建一个甘特图(这个过程有点慢)。 运行程序时,结果没有问题,f3是得到了f2处理后的数据。 由于动态创建的甘特图时间有点长,我想看看具体用了多少时间,然后想做一个 让用户等待的效果。 于是我就这样: var a:Number= new Date().valueOf(); f2(); f3(); var b:Date = new Date().valueOf(); trace(b-a); 这时候问题就出来了啊,trace出来的毫秒数明显没有包括f3处理时间,晕。 这怎么办啊?本人接触flex时间不长,还请各位指教啊,哈哈。 "蔡华江":说的有理,f2方法实际上应该是处理完了才处理的f3。
EXTJS4 tree为什么不显示子菜单
![图片说明](https://img-ask.csdn.net/upload/201603/04/1457080911_470892.png) "treeJson":[{"id":1,"text":"个人中心","children":[ {"id":3,"text":"新建任务","leaf":true,"checked":false}, {"id":4,"text":"我的签核","leaf":true,"checked":false}, {"id":5,"text":"我的申请","leaf":true,"checked":false}, {"id":6,"text":"我的待办","leaf":true,"checked":false}, {"id":7,"text":"甘特图","leaf":true,"checked":false}, {"id":8,"text":"我的已办","leaf":true,"checked":false}, {"id":9,"text":"日常工作","leaf":true,"checked":false}, {"id":10,"text":"我的收藏","leaf":true,"checked":false}, {"id":11,"text":"通讯录","leaf":true,"checked":false}],"leaf":true,"checked":false}, {"id":22,"text":"知识库","children":[],"leaf":true,"checked":false}, {"id":23,"text":"其他系统","children":[],"leaf":true,"checked":false}, {"id":24,"text":"系统管理","children":[ {"id":26,"text":"人员管理","leaf":true,"checked":false}, {"id":27,"text":"系统消息","leaf":true,"checked":false}, {"id":28,"text":"菜单管理","leaf":true,"checked":false}, {"id":29,"text":"在线用户","leaf":true,"checked":false}, {"id":30,"text":"权限管理","leaf":true,"checked":false}, {"id":32,"text":"流程管控","leaf":true,"checked":false}],"leaf":true,"checked":false}, {"id":25,"text":"帮助中心","children":[],"leaf":true,"checked":false}] ``` { id:'sysTree', xtype: 'treepicker', fieldLabel: '菜单', name : 'tid', displayField: 'text', valueField: 'id', minPickerHeight: 200, //最小高度,不设置的话有时候下拉会出问题 editable: true, //启用编辑,主要是为了清空当前的选择项 enableKeyEvents: true, //激活键盘事件 cascade : 'child',//级联方式:1.child子级联(仅向下勾选子节点);2.parent父级联(仅向上勾选父节点);3.both全部级联(向上向下的父/子节点均会勾选) checkModel:'single',//当json数据为不带checked的数据时只配置为single,带checked配置为double为单选,不配置为多选 store: Ext.create('Ext.data.TreeStore',{ fields: ['id','text'], root: { id:0, text: '全部', expanded: true, checked: false }, proxy: { type: 'ajax', url: 'treeAction_checkTree.action', reader: { type: 'json', root : 'treeJson' } }, autoLoad: true }), listeners: { keyup : function(){ //鼠标弹起时清空所有的值 Ext.getCmp("sysTree").setValue(""); } } } ```
130 个相见恨晚的超实用网站,一次性分享出来
相见恨晚的超实用网站 持续更新中。。。
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出东西来呢? ...
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱 极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件, 选择安装到U盘(按照操作无需更改) 三、重启进入pe系统 1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12) 选择需要启...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
HAL 硬件抽象层介绍
和你一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:和你一起终身学习,这里是程序员 Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、HAL 概述一、HAL 概述HAL定义了供硬件供应商实施的标准接口,该接口使Android无需考虑底层驱动程序的实现。使用HA...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
致 Python 初学者们!
作者 | 许向武 责编 | 屠敏 出品 | CSDN 博客 前言 在 Python 进阶的过程中,相信很多同学应该大致上学习了很多 Python 的基础知识,也正在努力成长。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 Python 这门编程语言,从2009年开始单一使用 Python 应对所有的开发工作,直至今
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
使用 Angular 打造微前端架构的 ToB 企业级应用
这篇文章其实已经准备了11个月了,因为虽然我们年初就开始使用 Angular 的微前端架构,但是产品一直没有正式发布,无法通过生产环境实践验证可行性,11月16日我们的产品正式灰度发布,所以是时候分享一下我们在使用 Angular 微前端这条路上的心得(踩过的坑)了额,希望和 Angular 社区一起成长一起进步,如果你对微前端有一定的了解并且已经在项目中尝试了可以忽略前面的章节。 什么是微前...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
拿下微软、Google、Adobe,印度为何盛产科技圈 CEO?
作者 | 胡巍巍 出品 | CSDN(ID:CSDNnews) 世界500强中,30%的掌舵人,都是印度人。 是的,你没看错。这是近日《哈佛商业评论》的研究结果。 其中又以微软CEO萨提亚·纳德拉(Satya Nadella)、和谷歌CEO桑达尔·皮查伊(Sundar Pichai,以下简称劈柴)最为出名。 微软CEO萨提亚·纳德拉(Satya Nadella) 其他著名印度...
Linux(内核剖析):19---中断总体概述
一、为什么要引入中断? 任何操作系统内核的核心任务,都包含有对连接到计算机上的硬件设备进行有效管理,如硬盘、蓝光碟机、键盘、鼠标、3D 处理器,以及无线电等。而想要管理这些设备,首先要能和它们互通音信才行。众所周知,处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求,然后专门等待回应的办法,显然差强人意。既然硬件的响应这么慢,那么内核就应该在此期间...
程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
深度学习笔记------卷积神经网络
深度学习笔记------卷积神经网络
一文带你入门Linux
文章目录1.1 Linux的概述:1.1.1 什么是Linux:1.1.1.1 学习Linux之前先了解Unix1.1.1.2 Linux的概述:1.1.1.3 Linux的历史:1.1.1.4 Linux系统的应用:1.1.1.5 Linux的版本1.1.1.6 Linux的主流版本1.2 Linux的安装:1.2.1 虚拟机安装:1.2.1.1 什么是虚拟机1.2.1.2 安装VmWare1....
普通三本毕业,我怎么一路艰辛进入阿里的
英雄不问出处? 自古以来就有这样一句话,真的英雄不问出处吗?这句话太挫了。普通三本院校的我,大四的时候居然都不知道什么是校招,所以出处太重要了。这也是没有机会参加阿里校招的原因,毕竟校招门槛比社招还是要低的,最重要的是校招进入阿里能让你的起点比别人更高。 有幸可以社招进入阿里,了解了校招的思路,赶紧介绍给学弟们,现在我们三本院校的小学弟今年居然有 3 个人通过了阿里的校招。下面我也把这份宝贵的经...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
强烈推荐10本程序员在家读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
疫情数据接口api
返回json示例 { "errcode":0,//0标识接口正常 "data":{ "date":"2020-01-30 07:47:23",//实时更新时间 "diagnosed":7736,//确诊人数 "suspect":12167,//疑是病例人数 "death":170,//死亡人数 "cur...
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药...
疫情防控,开发者集结出战!
作者 | 屠敏出品 | CSDN(ID:CSDNnews)2020 年伊始,病毒肆虐,人心惶惶。截止北京时间 1 月 31 日 15 时 30 分,全国确诊新型冠状病毒肺炎的数字已达到了...
如果孔子是个程序员,一定是P14
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 近日,研读《史记》,读到孔子跟师襄子学弹琴这一段,颇受启发,整理出来与大家分享,故事讲述了孔子如何学习弹琴,达到登峰造极的地步。仔细想想,其修炼方法,放在学习编程上,乃至学习任何一门技能上,都是相通的。 01 孔子年轻的时候,对音乐产生了极大的兴趣,找到了当时弹琴弹得最牛的师襄子,要拜师学艺,孔子比...
面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他
初识 MyBatis MyBatis 是第一个支持自定义 SQL、存储过程和高级映射的类持久框架。MyBatis 消除了大部分 JDBC 的样板代码、手动设置参数以及检索结果。MyBatis 能够支持简单的 XML 和注解配置规则。使 Map 接口和 POJO 类映射到数据库字段和记录。 MyBatis 的特点 那么 MyBatis 具有什么特点呢?或许我们可以从如下几个方面来描述 MyBati...
一张新型肺炎地区分布地图是怎么制作的?
一张新型肺炎地区分布地图是怎么制作的? 前言 让我们从环境开始 创建工程,添加引用 GIS数据 剩下的工作就很简单了 叠加世界数据 叠加中国数据 调整可视范围 连接动态数据 样式化地图 写在最后 前言 2020年刚开始,各钟不幸的消息满天飞。新型肺炎的蔓延,科比去世… 无时无刻让我感到痛楚。为了不给国家添乱,新年几天都在窝在家里。时不时拿起手机,观察一下现在病情蔓延情况。下面这张地图就是...
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问