Jump to content

Search the Community

Showing results for 'can one us an if statement in an expression'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Simio Public Forums
    • Welcome and How To Become a Simio Insider
    • Simio News and Announcements
    • Simio Product Details
    • Simio-Related Positions Desired or Positions Available
    • Help Getting Started with Simio
  • Forums for Simio Insiders Only (See Public Forums Welcome topic to sign up)
    • SI General Discussions
    • SI Sprint Releases
    • SI Shared Items
    • SI Ideas and Suggestions
    • SI Known Issues and Workarounds
    • SI Performance Tips
    • SI Non-US Cultures
    • SI Student Competition
    • SI Educational
    • SI Libraries and Objects
    • SI Animation and Visualization
    • SI Distributions, Functions, and Expressions
    • SI Simio Tabs
    • SI Experimentation and Optimization
    • SI Functional Approaches
    • SI Industries / Domains
    • SI Types of Simulation
    • SI Emulation
    • SI API

Categories

  • Files
    • Academic Information
    • Product Information
    • Case Studies

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


First Name


Last Name


Company/University Name


OCCUPATION


ICQ


WEBSITE


YAHOO


AOL


LOCATION


FACEBOOK


GOOGLEPLUS


SKYPE


TWITTER


YOUTUBE

  1. Before you start adding state variables to a library object, I suggest that you first familiarize yourself with all of the existing states. One easy way to do this is to instantiate the object (e.g., Worker1) and then go to any expression field and type "Worker." and look at the list. In the case of Worker, there are over 100 states, functions, and properties built-in to the Worker object. Another way is to subclass the Worker, then go to the Definitions tab of the MyWorker object and you can see all of the built-in definitions by category: There is a pretty good chance that what you need is already there. But if not, use the same screen illustrated above and add whatever state (or property, event, ...) that you need. As far as referencing or assigning that custom state or a built-in state, it is done using ObjectName.StateName. For example if you added a state named TimeStartedMove to MyWorker, and you wanted to assign that value, you might assign MyWorker.TimeStartedMove to TimeNow. The tricky part, especially with more complex objects like Workers, is to determine exactly when/how to assign that value. Sometimes you can interact with the model itself to insert an Assign at the correct location (let's say in the Loaded Add-on Process). Or sometimes you might need to override the process logic in your custom object. The SimBits RecordDistanceTraveled and ElectricVehicle are examples to review.
  2. Use a search with Maximize Expression. The queue should be ServerX.InputBuffer.Contents and the expression: Candidate.ModelEntity.Variable.
  3. Hi, there is a simple approach you can use. Use Connectors between the queue server and the desks. At Buffer Logic of the Desks, change the Input Buffer Capacity to 0. Create a List with the Input nodes of the seven Desks. On the Output of the queue server change Entity Destination Type to Select From List and the goal to Smallest Value. Keep the default expression. It should work fine.
  4. Perhaps its a little late, but attached is a possible solution to your problem. This started out pretty simple. The problem was how to specify which server is serviced by which resource. One way to do that is a table. But since its changing over time I chose to use a time-indexed table, that is a table that knows about time and returns different data at different times. In this case, each row corresponds to 12 hours and each column specifies the resource needed by the respective server. As they say, "the devil is in the detail" and in this case the "devil" is that the specified resource may change between seize and release (e.g., seize at 11:59, release at 12:05). Simio doesn't like that and all the easy options re-evaluate the resource expression on release and so may try to release the wrong resource. One option would have been to create a custom server, but that seems to be overkill. Here is a somewhat simpler approach: 1) Add an entity state named MyResource and assign it at the last possible moment before use. This value will be used only for release. The assigned value is drawn from the table using an expression like Table1.S1Resource.TimeIndexedValue.Object. Note that the .timeindexedvalue indicates to get the value associated with the current time. And the .object at the end is used to tell Simio to return that value as an object not a number. 2) Use Secondary Resources - Other Resource Seizes to seize the name specified in the table using the same expression above Table1.S1Resource.TimeIndexedValue.Object. 3) Use Secondary Resources - Other Resource Releases to release the resource saved in MyResource. TimeBasedWorkerSelection.spfx
  5. Hi, One way to do this is put a Dynamic Selection Rule: Smallest Value First on the Worker, with the value expression of: Candidate.Entity.DirectDistanceTo.Object(Worker). This could work.
  6. Hello, i am using the Financials Properties in Simio. In this simple model, i have parameters for different cost types (see in the picture). All the cost types are used with the default financial states. The dynamic label of the ModelEntiy shows the expression "ModelEntity.Cost", so it roll all the cost components up in the particular entity. The entity in the processing has a value of 76.84. (rolled up) Now my question is, is it possible to see all the cost components for all my model entity, for example as a expression in a floor label or in a data table. Thank you!
  7. Hi! Yes, there is a way. What you could do is use a String.Format expression. This way you can show multiple variables on the dynamic text. On your case something like: String.Format("{0}: {1} {2}{3}: {4}", "Material Costs", MyModelEntity.MaterialCosts, String.NewLine, "ProductionCosts", MyModelEntity.ProductionCosts) should work. As a plus, you could use a state to disable/enable these labels with a button and a process. Something like: Math.If(EnableTxT, String.Format("{0}: {1} {2}{3}: {4}", "State1", ModelEntity.State1, String.NewLine, "State2", ModelEntity.State2), "")
  8. Hi @jzhou, how would this work if I want to refer to the MemberOutput Node of a separator in an expression? I get lost at the following expression: Entity.Location.Parent.Node.AssociatedObject.Separator.Output.[what comes next?]
  9. Hello River, I downloaded your files. The Gate512 was missing. I removed the information in the "30 Departure.xlxs" file that I can run the model ;-). Generally I understood how it works. Answer to your first question: I think you mean these two ways, right? From the left and from the right. In this case I saw that you used the "Routing Logic" in like all Transfernodes. The Outbound Link Rule is "Shortest Path" and you set the "Node Name" to "Input@Takeoff" Simio is using everytime the shortest link path now. Like in the screenshot below: In my opinion it would be better to set the destination once after the Entity got created in the Source for example :-). There are different ways to do that. In your model I removed all Routing Logic in the Transfernodes and used the Routing Logic only in the Output-TransferNodes of the Sources. In Simio you need only to use one time a SetNode-Step or a Routing-Logic to set the destination of an Entitiy and Simio will follow the paths or travel in the FreeSpace. You can use for example a NodeList with 2 different destinations and this Routing-Logic: With the "Selection Goal" Random Simio will randomly choose the destination from the NodeList. I uploaded you your model with the changes as an example: Problem on the taxiway version 17A.zip What did I changed? 1) I removed the Routing Logic in all TransferNodes. 2) I added new Routing Logic to the TransferNodes of the Output-Node of the Sources. 3) I added a NodeList with 2 new Nodes. 4) In the two new Nodes I used a Nodes-Entered-Process and a Transfer-Step to transfer the Entity to the Input of the Sink. Answer to your second question: You can change the destination of an Entity any time. In the Path (Link) you have a function called "NumberTravelors" for example to get the number of travelors currently on this path. So you can use a Expression like "Path123.NumberTravelors < 2". This can be used to decide if a way is full allready that the other way get selected. Or you can use a Integer-State and count up and down. I would use a Node-Entered-Process in the last possible node with a Decide-Step and two SetNode-Step in this case :-). I hope my answer will help you. When you have any other question, you are welcome! Best regards Pascal
  10. I have an instance in which I am using task sequences and I need to turn "auto cancel trigger" to none. There is a task that is dependent on whether or not the previous task actually occurred so I was going to add a conditional statement to the table. How can I go about writing an expression to check whether the previous task (also a predecessor) actually got executed or cancelled? Is there a nested expression I can take advantage of?
  11. Hey, I've got a quick question on how to route to a combiner with the longest waiting time in their parent queue. I think it should be quite easy, but i cant seem to make it work. What i have been doing is setting the selection goal of my routing node to largest value, and select from a list. This largest value I think should be the the longest waiting time in the contents of the parentinput queue. I have tried this multiple ways both using assosiated object and without. When i recall the number waiting it seems to work, but with recalling the waiting time i'm doing something wrong. My current expression is: Candidate.Node.AssociatedObject.Combiner.ParentInputBuffer.Contents.TimeWaiting(ModelEntity) or Candidate.Combiner.ParentInputBuffer.Contents.TimeWaiting( object ) both seem to work for content.numberwaiting. I think i am describing the ( object ) part wrong but cant find how i should write for the modelentity otherwise. I have tried to recall a specific entititype like so --> TimeWaiting(Truck) this also does not work. Does somebody know how i can acces the ParentInputBuffer.Contents.TimeWaiting? Greeting Piet
  12. So I have tried doing this, but i can't quite get the workers to pick up the right trolleys. The capacity of the worker is too big and it will pick up more than the batch sometimes. In the logic i tried to use 'search', but can't quite seem to find the right expression. Any ideas?
  13. I am trying to make a routing decision based on the Candidate node's routerequestqueue's summation of the entities user-defined property. If there are different types of entities with ex. different priority levels. I would like the routing process to choose the transfernode which has the smallest total sum of it's entities priority level. the transfernode that needs to be chosen also has a routing group attached to its entity destination type rule where its final machine has 0 buffer and due to a blocked destination rule, there will be a queue build up at the transfernode that needs to be chosen. I have thought about using a state variable for each node and using add-on process each time a unit enters and leaves a node but because the main model has many multiple nodes the node's entity priority sum has to be able to be accessed through the candidate.transfernode._________________. For example during the routing step in the process section, I have candidate.transfernode.destinationroutinggroupname.routerequestqueue which gives me the node's number of units waiting, but i need to be able to access the candidate nodes summed queued property. Is there either a way to directly access this information, have looked at the expressions and having a hard time finding something. failed attempt: candidate.transfernode.destinationroutinggroupname.routerequestqueue.population.defaultentity.priority.summation or is there a way to use the add-on process where i am adding/subtracting the priority levels, but somehow attach it to the candidate.transfernode's property Hopefully this makes sense. If you look at the file, please ignore the upper half and focus on the transfer nodes maintransfer, transfernode1 and transfernode1_1. maintransfer has an entered add-onprocess which is the subject of this question. the route process and it's selection expression is what I'm trying to adjust but find a way to express the candidate transfernodes of transfernode1 and transfernode1_1 (which are part of the XferRouting group). I'd like to choose and compare the total summed priority level of each node's queue. Simple_Routing.spfx
  14. I am recreating the model 5.3 of the Simio and Simulation textbook. When I create the list and run the model, with selection expression in the output@placement node as below candidate.Node.AssociatedStationOverLoad, all entities goes only to finepinchfaststation. However, when I use Candidate.Node.AssociatedStationLoad it selects all desitnation loads. Is there any change to the Candidate.Node.AssociatedStationOverLoad? I displayed the values in the facility window and it is coming as -infinity. Model_05_02.spfx
  15. About the job Position: Industrial Simulation Services, Simulation Developer Location: Kitchener, Ontario Experience: 3-5 Years of relevant work experience Division: OTTO Motors Area of Study: Industrial/ Mechanical/ Mechatronics/ Systems Engineering NOTE: Must be able to travel to the U.S at time of application. About Clearpath Robotics Inc. Clearpath Robotics Inc. develops the future of robotics technology through development and sale of industry-leading self-driving technology, products, and services to over 500 of the world’s most innovative brands. Proprietary hardware, software, and services are delivered through the company’s research and industrial divisions: Clearpath Robotics and OTTO™ Motors. Clearpath Robotics Inc. is an award-winning company with recent awards including Robotics Business Review Top 50 Robotics Company, Edison Award for Innovation, Business Insider Top 40 under 40, and Canada’s Top 100 Employers. About Clearpath Robotics Research Solutions Clearpath Robotics’ research solutions group is a global leader in unmanned vehicle robotics for research and development, and provides hardware, software, and services to enable self-driving vehicle development, deployment, and operation. Clearpath Robotics works with over 500 of the world’s most innovative brands in over 40 countries, serving markets that span mining, military, agriculture, aerospace, and academia. Visit Clearpath Robotics atwww.clearpathrobotics.com. About OTTO™ Motors OTTO™ Motors is making material handling in industrial settings safer, easier, and more efficient through development of hardware and software that automates movement of goods in busy factories and warehouses. The company’s industry-leading self driving technology provides automated and on-demand material handling in the most demanding industrial environments, spanning automotive, medical device, aerospace, logistics, and more. Customers trusting their mission-critical material handling needs to OTTO Motors include Fortune 100 brands GE, Toyota, and Caterpillar. For more information visitwww.ottomotors.com. About the Job Having 10’s of robots run around our offices is great, but having hundreds of robots running around inside our computers is even better. Rich simulation environments offer a wide range of benefits to many aspects of our business: fast research, development and validation, sharp marketing tools and strong customer experience / support. We're looking for a Simulation Developer to create and run simulations that will help us optimize our robot fleets and system solutions. As a part of the Industrial Simulation Services (ISS) team, you will act as a subject matter expert and lead modeling and simulation activities. The ISS team works closely with our Systems Engineering, Applications Engineering and Project Management team, to support overall solution design from initial concept all the way to full system design and deployment. You will be building material flow strategies (based on self-driving vehicles) for products already in our arsenal and ones that do not yet exist. Your goal is to develop accurate and robust simulations to evaluate design, lower risk, and enhance the elegance of our solutions to fuel our growth. Primary Responsibilities Creating discrete event simulations for real and hypothetical systems, estimating fleet sizes, identifying traffic bottlenecks, testing what-if scenarios to optimize performance of robot fleets Consulting with project leads, sales team members and customers to obtain understanding of the requirements and to collect the necessary inputs Advising on simulation based metrics to evaluate system risks and performance Analyzing results and making recommendations for facility and material flow design Presenting your simulation results to our team of engineers, our sales team, and to clients Validating models against real world data to maintain accuracy relative to product portfolio Growing and improving our simulation library and internal templates for functionality, accuracy, scalability and efficiency Drafting functional specifications, proposals and effort estimation Recommending product feature and improvement ideas to our Product and Engineering teams, that lead to greater system optimization in the real world Additional tasks may include: Interacting with our development team as necessary to assess impact of new feature or product Developing simulation models to assist Sales & Marketing in demonstrating Clearpath's products and capabilities Using your expertise to assist our engineering services group in developing the more complex system concepts About You You're excited about the role that robots will play in the future, and intrigued by the challenge of joining a young company in this high-growth market. You have skills and experience that you know can make a difference with the Clearpath team, whether we're looking for them or not. You are driven and view work as more than just a job. You are motivated by making an impact on your workplace and you thrive on challenging and rewarding problems. Most of all, you want to be on the right side during the coming robot revolution. The ideal candidate will have: Proven success using simulation solutions to evaluate feasibility of facility design or operational changes Experience with discrete event simulation tools like Simio, AutoMod, AnyLogic, FlexSim, Delmia, and understanding of its limitations Experience collaborating with cross-functional and external client teams to gather comprehensive data required for model development and/or analysis Fearless in questioning to ensure end users get the most value out of your work. You understand the importance of early goal alignment and scope definition Effectively communicate complex model functionality to the client or internal team for assurance of model results accuracy Customer-first mindset Avid self-learner Ability to work independently with minimal supervision and manage deadlines. Able to cope with sudden jarring changes in projects, priorities, and the local gravity field. Bonus Points for: Experience identifying traffic and material flow bottlenecks and mitigating risk Experience in manufacturing industry Understanding of different industry warehouses. You see block diagrams and flowcharts everywhere and speak the language. Experience with Object-Oriented programming Working knowledge of one or more of C#, Python, VB.NET Exposure to working with ROS, Gazebo Past participation in simulation challenges What’s in it for you: Flexible Hours, Health Benefits, Parental Leave, Vacation, Equity, Community Days (paid), Half-Day Birthdays, Passionate and Dedicated Teams Curious to know more about the culture at Clearpath & OTTO, check out: https://clearpathrobotics.com/blog/category/blog/culture/ Come join us if you feel like our values resonate with you, and if you are interested in being a part of making industrial workplaces safer and revolutionizing automation. At Clearpath, we are committed to building and supporting a culture of diversity, inclusion, and accessibility. We hire the best talent regardless of race, color, creed, national origin, ancestry, disability, marital status, age, veteran status, six, sixual orientation, gender identity, and expression. If you require special accommodation to complete any portion of the application or interview process, please contact 1-800-301-3863.
  16. Hello, Storing this information in a Data Table and using a Search step might be the best approach. The Search expression will probably need to look for a specific Group and also check that the MaterialName is in stock. If the Table is listed in priority order, you will need to just Search forward until the criteria is met. You will either need to execute the Search step a few times and have a variable for the Group letter, or just have three separate Search steps specifying the exact group. Liz
  17. Status label can capture the offshift time with expression - ResourceState.TotalTime(4) But same can't be assigned to a State variable of type Real through the Process. Please help.
  18. I would recommend using a Data Table. One column could have all your entity types defined. The next column could be a Tally Statistic Element Reference Property. This column would match up the Tally statistic you want to correspond with the Entity Type. You could choose to auto-create these Tally Statistics from the Data Table. If you change the Tally Statistic Property's column Reference Type property from 'Reference' to 'Create', this will make the Tally Statistics for you. I recommend the Help page "Table-Based Elements (Auto-Create)" in Simio for more information. If your Entity Instances noted in the Data Table are unique, no duplicates, you can set that column as a Key. With that column as a Key, you could use just the Tally step and use the RowForKey expression. RowForKey will allow a key input to search for in that column. If the model entity is driving the process, you could use an expression like this for the Tally Statistic Name 'Table1[Table1.EntityInstanceProperty1.RowForKey(ModelEntityReference)].TallyStatisticProperty'. Since it seems this process will be on the OnRunEnding, it will not have a reference to a specific entity, so you will most likely need a Search step to find the entities still in the system. I would set the Search step to find Infinite things and let each entity reference exit on the found branch. If the EntityInstanceProperty column in your Data Table has the Auto-set Table Row Reference property to 'True', the entities will already know the row reference and your Tally step Tally Statistic Name property could be 'Table1.TallyStatisticProperty'.
  19. Hi Everyone, I have 100s of different products in a warehouse and I want to get statistics for all of them such as distance travelled, number entered and exited. So I created the entity instances for each product automatically through data table. The entity.totaldistancetraveled function doesnt increase since the entity doesnt moveby itself but moved by forklift instead. So I have created a state variable called "distanceonforklift" and increased by the difference between the forklift total distance travelled value when entity exits and enters to forklift. I have also created a function called "distancefunction" on the entity and equated it to "distanceonforklift" state variable of the entity. For the return type of function I have chosen "number" and set the unit to "length". I validated that both distance state variable and function is calculated correctly in the facility window. However I cannot output the result of this state variable on the model results screen. I used the following expression under model outputstatistic but it didnt work. "ProductA.DistanceFunction". That expression gives me 0 value although there are some entities of this product which enters and exits the system. How can I see the average total distance travelled on forklift for the whole population of Product A?
  20. Hi Jason, I recommend using a Notify step with the expression Token.AssociatedObject.Name prior to your Assign step. This will read out the associated object that is executing the process with your Assign step. It might be that the Entity is not the object executing that process. If your entity is not executing the process, you might want to find another process trigger or Search for the entity in the population. If its a process that could be triggered by an entity, or another object, say a Worker, you could start your process with a Decide step that filters out the non-ModelEntity objects. This could be as simple as checking 'Is.ModelEntity' with the Decide step. Happy modeling, Liz
  21. Other questions: What expression would tell the worker to ALWAYS transport two entities? I want my workers to finish all server runs before going on lunch break or end of shift. Entities will never be unattended nor will workers be interrupted to restart server time later. What's a good solution for that?
  22. since exclusion property checks the expression at the start of the simulation run to determine if this step should be excluded from the run my suggestion does not work. simply omit this suggestion:( and thus decide step before the tally step best suits your purpose.
  23. Thanks, but I tried with a decide step before the tally that verify State>0. And it works perfectly. How ever, Where comes from the .lastrecordedvalue? Because it didn't appear in the expression tab but the Simio's model accept the expression and it surprised me pleasantly
  24. I think setting the exclusion expression property of the tally1 step as TallyStatistic1.Lastrecordedvalue == 0 will work for u?.
×
×
  • Create New...