Month: October 2024
Onboard devices docs name incorrect ?
Hi All,
Today I try to onboarding the Mac to Microsoft Defender, and following https://learn.microsoft.com/en-us/defender-business/mdb-onboard-devices?tabs=mac#intune-for-mac
but find the CLI is
/usr/bin/unzip WindowsDefenderATPOnboardingPackage.zip
&& /bin/chmod +x MicrosoftDefenderATPOnboardingMacOs.sh
&& /bin/bash -c MicrosoftDefenderATPOnboardingMacOs.sh
and the onboarding package zip file name is GatewayWindowsDefenderATPOnboardingPackage.zip
in Line 1 Doesn’t seem to be the same as the file name.
in Line 3 This command is not recognized
I tried opening it directly GatewayWindowsDefenderATPOnboardingPackage.zip and get MicrosoftDefenderATPOnboardingMacOs.sh Then the device has onboarded
may i know Is this a documentation wrong / not update or ?
Hi All, Today I try to onboarding the Mac to Microsoft Defender, and following https://learn.microsoft.com/en-us/defender-business/mdb-onboard-devices?tabs=mac#intune-for-mac but find the CLI is/usr/bin/unzip WindowsDefenderATPOnboardingPackage.zip
&& /bin/chmod +x MicrosoftDefenderATPOnboardingMacOs.sh
&& /bin/bash -c MicrosoftDefenderATPOnboardingMacOs.sh and the onboarding package zip file name is GatewayWindowsDefenderATPOnboardingPackage.zip in Line 1 Doesn’t seem to be the same as the file name.in Line 3 This command is not recognizedI tried opening it directly GatewayWindowsDefenderATPOnboardingPackage.zip and get MicrosoftDefenderATPOnboardingMacOs.sh Then the device has onboarded may i know Is this a documentation wrong / not update or ? Read More
How can I restrict or allow specific team members to edit certain fields in MS Project Professional
Hello Everyone,
I am using MS Project Professional Desktop and would like to restrict team members from editing certain fields. For example, if I add four fields—1. Planned Start Date, 2. Planned Finish Date, 3. Actual Start Date, and 4. Actual Finish Date—I want the team to enter the actual dates, but they should not be able to modify the planned start and finish dates. Could you guide me on how to set this up in MS Project?
Thank you!
Hello Everyone,I am using MS Project Professional Desktop and would like to restrict team members from editing certain fields. For example, if I add four fields—1. Planned Start Date, 2. Planned Finish Date, 3. Actual Start Date, and 4. Actual Finish Date—I want the team to enter the actual dates, but they should not be able to modify the planned start and finish dates. Could you guide me on how to set this up in MS Project?Thank you! Read More
How to Force Users to Sign in Weekly
Revoke Access for User Accounts at a Good Time
A recent question in the Facebook Office 365 Technical Discussions group covered the situation where a conditional access policy imposes a 7-day sign-in frequency. I’m not a great fan of short sign in frequencies because I think the constant nagging for authentication is very distracting for users. If you use a strong authentication method with multifactor authentication, like the Microsoft authenticator app, a more relaxed regime is often justified. Equally so, the security requirements of some organization mandate a higher security profile with more frequent authentication.
In this instance, a strong authentication method is in use (Yubiko FIDO2 keys). The problem is that the week-long sign-in period finishes at different points during the week and can disrupt users at important points in their work. My favorite example is when the CEO is preparing to join a critical Teams call with some investors and is suddenly prompted to reauthenticate. Computer systems have no mercy or appreciation of when people don’t need to be disturbed. All that Entra ID knows is that the 7-day period is up, and the user must reauthenticate.
The ask is therefore how to force reauthentication at a suitable point during the working week, like early on Monday morning. If everyone starts the week off by authenticating, Entra ID won’t bother them until the following Monday.
Azure Automation Runbook to Revoke User Sessions
After thinking about the problem, the simplest solution seems to be to revoke user tokens early every Monday morning. The easiest way to do this is with a PowerShell script that runs as a scheduled task. My preference is always to use Azure Automation for scheduled tasks. Many people like to use the Windows Scheduler to run PowerShell scripts, but I think that Azure Automation is a much better and more secure option.
The outline of the solution is as follows: The PowerShell code to revoke access from user accounts executes as a runbook belonging to an Azure Automation account. To process runbooks, you need an Azure automation account associated with an Azure account with a paid-for subscription.
The code uses cmdlets from the Microsoft Graph PowerShell. The modules containing the cmdlets must be loaded as resources in the automation account. The modules are:
Microsoft.Graph.Authentication
Microsoft.Graph.Users
Microsoft.Graph.Users.Actions
Microsoft.Graph.Groups
The automation account uses a managed identity to connect to the Microsoft Graph. To process the user accounts, the automation account must have consent to use the Users.ReadWrite.All and User.RevokeSessions.All application permissions. This article explains how to assign permissions to automation accounts. The automation account must also hold at least the User administrator role.
After authenticating, the runbook finds the set of target accounts to process. If access is to be revoked for every account, the Get-MgUser cmdlet can retrieve the accounts. To avoid the potential of locking everyone out of the tenant, I use a group to identify the set of accounts (a dynamic group would be a good choice), so the Get-MgGroupMember cmdlet fetches the set of accounts to process.
Revoking User Sessions
For each account, the Revoke-MgUserSignInSession cmdlet revokes access and forces the user to reauthenticate. Here’s the code:
Connect-MgGraph -Identity -NoWelcome
# Get users to process
[array]$Users = Get-MgGroupMember -GroupId bdae941b-389d-4972-a78a-9ef2b7dc4c7a -All
ForEach ($User in $Users) {
$RevokeStatus = Revoke-MgUserSignInSession -UserId $User.Id
If ($RevokeStatus.Value -eq $true) {
Write-Output (“Access revoked for user {0}” -f $User.additionalProperties.displayName)
}
}
Test the code in Azure automation to make sure that everything works (Figure 1). Also make sure that the effect of revoking sessions for user accounts has the desired effect.
Scheduling the Revoke Runbook
When the code runs as expected, publish the runbook and link it to a schedule in the automation account. If an appropriate schedule isn’t available, you’ll need to create one. Figure 2 shows a schedule to execute linked runbooks at 7:00 every Monday.
Everything Worked as Expected
Everything worked as expected for me. Entra ID terminated user sessions to force the users to reauthenticate. The scheduled job made sure that the process happened every Monday morning to allow people to work for the entire week without Entra ID demanding their credentials. If you’re going to look for frequent reauthentication, I guess you should minimize the pain.
Insight like this doesn’t come easily. You’ve got to know the technology and understand how to look behind the scenes. Benefit from the knowledge and experience of the Office 365 for IT Pros team by subscribing to the best eBook covering Office 365 and the wider Microsoft 365 ecosystem.
Not able to add Managed Property to Search & Filter Web Part using PNP Modern Search
Hi Sharepoint Community,
We are trying to add managed property which holds Managed Metadata Column and it has been mapped to RefinableString predefined property still it is not seen in Search & Filter Web Part.
We need to implement this functionality as Search & Filter will enhance the look and feel and usability of the Sharepoint Page.
Hi Sharepoint Community, We are trying to add managed property which holds Managed Metadata Column and it has been mapped to RefinableString predefined property still it is not seen in Search & Filter Web Part.We need to implement this functionality as Search & Filter will enhance the look and feel and usability of the Sharepoint Page. Read More
About “Reload app” on Desktop Teams and “Refresh” on Teams mobile.
Dear Sir
I have an issue about Teams Tab application, which is Tab web hosting from AWS server.
On Desktop Teams app, when I click “Reload app” button in “…” more button at the top-right side, my web hosting is working normally.
However, If I click “Refresh” in Teams mobile, I works differently.
AWS static hosting server has strict rule.
If the URL is different, AWS shows “access denied” like below.
Can you advise why its’ differently worked ?
I tried to test this many times with cache clean.
Definitely it shows different result.
Many thanks
BH
Dear SirI have an issue about Teams Tab application, which is Tab web hosting from AWS server.On Desktop Teams app, when I click “Reload app” button in “…” more button at the top-right side, my web hosting is working normally.However, If I click “Refresh” in Teams mobile, I works differently.AWS static hosting server has strict rule. If the URL is different, AWS shows “access denied” like below.Can you advise why its’ differently worked ? I tried to test this many times with cache clean. Definitely it shows different result. Many thanksBH Read More
The device OS version displayed in the Microsoft Defender portal is incorrect.
The device has been updated to Windows 10, but after a week, it still shows Windows 7 in the Microsoft Defender portal. I have already used the “Report device inaccuracy” feature, but it still shows as Windows 7.
What could be the possible reasons for the incorrect device information detected on the portal?
Is it related to the on boarding of MDE?
The device has been updated to Windows 10, but after a week, it still shows Windows 7 in the Microsoft Defender portal. I have already used the “Report device inaccuracy” feature, but it still shows as Windows 7.What could be the possible reasons for the incorrect device information detected on the portal?Is it related to the on boarding of MDE? Read More
Alternative file format
The excel format 2003 xml Spreadsheet is no longer supported in my company, can any one suggest what could be an alternative file format I can choose to save the file to get the same file type options as per new M365 standard
The excel format 2003 xml Spreadsheet is no longer supported in my company, can any one suggest what could be an alternative file format I can choose to save the file to get the same file type options as per new M365 standard Read More
Why Teams is slowing down my Mac?
Microsoft Teams is so bloated that it causes even M1 Macs to slow down to crawl. It drains your battery and affects your Macbook’s performance. A few reasons why Microsoft Teams is slowing down your Mac:
High Resource Usage
Teams are resource-intensive due to its screen-sharing and video call feature. If it slows your Mac down, it must be due to the CPU and memory Teams are using to run the program.
To run your Mac smoothly, clean your Macbook regularly to ensure memory storage is not filled to the neck.
Outdated Software
There is a chance your Teams version is not compatible or outdated with the macOS. This incompatibility leads to performance issues.
Install an updated version of the Teams app to run it smoothly.
Slow Network
Microsoft Teams’ performance is affected by the speed of the internet more than you can imagine.
Check your internet connection to ensure everything runs smoothly. If you can, switch to a wired connection to ensure your Macbook performs optimally.
You can also run Microsoft Teams on your Chrome and Edge to make the most out of your features. Firefox and Safari miss out on most features, but you can still use it on them. If your Macbook is still not performing well, contact Expert MacBook repair technician for more information.
Microsoft Teams is so bloated that it causes even M1 Macs to slow down to crawl. It drains your battery and affects your Macbook’s performance. A few reasons why Microsoft Teams is slowing down your Mac: High Resource UsageTeams are resource-intensive due to its screen-sharing and video call feature. If it slows your Mac down, it must be due to the CPU and memory Teams are using to run the program. To run your Mac smoothly, clean your Macbook regularly to ensure memory storage is not filled to the neck. Outdated Software There is a chance your Teams version is not compatible or outdated with the macOS. This incompatibility leads to performance issues. Install an updated version of the Teams app to run it smoothly. Slow NetworkMicrosoft Teams’ performance is affected by the speed of the internet more than you can imagine. Check your internet connection to ensure everything runs smoothly. If you can, switch to a wired connection to ensure your Macbook performs optimally. You can also run Microsoft Teams on your Chrome and Edge to make the most out of your features. Firefox and Safari miss out on most features, but you can still use it on them. If your Macbook is still not performing well, contact Expert MacBook repair technician for more information. Read More
एयरटेल पेमेंट बैंक कस्टमर केयर नंबर , 9I42595497
एयरटेल पेमेंट बैंक से पैसे कट जाए तो क्या करें?
एयरटेल पेमेंट बैंक से पैसे कट जाए तो क्या करें?
ग्राहक सहायता टीम (09I42595497} तक पहुंच सकते हैं और जितनी जल्दी हो सके अपनी शिकायत दर्ज कर सकते हैं।
एयरटेल पेमेंट बैंक से पैसे कट जाए तो क्या करें?एयरटेल पेमेंट बैंक से पैसे कट जाए तो क्या करें?ग्राहक सहायता टीम (09I42595497} तक पहुंच सकते हैं और जितनी जल्दी हो सके अपनी शिकायत दर्ज कर सकते हैं। Read More
Build Intelligent Apps Code-First with Prompty and Azure AI
Building Generative AI applications can feel daunting for traditional app developers. What does the end-to-end application development cycle look like? What models should I use, and where do I find them? What tools should I be using for build, test, and deploy, my AI application? This blog post gives you a sneak peek at a week-long series of posts that were just published, that give you a hands-on journey through the process. Let’s learn more!
Kicking Off Azure AI Week!
This week we published a 5-part blog on the Build Intelligent Apps initiative’s #30DaysOfIA series. Our focus was application developers who wanted to build a custom copilot code-first on Azure AI, allowing them to have more control over various decisions made in the end-to-end workflow for generative AI applications. We did this by walking through two core samples (Contoso Chat and Contoso Creative Writer) from prompt to production. Along the way, we shared insights into key tasks and the developer tools to simplify them.
In this blog post, we’ll briefly introduce the two applications and give you an overview of what the series covers, with links to each post for deeper dives. Ready? Let’s Go!
1. What are we building?
Our first application is Contoso Chat, a customer service chatbot that answers user questions about a retailer’s products, using the Retrieval Augmented Generation pattern (RAG) to ground responses in both the product catalog and customer purchase history.
Our second application is Contoso Creative Writer, a content publishing assistant that uses the Multi-Agent Conversation pattern to coordinate and execute multiple tasks autonomously, on behalf of the user.
2. How are we building it?
The figure below shows the AI Application Architecture for the Contoso Chat retail copilot. User requests are received through an endpoint hosted in Azure Container Apps, then processed using a RAG-based workflow that uses Azure AI Search (product index) and Azure Cosmos DB (customer database) with Azure OpenAI Services (model deployment) to process user requests and return the response back to the UI.
The next figure shows the AI Application Architecture for the Contoso Creative Writer multi-agent copilot which follows a similar user interaction flow – except that processing now requires coordination across multiple agentic AI tasks before final output is generated.
3. What does the developer workflow look like?
We’re glad you asked! If you’ve explored generative AI application development before, you’re probably familiar with this GenAIOps application lifecycle which breaks down the developer workflow into 3 stages: ideation (build and validate a prototype), augmentation (iterate & evaluate with larger input datasets), operationalization (deploy to production).
In this blog series, we map this lifecycle to a very clear developer workflow as shown below, giving you an intuitive sense for the task to perform, and the tool to use to accomplish it, at each stage.
Get started reading the posts, in this order:
Kicking Off Azure AI Week – Learn about the app scenarios, architecture & lifecycle.
Provision with AZD – Provision Azure infrastructure & setup your dev environment.
Ideate with Prompty – Build an app prototype using Prompty assets and tooling.
Evaluate with AI – Build custom evaluators and use AI-assisted evaluation flows.
Deploy with ACA – Create a FastAPI server & deploy with Azure Container Apps.
Here’s a visual summary of what you’ll learn:
If you found this series valuable, please star the repos to help others discover them!
Contoso Chat – custom retail copilot with Retrieval Augmented Generation
Contoso Creative Writer – custom content copilot with Multi-Agent Collaboration
5. Next Steps
Want to get hands-on experience building these copilots? Take these actions today!
Register for Microsoft AI Tour – join an instructor-led workshop session.
Register for Microsoft Ignite – look for related lab & breakout sessions on Azure AI.
Browse the AI Templates Collection – explore samples for more scenarios.
Have a scenario you want to build a custom copilot for? Have questions about Prompty, Azure AI Studio, or the GenAI Ops workflow? Want to provide feedback on the samples? Leave us a comment here and let us know! Happy learning!
Microsoft Tech Community – Latest Blogs –Read More
date format in chat history
Hello,
I live in a country where the date format is DMY. All my computer settings are New Zealand. All my browser settings and regional settings and date format settings are for New Zealand. My M365 account settings are for New Zealand.
Despite all this, the copilot chat history shows the date stamps in the order mm/dd when it displays the chat history in Teams or the Work chat history in Edge. When I switch to the Web chat history, the date format is dd Month yyyy, which is much better.
I find the mm/dd order confusing. What can I do to have it display in my preferred date format?
Hello,
I live in a country where the date format is DMY. All my computer settings are New Zealand. All my browser settings and regional settings and date format settings are for New Zealand. My M365 account settings are for New Zealand.
Despite all this, the copilot chat history shows the date stamps in the order mm/dd when it displays the chat history in Teams or the Work chat history in Edge. When I switch to the Web chat history, the date format is dd Month yyyy, which is much better.
I find the mm/dd order confusing. What can I do to have it display in my preferred date format?
Is there any possible way to achieve Auditing and encryption in Dataverse for teams ?
Is there any possible way to achieve Auditing and encryption in Dataverse for teams?
Is there any possible way to achieve Auditing and encryption in Dataverse for teams? Read More
Database Engine could not find the object ‘MSysDb’
I am having issues Microsoft Database Engine could not find the object ‘MSysDb’
please advice How to recover data
I am having issues Microsoft Database Engine could not find the object ‘MSysDb’please advice How to recover data Read More
Function Help
Hello,
I am trying to put together a spreadsheet that allows me to compare members of our team. We work in different “Sub” teams as you will. Just because you work on one team, does not mean your will not also be a part of another team. We encourage people to work on three different sub teams to allow them to work with others and allow for more free thinking ideas and strategies. I would like to be able to compare our team and see how well others work on different teams and try to objectively identify who really excels working with certain people and who does not.
So my problem is when I try and use AVERAGEIFS or STDEV.S it only pulls the first available value. As the team and year changes I would Expect the average and the standard deviation to change as well. I have attached a spread sheet with my problem. Any clues with how to fix it would be greatly appreciated.
Thank You,
Tripp
Hello, I am trying to put together a spreadsheet that allows me to compare members of our team. We work in different “Sub” teams as you will. Just because you work on one team, does not mean your will not also be a part of another team. We encourage people to work on three different sub teams to allow them to work with others and allow for more free thinking ideas and strategies. I would like to be able to compare our team and see how well others work on different teams and try to objectively identify who really excels working with certain people and who does not. So my problem is when I try and use AVERAGEIFS or STDEV.S it only pulls the first available value. As the team and year changes I would Expect the average and the standard deviation to change as well. I have attached a spread sheet with my problem. Any clues with how to fix it would be greatly appreciated. Thank You,Tripp Read More
Destination cell displays either a value or 0.0
Source cell options, either a Field Technician entered value or blank
Source cell is on Sheet “G1 Data Entry” Cell E20
I want that value to be displayed on a Certification Sheet “G1 Cert” Cell AF100.
I currently have on Certification Sheet “G1 Cert” in Cell AF100
=’G1 Data Entry’!E20
“G1 Cert” in cell AF100 displays the value correctly, but if Sheet “G1 Data Entry” Cell E20 is blank it displays 0.0
How do I get the destination cell Sheet “G1 Cert” Cell AF100 to be blank also if the source cell is in fact blank? I cannot simply just hide the zero values on my destination sheet as I have other conditions where I need those zero’s to in fact be displayed.
Source cell options, either a Field Technician entered value or blankSource cell is on Sheet “G1 Data Entry” Cell E20I want that value to be displayed on a Certification Sheet “G1 Cert” Cell AF100.I currently have on Certification Sheet “G1 Cert” in Cell AF100=’G1 Data Entry’!E20 “G1 Cert” in cell AF100 displays the value correctly, but if Sheet “G1 Data Entry” Cell E20 is blank it displays 0.0 How do I get the destination cell Sheet “G1 Cert” Cell AF100 to be blank also if the source cell is in fact blank? I cannot simply just hide the zero values on my destination sheet as I have other conditions where I need those zero’s to in fact be displayed. Read More
Overcoming Asymmetrical Routing in Azure Virtual WAN: A Collaborative Journey
Overcoming Asymmetrical Routing in Azure Virtual WAN: A Collaborative Journey
In the rapidly evolving landscape of cloud networking, professionals often encounter complex challenges that demand innovative solutions. This blog post delves into a recent scenario involving Azure Virtual WAN (VWAN), where a team embarked on a collaborative journey to address asymmetrical routing issues. This case study not only highlights the technical intricacies but also underscores the importance of collaboration and knowledge sharing in the tech community.
The Challenge:
The core issue revolved around asymmetrical routing within an Azure VWAN architecture, which included two hubs located in different regions. The primary goal was to ensure seamless connectivity between a Palo Alto NGFW in one hub and Panorama in another, without disrupting the existing VPN default routes. The asymmetry in routing was particularly problematic for traffic intended to reach Panorama from the NGFW, as the return traffic defaulted through the VPN, deviating from the desired path.
The configuration issue with the firewall is acknowledged as a known issue. The only mitigation provided is documented in Microsoft’s official documentation. https://learn.microsoft.com/en-us/azure/virtual-wan/whats-new#known-issues
Possible solutions:
Exposing the Panorama to the public IP and creating a relay subnet for routing / advertising summary route from NCUS to SCUS for NCUS subnet (10.193.0.0/16)
Microsoft Tech Community – Latest Blogs –Read More
Securely connect 02 Azure Virtual Networks in different azure tenant
We are in the process of deploying Microsoft Sentinel and there is a requirement of sending logs to Microsoft Sentinel Securely without traversing public internet (traffic must always pass via Azure backbone). To meet this we have deployed Site-to-site VPN along with Azure ARC and Azure monitor Private Endpoints to use private link.
However for one such deployment the syslog collectors are not hosted in on-premises, instead in an another azure subscription, What we need to know is what will be the best possible way to connect two azure Vnets (one where log collectors are hosted and another one where the sentinel instance is deployed) to send the logs securely and also not traversing public internet instead traffic must remain in azure backbone. I explored Vnet peering with private link connection but could not find any reference articles for this. Any help and suggestion will be highly appreciated.
We are in the process of deploying Microsoft Sentinel and there is a requirement of sending logs to Microsoft Sentinel Securely without traversing public internet (traffic must always pass via Azure backbone). To meet this we have deployed Site-to-site VPN along with Azure ARC and Azure monitor Private Endpoints to use private link.However for one such deployment the syslog collectors are not hosted in on-premises, instead in an another azure subscription, What we need to know is what will be the best possible way to connect two azure Vnets (one where log collectors are hosted and another one where the sentinel instance is deployed) to send the logs securely and also not traversing public internet instead traffic must remain in azure backbone. I explored Vnet peering with private link connection but could not find any reference articles for this. Any help and suggestion will be highly appreciated. Read More
I am developing an AI that can play TicTacToe using Reinforcement Q learning
So I recenly took an udemy course part of which reinforcement learning was included as part of a broad AI course. So based on what I learnt about Q Learning(a type of reinforcement learning, under stereotypical Artificial Intelligence) , even though the implementation was not discussed in any full details, I had to go through a provided book to understand how it’s implemented in practice. And YouTube was not helping matters.
I need any additional opinions I can get from you, thanks.
Now in order for me to apply Q Learning to TicTacToe, I have to make the AI (Agent)always play X (makes the first move) for simplicity in my AI software development.
Q Learning algorithm is based on Bellmans Equation. Literally it’s about rewarding Favourable actions taken at different states and punishing unfavorable actions taken at different states also. Rewarding and punishing are one and the same number(variable) in the Bellmans equation. There is also the learning rate and discount factors, which are both variables too in the Bellmans equation.
For every action the agent takes at every state it always get a tiny reward (positive or negative), then after winning or losing it gets a much larger reward (positive or negative).
So how does the agent remembers all it has learnt, by looking at the q table,and checking for the action with the highest Q value. These Q values are updated by Bellmans equation whether positively or negatively.
Now the first challenge is I have to pair all the possible valid board configurations (states space) to all the possible valid actions that can be taken for each states in a Q table dictionary, and map all the pairs to Q values of 0 (for initialization). I will write a Python code that will generate this mapping and remove all impossible states (where X is greater than 0 by more than 1 is definitely invalid). Also make Q values for actions where ever is occupied by either X or O as – 1.0 to prevent agent from making such moves.
I will make 4 different players in different classes of the game software who would play with the agent at different stages of it’s learning automatically to update the Q values of every actions taken by agent in each game state, instead of waiting for the final result before updating Q value(my initial mistake when I was still learning about Q Learning) .
Below is for any of the 5 agents (Balanced, Quick Myopic, Quick Overplanner, Slow Myopic and Slow Overplanner) selected at the start of the training games. These agents have different combinations of hyperparameters (learning rate and discount factor)
To train the agent I will make it play against 4 heuristics players (players programed to play only in a certain way) all using different playing strategies.
For starting stage, agent will play with random player 1 for 2000 iterations of games and update it’s Q values for all the state action pairs it encountered.
Then for the next 2000 iterations, agent will play with a player 2 that always favor the center if available for its first move otherwise plays at any corner piece, otherwise plays any random available space.
Then for the next 2000 iters, agent will play against a player 3 that plays randomly until Agent is about to make a winning move, then blocks it. Not really trying to move, just blocking agent winning moves.
Then for the next 2000 iters, agent will play with a player 4 that tries to complete a line as soon as possible, by playing in corners that are impossible for agent to block, that is playing in triangular corners that leads to a definite win if agent doesn’t win on time.
Now create separate classes (.NET MAUI) for these four players that would train a selected agent chosen with options to pick the desired iterations of games for the training of the agent with that player.
For the reward system, +1 reward on completing a line. – 1 for allowing opponent win and not blocking it. +0. 5 for playing a position that can lead to a win in its next move. – 0.5 by playing in a position that cannot lead to a win in its next move (that is a move that doesn’t form a straight line of three with an empty cell anywhere in the line) and – 0.5 for playing along a line that is played by an opponent. This is the reward system rules.
So bells formula would be used for updating the Q value for every action taken for every state in the Q Table already defined in their respective Q Table json file for the particular agent being trained. We would use both learning rate, discount factor and reward from reward system for every action taken at every state.
Below is the link to the Q table (the brain of the AI);
https://www.kaggle.com/datasets/adedapoadeniran/tictactoe-q-learning-table
And below is the link to the code that generated the Q table.
https://www.kaggle.com/code/adedapoadeniran/reinforcement-learning-for-tictactoe-ai/
Thanks for your attention.
This was really mentally tasking to come up with and figure out.
So I recenly took an udemy course part of which reinforcement learning was included as part of a broad AI course. So based on what I learnt about Q Learning(a type of reinforcement learning, under stereotypical Artificial Intelligence) , even though the implementation was not discussed in any full details, I had to go through a provided book to understand how it’s implemented in practice. And YouTube was not helping matters. I need any additional opinions I can get from you, thanks. Now in order for me to apply Q Learning to TicTacToe, I have to make the AI (Agent)always play X (makes the first move) for simplicity in my AI software development.Q Learning algorithm is based on Bellmans Equation. Literally it’s about rewarding Favourable actions taken at different states and punishing unfavorable actions taken at different states also. Rewarding and punishing are one and the same number(variable) in the Bellmans equation. There is also the learning rate and discount factors, which are both variables too in the Bellmans equation.For every action the agent takes at every state it always get a tiny reward (positive or negative), then after winning or losing it gets a much larger reward (positive or negative).So how does the agent remembers all it has learnt, by looking at the q table,and checking for the action with the highest Q value. These Q values are updated by Bellmans equation whether positively or negatively. Now the first challenge is I have to pair all the possible valid board configurations (states space) to all the possible valid actions that can be taken for each states in a Q table dictionary, and map all the pairs to Q values of 0 (for initialization). I will write a Python code that will generate this mapping and remove all impossible states (where X is greater than 0 by more than 1 is definitely invalid). Also make Q values for actions where ever is occupied by either X or O as – 1.0 to prevent agent from making such moves. I will make 4 different players in different classes of the game software who would play with the agent at different stages of it’s learning automatically to update the Q values of every actions taken by agent in each game state, instead of waiting for the final result before updating Q value(my initial mistake when I was still learning about Q Learning) . Below is for any of the 5 agents (Balanced, Quick Myopic, Quick Overplanner, Slow Myopic and Slow Overplanner) selected at the start of the training games. These agents have different combinations of hyperparameters (learning rate and discount factor)To train the agent I will make it play against 4 heuristics players (players programed to play only in a certain way) all using different playing strategies.For starting stage, agent will play with random player 1 for 2000 iterations of games and update it’s Q values for all the state action pairs it encountered.Then for the next 2000 iterations, agent will play with a player 2 that always favor the center if available for its first move otherwise plays at any corner piece, otherwise plays any random available space.Then for the next 2000 iters, agent will play against a player 3 that plays randomly until Agent is about to make a winning move, then blocks it. Not really trying to move, just blocking agent winning moves.Then for the next 2000 iters, agent will play with a player 4 that tries to complete a line as soon as possible, by playing in corners that are impossible for agent to block, that is playing in triangular corners that leads to a definite win if agent doesn’t win on time. Now create separate classes (.NET MAUI) for these four players that would train a selected agent chosen with options to pick the desired iterations of games for the training of the agent with that player.For the reward system, +1 reward on completing a line. – 1 for allowing opponent win and not blocking it. +0. 5 for playing a position that can lead to a win in its next move. – 0.5 by playing in a position that cannot lead to a win in its next move (that is a move that doesn’t form a straight line of three with an empty cell anywhere in the line) and – 0.5 for playing along a line that is played by an opponent. This is the reward system rules. So bells formula would be used for updating the Q value for every action taken for every state in the Q Table already defined in their respective Q Table json file for the particular agent being trained. We would use both learning rate, discount factor and reward from reward system for every action taken at every state. Below is the link to the Q table (the brain of the AI);https://www.kaggle.com/datasets/adedapoadeniran/tictactoe-q-learning-tableAnd below is the link to the code that generated the Q table.https://www.kaggle.com/code/adedapoadeniran/reinforcement-learning-for-tictactoe-ai/Thanks for your attention.This was really mentally tasking to come up with and figure out. Read More
Schedule a meeting using copilot in outlook
We need to explore how to build a Copilot for scheduling meetings. This Copilot should automatically suggest meeting times, check availability across company calendars, and manage invites. Our users already have Copilot licenses. Since we’re not experts in Copilot, we need to clarify if this functionality is available in Copilot for Outlook in the US. If it is, how can we use and customize these features? If not, what would be the approach to build something similar using the Copilot interface in Outlook?
We need to explore how to build a Copilot for scheduling meetings. This Copilot should automatically suggest meeting times, check availability across company calendars, and manage invites. Our users already have Copilot licenses. Since we’re not experts in Copilot, we need to clarify if this functionality is available in Copilot for Outlook in the US. If it is, how can we use and customize these features? If not, what would be the approach to build something similar using the Copilot interface in Outlook? Read More